def pytest_runtest_teardown(item): for registry in primary_registries: # Clear Registry to have a stable reference for indexed suffixes of default names clear_registry(registry) from psyneulink.core import llvm as pnlvm pnlvm.cleanup()
def clear_registry(): # Clear Registry to have a stable reference for indexed suffixes of default names from psyneulink.components.component import DeferredInitRegistry from psyneulink.components.system import SystemRegistry from psyneulink.components.process import ProcessRegistry from psyneulink.components.mechanisms.mechanism import MechanismRegistry from psyneulink.components.projections.projection import ProjectionRegistry pnl.clear_registry(DeferredInitRegistry) pnl.clear_registry(SystemRegistry) pnl.clear_registry(ProcessRegistry) pnl.clear_registry(MechanismRegistry) pnl.clear_registry(ProjectionRegistry)
def main(): reconstructed_identifer = "reconstructed" for example in glob.glob(os.path.join(os.path.dirname(__file__), "*.py")): if reconstructed_identifer in example or example == __file__: continue pnl.clear_registry() border = "=" * len(example) print(f"{border}\n{example}\n{border}") base_fname = example.replace(".py", "") script_globals = runpy.run_path(example) compositions = list( filter(lambda v: isinstance(v, pnl.Composition), script_globals.values())) nonnested_comps = [] for x in compositions: for y in compositions: if x in y.nodes: break else: nonnested_comps.append(x) try: comp = nonnested_comps[0] except IndexError: continue json_summary = pnl.generate_json(comp) with open(f"{base_fname}.json", "w") as outfi: outfi.write(json_summary) outfi.write("\n") reconstructed_fname = f"{base_fname}.{reconstructed_identifer}.py" with open(reconstructed_fname, "w") as outfi: outfi.write(pnl.generate_script_from_json(json_summary)) outfi.write("\n") subprocess.run(["black", reconstructed_fname]) subprocess.run(["python", reconstructed_fname])
def test_actual_scripts(self, filepath): src_str = open(filepath, 'r').read() dg = ast_parse.DependencyGraph(src_str, psyneulink) namespace = {} dg.execute_ast(namespace) psyneulink.clear_registry(psyneulink.MechanismRegistry) psyneulink.clear_registry(psyneulink.CompositionRegistry) psyneulink.clear_registry(psyneulink.FunctionRegistry) fresh_namespace = {} exec(dg.src_executed, fresh_namespace) for cat in psyneulink.CompositionRegistry: for comp_name in psyneulink.CompositionRegistry[cat][1]: psyneulink.CompositionRegistry[cat][1][comp_name].show_graph(output_fmt='gv')
def pytest_runtest_teardown(item): for registry in primary_registries: # Clear Registry to have a stable reference for indexed suffixes of default names clear_registry(registry) pnlvm.cleanup()
def pytest_runtest_teardown(item): from psyneulink import clear_registry from psyneulink.components.functions.function import FunctionRegistry from psyneulink.components.mechanisms.adaptive.control.controlmechanism import ControlMechanismRegistry from psyneulink.components.mechanisms.adaptive.gating.gatingmechanism import GatingMechanismRegistry from psyneulink.components.mechanisms.mechanism import MechanismRegistry from psyneulink.components.projections.projection import ProjectionRegistry from psyneulink.components.states.state import StateRegistry from psyneulink.components.system import SystemRegistry from psyneulink.components.component import DeferredInitRegistry from psyneulink.components.process import ProcessRegistry from psyneulink.globals.preferences.preferenceset import PreferenceSetRegistry # Clear Registry to have a stable reference for indexed suffixes of default names clear_registry(FunctionRegistry) clear_registry(ControlMechanismRegistry) clear_registry(GatingMechanismRegistry) clear_registry(MechanismRegistry) clear_registry(ProjectionRegistry) clear_registry(StateRegistry) clear_registry(SystemRegistry) clear_registry(DeferredInitRegistry) clear_registry(ProcessRegistry) clear_registry(PreferenceSetRegistry)