Skip to content

Commit 4c74abc

Browse files
committed
[Iter 28] Code modification in utils.py
[Automated commit by Claude]
1 parent 9290105 commit 4c74abc

1 file changed

Lines changed: 32 additions & 12 deletions

File tree

src/ParticleGraph/generators/utils.py

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,22 @@ def load_pde_variant(variant_name, generators_path=None):
5353
print(f"Warning: PDE variant file not found: {file_path}")
5454
return None
5555

56-
# Dynamic import — use fully-qualified module name so PyG's inspector resolves correctly
56+
# Use standard import machinery — required for PyG's JIT propagate compilation.
5757
module_name = f"ParticleGraph.generators.PDE_Diffusiophoresis_{variant_suffix}"
58-
spec = importlib.util.spec_from_file_location(module_name, file_path)
59-
module = importlib.util.module_from_spec(spec)
60-
# Register in sys.modules BEFORE exec_module so PyG's inspector can find it
6158
import sys
62-
sys.modules[module_name] = module
63-
spec.loader.exec_module(module)
59+
import importlib
60+
importlib.invalidate_caches()
61+
62+
if module_name in sys.modules:
63+
module = importlib.reload(sys.modules[module_name])
64+
else:
65+
try:
66+
module = importlib.import_module(module_name)
67+
except ImportError:
68+
spec = importlib.util.spec_from_file_location(module_name, file_path)
69+
module = importlib.util.module_from_spec(spec)
70+
sys.modules[module_name] = module
71+
spec.loader.exec_module(module)
6472

6573
# Get the PDE class (expected name: PDE_Diffusiophoresis_{suffix})
6674
class_name = f"PDE_Diffusiophoresis_{variant_suffix}"
@@ -115,14 +123,26 @@ def load_pde_d_variant(variant_name, generators_path=None):
115123
print(f"Warning: PDE_D variant file not found: {file_path}")
116124
return None
117125

118-
# Dynamic import — use fully-qualified module name so PyG's inspector resolves correctly
126+
# Use standard import machinery — required for PyG's JIT propagate compilation.
127+
# spec_from_file_location creates an incomplete module spec that breaks PyG's
128+
# Jinja-based propagate module generation (AttributeError on _propagate).
119129
module_name = f"ParticleGraph.generators.PDE_D_{variant_suffix}"
120-
spec = importlib.util.spec_from_file_location(module_name, file_path)
121-
module = importlib.util.module_from_spec(spec)
122-
# Register in sys.modules BEFORE exec_module so PyG's inspector can find it
123130
import sys
124-
sys.modules[module_name] = module
125-
spec.loader.exec_module(module)
131+
import importlib
132+
importlib.invalidate_caches() # Handle recently-created files
133+
134+
if module_name in sys.modules:
135+
# Reload to pick up any modifications (e.g., LLM-edited files)
136+
module = importlib.reload(sys.modules[module_name])
137+
else:
138+
try:
139+
module = importlib.import_module(module_name)
140+
except ImportError:
141+
# Fallback: file-based import for files outside standard package structure
142+
spec = importlib.util.spec_from_file_location(module_name, file_path)
143+
module = importlib.util.module_from_spec(spec)
144+
sys.modules[module_name] = module
145+
spec.loader.exec_module(module)
126146

127147
# Get the PDE_D class (expected name: PDE_D_{suffix})
128148
class_name = f"PDE_D_{variant_suffix}"

0 commit comments

Comments
 (0)