code: def test_namespace_package_unloaded(self, fob):
      import tests.streamlit.watcher.test_data.namespace_package as pkg
  
      pkg_path = os.path.abspath(pkg.__path__._path[0])
  
      lsw = local_sources_watcher.LocalSourcesWatcher(SCRIPT_PATH)
      lsw.register_file_change_callback(NOOP_CALLBACK)
  
      fob.assert_called_once()
  
      with patch("sys.modules", {"pkg": pkg}):
          lsw.update_watched_modules()
  
          # Simulate a change to the child module
          lsw.on_file_changed(pkg_path)
  
          # Assert that both the parent and child are unloaded, ready for reload
          self.assertNotIn("pkg", sys.modules)
  
      del sys.modules[
          "tests.streamlit.watcher.test_data.namespace_package"
      ]
  
imports: import os
  import sys
  import unittest
  from unittest.mock import MagicMock, patch
  import tests.streamlit.watcher.test_data.dummy_module1
  import tests.streamlit.watcher.test_data.dummy_module2
  import tests.streamlit.watcher.test_data.misbehaved_module
  import tests.streamlit.watcher.test_data.nested_module_child
  import tests.streamlit.watcher.test_data.nested_module_parent
  from streamlit import config
  from streamlit.watcher import local_sources_watcher
  from streamlit.watcher.path_watcher import NoOpPathWatcher, watchdog_available
label_desc: Use image node_id 11 for calling the LocalSourcesWatcherTest obj's underlying member method code with example usage: obj.test_namespace_package_unloaded(fob) without return types