handle cleaning out _potentially_dirty_states on reload

This commit is contained in:
Masen Furer 2025-01-29 11:00:02 -08:00
parent 0aad41681c
commit c30e725715
No known key found for this signature in database
GPG Key ID: 2AE2BD5531FF94F4
2 changed files with 9 additions and 2 deletions

View File

@ -4075,12 +4075,19 @@ def reload_state_module(
state: Recursive argument for the state class to reload.
"""
# Clean out all potentially dirty states of reloaded modules.
for pd_state in tuple(state._potentially_dirty_states):
with contextlib.suppress(ValueError):
if (
state.get_root_state().get_class_substate(pd_state).__module__ == module
and module is not None
):
state._potentially_dirty_states.remove(pd_state)
for subclass in tuple(state.class_subclasses):
reload_state_module(module=module, state=subclass)
if subclass.__module__ == module and module is not None:
state.class_subclasses.remove(subclass)
state._always_dirty_substates.discard(subclass.get_name())
state._potentially_dirty_states.discard(subclass.get_name())
state._var_dependencies = {}
state._init_var_dependency_dicts()
state.get_class_substate.cache_clear()

View File

@ -488,7 +488,7 @@ def output_system_info():
dependencies.append(fnm_info)
if system == "Linux":
import distro
import distro # pyright: ignore[reportMissingImports]
os_version = distro.name(pretty=True)
else: