setupEM 0.7.3__tar.gz → 0.8.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. {setupem-0.7.3/src/setupEM.egg-info → setupem-0.8.1}/PKG-INFO +2 -2
  2. {setupem-0.7.3 → setupem-0.8.1}/pyproject.toml +1 -1
  3. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/__init__.py +1 -1
  4. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/setupEM.py +17 -0
  5. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/setupThermal.py +8 -0
  6. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/setup_common.py +757 -58
  7. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/stackupEditor.py +309 -33
  8. {setupem-0.7.3 → setupem-0.8.1/src/setupEM.egg-info}/PKG-INFO +2 -2
  9. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM.egg-info/requires.txt +1 -1
  10. {setupem-0.7.3 → setupem-0.8.1}/LICENSE +0 -0
  11. {setupem-0.7.3 → setupem-0.8.1}/README.md +0 -0
  12. {setupem-0.7.3 → setupem-0.8.1}/README_pypi.md +0 -0
  13. {setupem-0.7.3 → setupem-0.8.1}/setup.cfg +0 -0
  14. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/__main__.py +0 -0
  15. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/data/SG13G2_100um.xml +0 -0
  16. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/data/SG13G2_200um.xml +0 -0
  17. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/data/SG13G2_200um_with_parameters.xml +0 -0
  18. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/data/SG13G2_nosub.xml +0 -0
  19. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/field_viewer.py +0 -0
  20. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/gds_hierarchy_scan.py +0 -0
  21. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/layout_preview.py +0 -0
  22. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/momentum_import.py +0 -0
  23. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/palace_results.py +0 -0
  24. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/result_viewer.py +0 -0
  25. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/simplify_gds.py +0 -0
  26. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/stackup_writer.py +0 -0
  27. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM/thermal_results.py +0 -0
  28. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM.egg-info/SOURCES.txt +0 -0
  29. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM.egg-info/dependency_links.txt +0 -0
  30. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM.egg-info/entry_points.txt +0 -0
  31. {setupem-0.7.3 → setupem-0.8.1}/src/setupEM.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: setupEM
3
- Version: 0.7.3
3
+ Version: 0.8.1
4
4
  Summary: Python tool for configuration of gds2palace workflow with GUI.
5
5
  Author-email: Volker Muehlhaus <volker@muehlhaus.com>
6
6
  License-Expression: GPL-3.0-or-later
@@ -10,7 +10,7 @@ Project-URL: Changelog, https://github.com/VolkerMuehlhaus/setupEM/blob/main/doc
10
10
  Requires-Python: >=3.9
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENSE
13
- Requires-Dist: gds2palace>=0.4.3
13
+ Requires-Dist: gds2palace>=0.5.2
14
14
  Requires-Dist: gds_prepare_for_EM>=1.2.0
15
15
  Requires-Dist: PySide6
16
16
  Requires-Dist: shiboken6
@@ -12,7 +12,7 @@ authors = [
12
12
  { name = "Volker Muehlhaus", email = "volker@muehlhaus.com" }
13
13
  ]
14
14
  dependencies = [
15
- "gds2palace>=0.4.3",
15
+ "gds2palace>=0.5.2",
16
16
  "gds_prepare_for_EM>=1.2.0",
17
17
  "PySide6",
18
18
  "shiboken6",
@@ -24,4 +24,4 @@ A Python tool for EM setup using gds2palace.
24
24
  from .setupEM import main
25
25
 
26
26
  __all__ = ["main"]
27
- __version__ = "0.7.3"
27
+ __version__ = "0.8.1"
@@ -1846,6 +1846,9 @@ class CreateModelTab(CreateModelTabBase):
1846
1846
  if box.clickedButton() is install_btn:
1847
1847
  self.log_area.appendPlainText("Installing snp2le with pip ...")
1848
1848
  self._process_purpose = "install_snp2le"
1849
+ # Reset any stale working directory left over from a previous
1850
+ # run_model()/open_model_fit() call - see create_model()'s comment.
1851
+ self.process.setWorkingDirectory("")
1849
1852
  self.process.start(sys.executable, ["-m", "pip", "install", "snp2le"])
1850
1853
  else:
1851
1854
  self.log_area.appendPlainText("⚠️ snp2le is not installed. Install it with: pip install snp2le")
@@ -2122,6 +2125,14 @@ class CreateModelTab(CreateModelTabBase):
2122
2125
  # Run Python interpreter on that file
2123
2126
  python_exe = sys.executable # Use the same Python interpreter
2124
2127
  self._process_purpose = "create_mesh"
2128
+ # self.process is shared with run_model()/open_model_fit(), which set a
2129
+ # working directory of their own (a model's *_data folder) and never clear
2130
+ # it afterwards - it's sticky on the QProcess instance. If that leftover
2131
+ # directory no longer exists, Windows' CreateProcess refuses to launch
2132
+ # ANY process, even python_exe given by absolute path here, and QProcess
2133
+ # reports it as the generic FailedToStart. Reset it so this launch never
2134
+ # depends on what a previous, unrelated action last pointed it at.
2135
+ self.process.setWorkingDirectory("")
2125
2136
  self.process.start(python_exe, [pymodel_filename])
2126
2137
 
2127
2138
 
@@ -2265,6 +2276,12 @@ class CreateModelTab(CreateModelTabBase):
2265
2276
  # bash -lc: login shell so ~/.profile (where PATH additions for run_palace/combine_snp
2266
2277
  # usually live, per gds2palace's scripts/README.md) gets sourced, same as a manually
2267
2278
  # typed ./run_sim in a fresh WSL login shell would.
2279
+ # wsl.exe's target directory is passed explicitly via --cd, not via
2280
+ # QProcess's own working directory - but reset the latter anyway, since
2281
+ # it's shared with the Elmer branches below and open_model_fit(), and a
2282
+ # stale, since-deleted directory left over from one of those would make
2283
+ # Windows' CreateProcess refuse to launch wsl.exe itself (FailedToStart).
2284
+ self.process.setWorkingDirectory("")
2268
2285
  self.process.start("wsl.exe", [
2269
2286
  "--cd", wsl_run_path,
2270
2287
  "--", "bash", "-lc", "./run_sim"
@@ -858,6 +858,14 @@ class CreateModelTab(CreateModelTabBase):
858
858
  # Run Python interpreter on that file
859
859
  python_exe = sys.executable # Use the same Python interpreter
860
860
  self._process_purpose = "create_mesh"
861
+ # self.process is shared with run_model(), which sets a working directory
862
+ # of its own (a model's *_data folder) and never clears it afterwards -
863
+ # it's sticky on the QProcess instance. If that leftover directory no
864
+ # longer exists, Windows' CreateProcess refuses to launch ANY process,
865
+ # even python_exe given by absolute path here, and QProcess reports it
866
+ # as the generic FailedToStart. Reset it so this launch never depends on
867
+ # what a previous, unrelated action last pointed it at.
868
+ self.process.setWorkingDirectory("")
861
869
  self.process.start(python_exe, [pymodel_filename])
862
870
 
863
871