PyMieSimX 0.4.4__tar.gz → 0.4.7__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 (118) hide show
  1. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PKG-INFO +5 -3
  2. pymiesimx-0.4.7/PyMieSimX/_version.py +4 -0
  3. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX.egg-info/PKG-INFO +5 -3
  4. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX.egg-info/SOURCES.txt +2 -48
  5. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX.egg-info/requires.txt +5 -2
  6. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/pyproject.toml +10 -7
  7. pymiesimx-0.4.4/.coveragerc +0 -26
  8. pymiesimx-0.4.4/.flake8 +0 -11
  9. pymiesimx-0.4.4/.github/dependabot.yml +0 -10
  10. pymiesimx-0.4.4/.github/workflows/deploy_coverage.yml +0 -49
  11. pymiesimx-0.4.4/.github/workflows/deploy_documentation.yml +0 -116
  12. pymiesimx-0.4.4/.github/workflows/deploy_release.yml +0 -30
  13. pymiesimx-0.4.4/.github/workflows/quality.yml +0 -47
  14. pymiesimx-0.4.4/.github/workflows/tests.yml +0 -27
  15. pymiesimx-0.4.4/.gitignore +0 -21
  16. pymiesimx-0.4.4/.pre-commit-config.yaml +0 -23
  17. pymiesimx-0.4.4/AGENTS.md +0 -81
  18. pymiesimx-0.4.4/CONTRIBUTING.md +0 -7
  19. pymiesimx-0.4.4/Dockerfile +0 -13
  20. pymiesimx-0.4.4/PyMieSimX.egg-info/scm_file_list.json +0 -111
  21. pymiesimx-0.4.4/PyMieSimX.egg-info/scm_version.json +0 -8
  22. pymiesimx-0.4.4/conda.recipe/meta.yaml +0 -63
  23. pymiesimx-0.4.4/docs/redirect.html +0 -13
  24. pymiesimx-0.4.4/docs/source/_static/favicon.svg +0 -6
  25. pymiesimx-0.4.4/docs/source/_static/logo.svg +0 -39
  26. pymiesimx-0.4.4/docs/source/api.rst +0 -25
  27. pymiesimx-0.4.4/docs/source/conf.py +0 -59
  28. pymiesimx-0.4.4/docs/source/contributing.rst +0 -16
  29. pymiesimx-0.4.4/docs/source/getting_started.rst +0 -60
  30. pymiesimx-0.4.4/docs/source/gui.rst +0 -18
  31. pymiesimx-0.4.4/docs/source/how_it_works.rst +0 -36
  32. pymiesimx-0.4.4/docs/source/index.rst +0 -35
  33. pymiesimx-0.4.4/docs/source/project.rst +0 -9
  34. pymiesimx-0.4.4/docs/source/reference.rst +0 -10
  35. pymiesimx-0.4.4/docs/source/sharing.rst +0 -12
  36. pymiesimx-0.4.4/makefile +0 -47
  37. pymiesimx-0.4.4/pytest.ini +0 -19
  38. pymiesimx-0.4.4/tests/browser/test_dashboard.py +0 -711
  39. pymiesimx-0.4.4/tests/gui/cli.py +0 -57
  40. pymiesimx-0.4.4/tests/gui/test_admin.py +0 -77
  41. pymiesimx-0.4.4/tests/gui/test_api.py +0 -59
  42. pymiesimx-0.4.4/tests/gui/test_dash_callbacks.py +0 -343
  43. pymiesimx-0.4.4/tests/gui/test_examples.py +0 -78
  44. pymiesimx-0.4.4/tests/gui/test_home.py +0 -41
  45. pymiesimx-0.4.4/tests/gui/test_population.py +0 -226
  46. pymiesimx-0.4.4/tests/gui/test_seo.py +0 -67
  47. pymiesimx-0.4.4/tests/gui/test_services.py +0 -360
  48. pymiesimx-0.4.4/tests/gui/test_sharing.py +0 -165
  49. pymiesimx-0.4.4/tests/gui/test_usage_metrics.py +0 -31
  50. pymiesimx-0.4.4/tools/generate_home_spf.py +0 -100
  51. pymiesimx-0.4.4/tools/next_release_version.py +0 -24
  52. pymiesimx-0.4.4/tools/release_tag.py +0 -27
  53. pymiesimx-0.4.4/tools/verify_conda_artifact.py +0 -28
  54. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/LICENSE +0 -0
  55. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/__init__.py +0 -0
  56. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/__main__.py +0 -0
  57. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/api.py +0 -0
  58. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/application/__init__.py +0 -0
  59. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/application/wsgi.py +0 -0
  60. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/__init__.py +0 -0
  61. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/admin.py +0 -0
  62. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/assets/card-state.js +0 -0
  63. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/assets/dashboard.css +0 -0
  64. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/assets/default-settings.json +0 -0
  65. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/assets/home-spf-radial.gif +0 -0
  66. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/assets/home-spf-radial.png +0 -0
  67. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/assets/logo.png +0 -0
  68. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/assets/materials-stock.json +0 -0
  69. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/assets/pymiesim-favicon.svg +0 -0
  70. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/assets/pymiesim-logo-dark.svg +0 -0
  71. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/assets/pymiesim-logo.svg +0 -0
  72. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/assets/simulation-sharing.js +0 -0
  73. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/callback_helpers.py +0 -0
  74. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/callbacks.py +0 -0
  75. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/components/__init__.py +0 -0
  76. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/components/cards.py +0 -0
  77. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/computation.py +0 -0
  78. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/defaults.py +0 -0
  79. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/experiment_service.py +0 -0
  80. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/interface.py +0 -0
  81. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/jobs.py +0 -0
  82. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/layout.py +0 -0
  83. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/material_catalog.py +0 -0
  84. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/models.py +0 -0
  85. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/__init__.py +0 -0
  86. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/citation.py +0 -0
  87. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/documentation.py +0 -0
  88. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/examples.py +0 -0
  89. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/experiment/__init__.py +0 -0
  90. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/experiment/page.py +0 -0
  91. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/experiment/sections/__init__.py +0 -0
  92. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/experiment/sections/configuration.py +0 -0
  93. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/field_syntax.py +0 -0
  94. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/home.py +0 -0
  95. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/install_local.py +0 -0
  96. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/population.py +0 -0
  97. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/sellmeier.py +0 -0
  98. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/settings.py +0 -0
  99. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/single/__init__.py +0 -0
  100. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/single/page.py +0 -0
  101. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/single/sections/__init__.py +0 -0
  102. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/single/sections/representations.py +0 -0
  103. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/pages/single/sections/setup.py +0 -0
  104. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/parsing.py +0 -0
  105. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/plotting.py +0 -0
  106. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/population_service.py +0 -0
  107. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/schemas.py +0 -0
  108. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/seo.py +0 -0
  109. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/services.py +0 -0
  110. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/sharing.py +0 -0
  111. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/single_service.py +0 -0
  112. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/usage_metrics.py +0 -0
  113. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX/gui/validation.py +0 -0
  114. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX.egg-info/dependency_links.txt +0 -0
  115. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX.egg-info/entry_points.txt +0 -0
  116. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/PyMieSimX.egg-info/top_level.txt +0 -0
  117. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/README.rst +0 -0
  118. {pymiesimx-0.4.4 → pymiesimx-0.4.7}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyMieSimX
3
- Version: 0.4.4
3
+ Version: 0.4.7
4
4
  Summary: Graphical Dash interface for PyMieSim.
5
5
  Author-email: Martin Poinsinet de Sivry-Houle <martin.poinsinet.de.sivry@gmail.com>
6
6
  License-Expression: MIT
@@ -21,6 +21,8 @@ Requires-Dist: pandas<3,>=2.2
21
21
  Requires-Dist: pint<0.26,>=0.24
22
22
  Requires-Dist: plotly<7,>=5.24
23
23
  Requires-Dist: psycopg[binary]<4,>=3.2.9
24
+ Provides-Extra: release
25
+ Requires-Dist: martinpdes-maintenance==0.2.2; extra == "release"
24
26
  Provides-Extra: testing
25
27
  Requires-Dist: pytest>=8.0; extra == "testing"
26
28
  Requires-Dist: pytest-cov>=5.0; extra == "testing"
@@ -32,9 +34,9 @@ Requires-Dist: build>=1.2; extra == "dev"
32
34
  Requires-Dist: mypy==1.15.0; extra == "dev"
33
35
  Requires-Dist: ruff==0.11.2; extra == "dev"
34
36
  Provides-Extra: docs
35
- Requires-Dist: MartinPdeS-docs<0.3,>=0.2.1; extra == "docs"
37
+ Requires-Dist: MartinPdeS-docs<0.5,>=0.4.0; extra == "docs"
36
38
  Provides-Extra: documentation
37
- Requires-Dist: MartinPdeS-docs<0.3,>=0.2.1; extra == "documentation"
39
+ Requires-Dist: MartinPdeS-docs<0.5,>=0.4.0; extra == "documentation"
38
40
  Dynamic: license-file
39
41
 
40
42
  PyMieSimX
@@ -0,0 +1,4 @@
1
+ """Release version maintained by martinpdes-maintenance."""
2
+
3
+ __version__ = version = "0.4.7"
4
+ __version_tuple__ = version_tuple = tuple(int(part) for part in version.split("."))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyMieSimX
3
- Version: 0.4.4
3
+ Version: 0.4.7
4
4
  Summary: Graphical Dash interface for PyMieSim.
5
5
  Author-email: Martin Poinsinet de Sivry-Houle <martin.poinsinet.de.sivry@gmail.com>
6
6
  License-Expression: MIT
@@ -21,6 +21,8 @@ Requires-Dist: pandas<3,>=2.2
21
21
  Requires-Dist: pint<0.26,>=0.24
22
22
  Requires-Dist: plotly<7,>=5.24
23
23
  Requires-Dist: psycopg[binary]<4,>=3.2.9
24
+ Provides-Extra: release
25
+ Requires-Dist: martinpdes-maintenance==0.2.2; extra == "release"
24
26
  Provides-Extra: testing
25
27
  Requires-Dist: pytest>=8.0; extra == "testing"
26
28
  Requires-Dist: pytest-cov>=5.0; extra == "testing"
@@ -32,9 +34,9 @@ Requires-Dist: build>=1.2; extra == "dev"
32
34
  Requires-Dist: mypy==1.15.0; extra == "dev"
33
35
  Requires-Dist: ruff==0.11.2; extra == "dev"
34
36
  Provides-Extra: docs
35
- Requires-Dist: MartinPdeS-docs<0.3,>=0.2.1; extra == "docs"
37
+ Requires-Dist: MartinPdeS-docs<0.5,>=0.4.0; extra == "docs"
36
38
  Provides-Extra: documentation
37
- Requires-Dist: MartinPdeS-docs<0.3,>=0.2.1; extra == "documentation"
39
+ Requires-Dist: MartinPdeS-docs<0.5,>=0.4.0; extra == "documentation"
38
40
  Dynamic: license-file
39
41
 
40
42
  PyMieSimX
@@ -1,31 +1,15 @@
1
- .coveragerc
2
- .flake8
3
- .gitignore
4
- .pre-commit-config.yaml
5
- AGENTS.md
6
- CONTRIBUTING.md
7
- Dockerfile
8
1
  LICENSE
9
2
  README.rst
10
- makefile
11
3
  pyproject.toml
12
- pytest.ini
13
- .github/dependabot.yml
14
- .github/workflows/deploy_coverage.yml
15
- .github/workflows/deploy_documentation.yml
16
- .github/workflows/deploy_release.yml
17
- .github/workflows/quality.yml
18
- .github/workflows/tests.yml
19
4
  PyMieSimX/__init__.py
20
5
  PyMieSimX/__main__.py
6
+ PyMieSimX/_version.py
21
7
  PyMieSimX/api.py
22
8
  PyMieSimX.egg-info/PKG-INFO
23
9
  PyMieSimX.egg-info/SOURCES.txt
24
10
  PyMieSimX.egg-info/dependency_links.txt
25
11
  PyMieSimX.egg-info/entry_points.txt
26
12
  PyMieSimX.egg-info/requires.txt
27
- PyMieSimX.egg-info/scm_file_list.json
28
- PyMieSimX.egg-info/scm_version.json
29
13
  PyMieSimX.egg-info/top_level.txt
30
14
  PyMieSimX/application/__init__.py
31
15
  PyMieSimX/application/wsgi.py
@@ -82,34 +66,4 @@ PyMieSimX/gui/pages/single/__init__.py
82
66
  PyMieSimX/gui/pages/single/page.py
83
67
  PyMieSimX/gui/pages/single/sections/__init__.py
84
68
  PyMieSimX/gui/pages/single/sections/representations.py
85
- PyMieSimX/gui/pages/single/sections/setup.py
86
- conda.recipe/meta.yaml
87
- docs/redirect.html
88
- docs/source/api.rst
89
- docs/source/conf.py
90
- docs/source/contributing.rst
91
- docs/source/getting_started.rst
92
- docs/source/gui.rst
93
- docs/source/how_it_works.rst
94
- docs/source/index.rst
95
- docs/source/project.rst
96
- docs/source/reference.rst
97
- docs/source/sharing.rst
98
- docs/source/_static/favicon.svg
99
- docs/source/_static/logo.svg
100
- tests/browser/test_dashboard.py
101
- tests/gui/cli.py
102
- tests/gui/test_admin.py
103
- tests/gui/test_api.py
104
- tests/gui/test_dash_callbacks.py
105
- tests/gui/test_examples.py
106
- tests/gui/test_home.py
107
- tests/gui/test_population.py
108
- tests/gui/test_seo.py
109
- tests/gui/test_services.py
110
- tests/gui/test_sharing.py
111
- tests/gui/test_usage_metrics.py
112
- tools/generate_home_spf.py
113
- tools/next_release_version.py
114
- tools/release_tag.py
115
- tools/verify_conda_artifact.py
69
+ PyMieSimX/gui/pages/single/sections/setup.py
@@ -17,10 +17,13 @@ mypy==1.15.0
17
17
  ruff==0.11.2
18
18
 
19
19
  [docs]
20
- MartinPdeS-docs<0.3,>=0.2.1
20
+ MartinPdeS-docs<0.5,>=0.4.0
21
21
 
22
22
  [documentation]
23
- MartinPdeS-docs<0.3,>=0.2.1
23
+ MartinPdeS-docs<0.5,>=0.4.0
24
+
25
+ [release]
26
+ martinpdes-maintenance==0.2.2
24
27
 
25
28
  [testing]
26
29
  pytest>=8.0
@@ -1,10 +1,10 @@
1
1
  [build-system]
2
- requires = ["setuptools>=68", "setuptools-scm[toml]>=8.0"]
2
+ requires = ["setuptools>=68"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "PyMieSimX"
7
- dynamic = ["version"]
7
+ version = "0.4.7"
8
8
  description = "Graphical Dash interface for PyMieSim."
9
9
  license = "MIT"
10
10
  license-files = ["LICENSE"]
@@ -39,6 +39,7 @@ Repository = "https://github.com/MartinPdeS/PyMieSimX"
39
39
  pymiesimx = "PyMieSimX.__main__:main"
40
40
 
41
41
  [project.optional-dependencies]
42
+ release = ["martinpdes-maintenance==0.2.2"]
42
43
  testing = [
43
44
  "pytest>=8.0",
44
45
  "pytest-cov>=5.0",
@@ -53,18 +54,15 @@ dev = [
53
54
  "ruff==0.11.2",
54
55
  ]
55
56
  docs = [
56
- "MartinPdeS-docs>=0.2.1,<0.3",
57
+ "MartinPdeS-docs>=0.4.0,<0.5",
57
58
  ]
58
59
  documentation = [
59
- "MartinPdeS-docs>=0.2.1,<0.3",
60
+ "MartinPdeS-docs>=0.4.0,<0.5",
60
61
  ]
61
62
 
62
63
  [tool.setuptools.packages.find]
63
64
  include = ["PyMieSimX*"]
64
65
 
65
- [tool.setuptools_scm]
66
- fallback_version = "0+unknown"
67
-
68
66
  [tool.setuptools.package-data]
69
67
  "PyMieSimX.gui" = ["assets/*"]
70
68
 
@@ -77,3 +75,8 @@ warn_return_any = true
77
75
  warn_unused_ignores = true
78
76
  no_implicit_optional = true
79
77
  exclude = "(^development/|^docs/)"
78
+
79
+ [tool.mps-maintenance]
80
+ version-file = "PyMieSimX/_version.py"
81
+ version-method = "literal"
82
+ conda-recipe = "conda.recipe/meta.yaml"
@@ -1,26 +0,0 @@
1
- [run]
2
- source = PyMieSimX
3
- branch = True
4
- relative_files = True
5
- parallel = True
6
- omit =
7
- **/__init__.py
8
- PyMieSimX/**/__main__.py
9
-
10
- [report]
11
- fail_under = 52
12
- skip_covered = True
13
- show_missing = True
14
- precision = 2
15
-
16
- [html]
17
- directory = htmlcov
18
-
19
- [xml]
20
- output = coverage.xml
21
-
22
- [paths]
23
- source =
24
- PyMieSimX
25
- /home/runner/work/PyMieSimX/PyMieSimX/PyMieSimX
26
- /github/workspace/PyMieSimX
pymiesimx-0.4.4/.flake8 DELETED
@@ -1,11 +0,0 @@
1
- [flake8]
2
- max-line-length = 300
3
- exclude =
4
- .git
5
- docs/build
6
- docs/source/gallery
7
- development
8
-
9
- count = true
10
- per-file-ignores =
11
- __init__.py: F403, F401
@@ -1,10 +0,0 @@
1
- # Specify reviewers for pull requests
2
-
3
- version: 2
4
- updates:
5
- - package-ecosystem: "pip"
6
- directory: "/"
7
- target-branch: "master"
8
- schedule:
9
- interval: "quarterly"
10
- time: "09:00"
@@ -1,49 +0,0 @@
1
- name: Deploy GUI coverage
2
-
3
- on:
4
- push:
5
- branches: ["master"]
6
- tags: ["*"]
7
- pull_request:
8
- branches: ["master"]
9
-
10
- permissions:
11
- contents: write
12
- pull-requests: write
13
-
14
- jobs:
15
- coverage:
16
- name: Run GUI tests and publish coverage
17
- runs-on: ubuntu-latest
18
- steps:
19
- - name: Set up Python and CI dependencies
20
- uses: MartinPdeS/MPSActions/actions/setup-python@a01969bc5af90666281f9d37acffdf6a4629763a
21
- with:
22
- python-version: "3.11"
23
- install-command: >-
24
- python -m pip install --upgrade pip wheel build && python -m pip install -e ".[testing]"
25
- fetch-depth: 0
26
-
27
- - name: Initialize material catalog
28
- run: python -m PyOptik setup --no-progress
29
-
30
- - name: Run GUI tests with coverage
31
- run: |
32
- coverage erase
33
- python -m pytest \
34
- --import-mode=importlib \
35
- --cov=PyMieSimX \
36
- --cov-config=.coveragerc \
37
- --cov-report=term-missing \
38
- --cov-report=xml:coverage.xml \
39
- tests/gui \
40
- --config-file=pytest.ini
41
-
42
- - name: Post coverage comment
43
- if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
44
- uses: py-cov-action/python-coverage-comment-action@a05be3d2e8a6272d3ef5fb2840ab20368bb2eb71
45
- with:
46
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
47
- MINIMUM_GREEN: 90
48
- MINIMUM_ORANGE: 50
49
- COVERAGE_PATH: .
@@ -1,116 +0,0 @@
1
- # Build and publish the versioned documentation site.
2
- name: Documentation
3
-
4
- on:
5
- push:
6
- branches: ["**"]
7
- tags: ["v*"]
8
- pull_request:
9
- branches: ["master"]
10
-
11
- concurrency:
12
- group: documentation-build-${{ github.repository }}
13
- cancel-in-progress: false
14
-
15
- permissions:
16
- contents: write
17
- pages: write
18
- id-token: write
19
-
20
- jobs:
21
- ManyLinux_x86_64:
22
- uses: MartinPdeS/MPSActions/.github/workflows/publish_documentation.yml@a01969bc5af90666281f9d37acffdf6a4629763a
23
- with:
24
- python-version: "3.11"
25
- package-name: "PyMieSimX"
26
- apt-package: xvfb jq
27
- deploy-pages: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v')) }}
28
-
29
- prune_documentation_versions:
30
- needs: ManyLinux_x86_64
31
- if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v')) }}
32
- runs-on: ubuntu-latest
33
- env:
34
- DOCUMENTATION_BRANCH: documentation_page
35
- VERSION_RETENTION_COUNT: 5
36
-
37
- steps:
38
- - name: Checkout documentation branch
39
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
40
- with:
41
- fetch-depth: 0
42
- ref: ${{ env.DOCUMENTATION_BRANCH }}
43
-
44
- - name: Retain only the newest documentation versions
45
- run: |
46
- set -Eeuo pipefail
47
-
48
- mapfile -t versions < <(
49
- find docs \
50
- -mindepth 1 \
51
- -maxdepth 1 \
52
- -type d \
53
- -printf "%f\n" \
54
- | grep -v "^latest$" \
55
- | sort -V -r
56
- )
57
-
58
- for version in "${versions[@]:${VERSION_RETENTION_COUNT}}"; do
59
- git rm -r -- "docs/${version}"
60
- done
61
-
62
- - name: Install documentation landing page
63
- run: |
64
- set -Eeuo pipefail
65
- git show "${GITHUB_SHA}:docs/redirect.html" > index.html
66
- test -s docs/latest/index.html
67
-
68
- - name: Rebuild version switcher
69
- run: |
70
- set -Eeuo pipefail
71
-
72
- base_url="https://martinpdes.github.io/PyMieSimX/docs"
73
- mapfile -t versions < <(
74
- find docs \
75
- -mindepth 1 \
76
- -maxdepth 1 \
77
- -type d \
78
- -printf "%f\n" \
79
- | grep -v "^latest$" \
80
- | sort -V -r
81
- )
82
-
83
- jq -n \
84
- --arg base_url "${base_url}" \
85
- --argjson versions "$(printf '%s\n' "${versions[@]}" | jq -R . | jq -s .)" \
86
- '[
87
- {
88
- name: "latest",
89
- version: "latest",
90
- url: ($base_url + "/latest")
91
- }
92
- ] + [
93
- $versions[] | {
94
- name: .,
95
- version: .,
96
- url: ($base_url + "/" + .)
97
- }
98
- ]' > version_switcher.json
99
-
100
- jq . version_switcher.json
101
-
102
- - name: Commit pruned documentation
103
- run: |
104
- set -Eeuo pipefail
105
-
106
- git config user.name "github-actions[bot]"
107
- git config user.email "github-actions[bot]@users.noreply.github.com"
108
- git add index.html version_switcher.json
109
-
110
- if git diff --cached --quiet; then
111
- echo "Documentation landing page and retention policy are up to date."
112
- exit 0
113
- fi
114
-
115
- git commit -m "Update documentation landing page and retain ${VERSION_RETENTION_COUNT} versions [skip ci]"
116
- git push origin "HEAD:${DOCUMENTATION_BRANCH}"
@@ -1,30 +0,0 @@
1
- name: Publish release
2
-
3
- on:
4
- push:
5
- tags: ["v*"]
6
-
7
- permissions:
8
- contents: read
9
-
10
- jobs:
11
- pypi:
12
- name: Publish to PyPI
13
- uses: MartinPdeS/MPSActions/.github/workflows/publish_pure_package_to_PyPi.yml@a01969bc5af90666281f9d37acffdf6a4629763a
14
- with:
15
- python-version: "3.11"
16
- test-command: python -c "import PyMieSimX"
17
- secrets:
18
- PYPI_API_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
19
-
20
- conda:
21
- name: Publish Conda package
22
- uses: MartinPdeS/MPSActions/.github/workflows/publish_compiled_package_to_anaconda.yml@a01969bc5af90666281f9d37acffdf6a4629763a
23
- with:
24
- python_versions: '["3.11", "3.12", "3.13", "3.14"]'
25
- os_list: '["ubuntu-latest", "macos-latest", "windows-latest"]'
26
- package_name: pymiesimx
27
- recipe_path: conda.recipe
28
- test_import: PyMieSimX
29
- secrets:
30
- ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
@@ -1,47 +0,0 @@
1
- name: Quality and GUI tests
2
-
3
- on:
4
- push:
5
- branches: ["master"]
6
- pull_request:
7
- branches: ["master"]
8
-
9
- permissions:
10
- contents: read
11
-
12
- jobs:
13
- python-quality:
14
- runs-on: ubuntu-latest
15
- strategy:
16
- matrix:
17
- python-version: ["3.11", "3.13"]
18
- steps:
19
- - name: Set up Python and CI dependencies
20
- uses: MartinPdeS/MPSActions/actions/setup-python@a01969bc5af90666281f9d37acffdf6a4629763a
21
- with:
22
- python-version: "${{ matrix.python-version }}"
23
- install-command: >-
24
- python -m pip install --upgrade pip && python -m pip install -e ".[testing,dev]"
25
- - name: Initialize material catalog
26
- run: python -m PyOptik setup --no-progress
27
- - name: Ruff
28
- run: python -m ruff check PyMieSimX tests
29
- - name: Mypy
30
- run: python -m mypy PyMieSimX/gui/parsing.py PyMieSimX/gui/schemas.py PyMieSimX/gui/models.py PyMieSimX/gui/jobs.py PyMieSimX/gui/callback_helpers.py PyMieSimX/gui/admin.py
31
- - name: GUI tests
32
- run: python -m pytest
33
-
34
- browser-tests:
35
- runs-on: ubuntu-latest
36
- steps:
37
- - name: Set up Python and CI dependencies
38
- uses: MartinPdeS/MPSActions/actions/setup-python@a01969bc5af90666281f9d37acffdf6a4629763a
39
- with:
40
- python-version: "3.11"
41
- install-command: >-
42
- python -m pip install --upgrade pip && python -m pip install -e ".[testing,browser]"
43
- - name: Initialize material catalog
44
- run: python -m PyOptik setup --no-progress
45
- - name: Browser workflow tests
46
- # The full GUI suite enforces the repository-wide coverage threshold.
47
- run: python -m pytest tests/browser --config-file=pytest.ini --headless --cov=PyMieSimX --cov-report=term --cov-fail-under=0
@@ -1,27 +0,0 @@
1
- name: Tests
2
-
3
- on:
4
- push:
5
- branches: [master]
6
- pull_request:
7
- branches: [master]
8
-
9
- permissions:
10
- contents: read
11
-
12
- jobs:
13
- tests:
14
- runs-on: ubuntu-latest
15
- strategy:
16
- fail-fast: false
17
- matrix:
18
- python-version: ["3.11", "3.14"]
19
- steps:
20
- - name: Set up Python and CI dependencies
21
- uses: MartinPdeS/MPSActions/actions/setup-python@a01969bc5af90666281f9d37acffdf6a4629763a
22
- with:
23
- python-version: "${{ matrix.python-version }}"
24
- install-command: >-
25
- python -m pip install --upgrade pip && python -m pip install -e ".[testing]"
26
- - run: python -m PyOptik setup --no-progress
27
- - run: python -m pytest -q
@@ -1,21 +0,0 @@
1
- __pycache__/
2
- *.py[cod]
3
- *.egg-info/
4
- .venv/
5
- .pytest_cache/
6
- .ruff_cache/
7
- .mypy_cache/
8
- build/
9
- dist/
10
- .coverage
11
- htmlcov/
12
- docs/_build/
13
- docs/source/generated/
14
- .DS_Store
15
- !conda.recipe/
16
- !conda.recipe/meta.yaml
17
- !CONTRIBUTING.md
18
- !makefile
19
- !Makefile
20
- !tools/
21
- !tools/*.py
@@ -1,23 +0,0 @@
1
- repos:
2
- - repo: https://github.com/pre-commit/pre-commit-hooks
3
- rev: v4.6.0
4
- hooks:
5
- - id: check-merge-conflict
6
- - id: end-of-file-fixer
7
- - id: mixed-line-ending
8
- - id: check-yaml
9
- - id: check-toml
10
- - id: detect-private-key
11
- - id: check-json
12
- - id: check-case-conflict
13
-
14
- - repo: https://github.com/psf/black
15
- rev: 24.4.2
16
- hooks:
17
- - id: black
18
-
19
- - repo: https://github.com/astral-sh/ruff-pre-commit
20
- rev: v0.11.2
21
- hooks:
22
- - id: ruff
23
- args: [--output-format, concise]
pymiesimx-0.4.4/AGENTS.md DELETED
@@ -1,81 +0,0 @@
1
- # Working on PyMieSimX
2
-
3
- PyMieSimX provides a Dash GUI and Python API for PyMieSim. The hosted service is
4
- https://pymiesim.onrender.com/. Keep browser use, local installation, and the
5
- Python API working together.
6
-
7
- ## Repository map
8
-
9
- - `PyMieSimX/api.py` exposes the computational API. Preserve compatibility for
10
- single-measure callers when extending sweep results.
11
- - `PyMieSimX/gui/computation.py`, `parsing.py`, `validation.py`, and `schemas.py`
12
- handle scientific inputs, calculations, result serialization, and plotting.
13
- Delegate scientific solvers to PyMieSim and optical materials to PyOptik.
14
- - `PyMieSimX/gui/jobs.py` manages bounded background sweep jobs;
15
- `callbacks.py` connects job state, validation, plotting, and exports to Dash.
16
- - `PyMieSimX/gui/pages/`, `components/`, and `layout.py` compose the interface.
17
- CSS and browser assets live in `PyMieSimX/gui/assets/`.
18
- - `PyMieSimX/application/wsgi.py` is the hosted-server entry point;
19
- `PyMieSimX/__main__.py` provides the `pymiesimx` launcher.
20
- - `tests/gui/` covers Python behavior and Dash callbacks. `tests/browser/`
21
- exercises the real browser workflow separately.
22
-
23
- ## Setup and checks
24
-
25
- Use Python 3.11 or newer and a virtual environment. Reuse an existing suitable
26
- environment when available; do not modify sibling repositories to set up this
27
- one.
28
-
29
- ```sh
30
- python -m pip install -e ".[testing,dev,browser]"
31
- python -m PyOptik setup --no-progress
32
- make quality PYTHON=python
33
- python -m pytest
34
- python -m pytest tests/browser --config-file=pytest.ini --headless --cov=PyMieSimX --cov-report=term --cov-fail-under=0
35
- git diff --check
36
- ```
37
-
38
- Browser tests need Chrome and a compatible ChromeDriver. The default pytest
39
- suite runs `tests/gui` and enforces the coverage threshold in `.coveragerc`;
40
- the separate browser command intentionally disables that threshold. Use a
41
- writable `MPLCONFIGDIR` when the default Matplotlib cache is unavailable.
42
-
43
- Run checks relevant to the change. For UI interaction changes, run the browser
44
- suite as well as affected callback tests. Wait for observable UI state and CSS
45
- transitions; avoid fixed sleeps, JavaScript clicks that bypass actual hit
46
- testing, or removing assertions to make tests pass. Use explicit viewport sizes
47
- when testing desktop and responsive layouts.
48
-
49
- ## Implementation conventions
50
-
51
- - Use four spaces and follow the existing Python style. Keep Ruff and the
52
- scoped Mypy checks in `make quality` passing.
53
- - Keep parsing and scientific computation separate from Dash rendering so the
54
- public Python API remains usable without constructing a GUI.
55
- - Preserve physical units, dataframe index information, and all selected
56
- measures through serialization, plotting, and CSV export.
57
- - Validate sweep and result-size limits before expensive work where possible.
58
- Keep queued/running/completed/error states visible and make Run recover after
59
- validation failures, missing jobs, cancellation, and computation errors.
60
- - Keep usage metrics optional for local runs and protect the administration
61
- page with its server-side token. Never commit database URLs or secrets.
62
- - Add regression coverage for behavior changes; use asymmetric data when
63
- checking axis orientation and multiple measures when checking sweep output.
64
-
65
- ## Documentation, packaging, and CI
66
-
67
- - `README.rst` uses reStructuredText. Check new sections and links render
68
- correctly, including heading underline lengths.
69
- - Dependencies and the console entry point are declared in `pyproject.toml`.
70
- Keep `conda.recipe/meta.yaml` consistent with them. Conda builds are
71
- platform-specific for Python 3.11–3.13 on Linux, macOS, and Windows; retain
72
- the Windows dependency selectors and explicit `pymiesimx` entry point.
73
- - The Conda workflow supports manual build verification. Publishing to Conda
74
- and PyPI occurs on version-tag pushes. Verify the installed Conda artifact,
75
- including both import and CLI startup, rather than only the checkout.
76
- - Versions come from Git tags through setuptools-scm. Use the existing release
77
- tools/Makefile when a release is requested; a normal commit/push does not
78
- imply creating a release tag.
79
- - Inspect failing Actions job logs and fix the underlying cause. After pushing
80
- a CI fix, check the run for the new commit and report any remaining failures.
81
- - Preserve unrelated working-tree changes and commit only the requested work.
@@ -1,7 +0,0 @@
1
- # Contributing to PyMieSimX
2
-
3
- Use Python 3.10 or newer. Install development dependencies with `python -m pip install -e ".[testing,dev]"`, then run `make quality` and `make test`.
4
-
5
- Releases use semantic version tags. Run `make patch`, `make minor`, or `make major` from a clean `master` checkout; the command creates the release commit, tags it, and pushes both. Publishing workflows run only for `v*` tags.
6
-
7
- The Conda recipe is at `conda.recipe/meta.yaml`. Do not commit build artefacts, virtual environments, or caches.
@@ -1,13 +0,0 @@
1
- FROM python:3.11-slim
2
-
3
- ENV PYTHONDONTWRITEBYTECODE=1 \
4
- PYTHONUNBUFFERED=1
5
-
6
- WORKDIR /app
7
- COPY . .
8
-
9
- RUN python -m pip install --upgrade pip \
10
- && python -m pip install --no-cache-dir . \
11
- && python -m PyOptik setup --no-progress
12
-
13
- CMD ["sh", "-c", "exec gunicorn PyMieSimX.gui.interface:app --bind 0.0.0.0:${PORT:-8050} --workers 1 --threads 2 --timeout 3600"]