PyMieSimX 0.4.0__tar.gz → 0.4.3__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.
Potentially problematic release.
This version of PyMieSimX might be problematic. Click here for more details.
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/.github/workflows/deploy_PyPi.yml +3 -3
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/.github/workflows/deploy_anaconda.yml +1 -9
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/.github/workflows/deploy_coverage.yml +5 -10
- pymiesimx-0.4.3/.github/workflows/deploy_documentation.yml +26 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/.github/workflows/quality.yml +2 -2
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/.github/workflows/tests.yml +1 -1
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/.gitignore +2 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PKG-INFO +11 -1
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX.egg-info/PKG-INFO +11 -1
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX.egg-info/SOURCES.txt +11 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX.egg-info/requires.txt +7 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX.egg-info/scm_file_list.json +11 -0
- pymiesimx-0.4.3/PyMieSimX.egg-info/scm_version.json +8 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/README.rst +5 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/conda.recipe/meta.yaml +2 -0
- pymiesimx-0.4.3/docs/source/_static/favicon.svg +6 -0
- pymiesimx-0.4.3/docs/source/_static/logo.svg +39 -0
- pymiesimx-0.4.3/docs/source/api.rst +25 -0
- pymiesimx-0.4.3/docs/source/conf.py +69 -0
- pymiesimx-0.4.3/docs/source/contributing.rst +16 -0
- pymiesimx-0.4.3/docs/source/getting_started.rst +60 -0
- pymiesimx-0.4.3/docs/source/gui.rst +18 -0
- pymiesimx-0.4.3/docs/source/how_it_works.rst +36 -0
- pymiesimx-0.4.3/docs/source/index.rst +46 -0
- pymiesimx-0.4.3/docs/source/sharing.rst +12 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/makefile +4 -1
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/pyproject.toml +7 -0
- pymiesimx-0.4.0/PyMieSimX.egg-info/scm_version.json +0 -8
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/.coveragerc +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/.flake8 +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/.github/dependabot.yml +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/.pre-commit-config.yaml +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/AGENTS.md +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/CONTRIBUTING.md +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/Dockerfile +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/LICENSE +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/__init__.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/__main__.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/api.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/application/__init__.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/application/wsgi.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/__init__.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/admin.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/assets/card-state.js +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/assets/dashboard.css +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/assets/default-settings.json +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/assets/home-spf-radial.gif +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/assets/home-spf-radial.png +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/assets/logo.png +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/assets/materials-stock.json +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/assets/pymiesim-favicon.svg +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/assets/pymiesim-logo-dark.svg +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/assets/pymiesim-logo.svg +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/assets/simulation-sharing.js +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/callback_helpers.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/callbacks.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/components/__init__.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/components/cards.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/computation.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/defaults.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/experiment_service.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/interface.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/jobs.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/layout.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/material_catalog.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/models.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/__init__.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/citation.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/documentation.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/examples.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/experiment/__init__.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/experiment/page.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/experiment/sections/__init__.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/experiment/sections/configuration.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/field_syntax.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/home.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/install_local.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/population.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/sellmeier.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/settings.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/single/__init__.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/single/page.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/single/sections/__init__.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/single/sections/representations.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/single/sections/setup.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/parsing.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/plotting.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/population_service.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/schemas.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/seo.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/services.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/sharing.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/single_service.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/usage_metrics.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/validation.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX.egg-info/dependency_links.txt +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX.egg-info/entry_points.txt +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX.egg-info/top_level.txt +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/pytest.ini +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/setup.cfg +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tests/browser/test_dashboard.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tests/gui/cli.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tests/gui/test_admin.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tests/gui/test_api.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tests/gui/test_dash_callbacks.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tests/gui/test_examples.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tests/gui/test_home.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tests/gui/test_population.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tests/gui/test_seo.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tests/gui/test_services.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tests/gui/test_sharing.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tests/gui/test_usage_metrics.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tools/generate_home_spf.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tools/next_release_version.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tools/release_tag.py +0 -0
- {pymiesimx-0.4.0 → pymiesimx-0.4.3}/tools/verify_conda_artifact.py +0 -0
|
@@ -9,9 +9,9 @@ permissions:
|
|
|
9
9
|
|
|
10
10
|
jobs:
|
|
11
11
|
publish:
|
|
12
|
-
uses: MartinPdeS/MPSActions/.github/workflows/publish_pure_package_to_PyPi.yml@
|
|
12
|
+
uses: MartinPdeS/MPSActions/.github/workflows/publish_pure_package_to_PyPi.yml@a01969bc5af90666281f9d37acffdf6a4629763a
|
|
13
13
|
with:
|
|
14
|
-
python-version: "3.
|
|
15
|
-
test-command: python -c
|
|
14
|
+
python-version: "3.13"
|
|
15
|
+
test-command: python -c "import PyMieSimX"
|
|
16
16
|
secrets:
|
|
17
17
|
PYPI_API_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
|
|
@@ -10,20 +10,12 @@ permissions:
|
|
|
10
10
|
|
|
11
11
|
jobs:
|
|
12
12
|
publish:
|
|
13
|
-
uses: MartinPdeS/MPSActions/.github/workflows/publish_compiled_package_to_anaconda.yml@
|
|
13
|
+
uses: MartinPdeS/MPSActions/.github/workflows/publish_compiled_package_to_anaconda.yml@a01969bc5af90666281f9d37acffdf6a4629763a
|
|
14
14
|
with:
|
|
15
15
|
python_versions: '["3.11", "3.12", "3.13", "3.14"]'
|
|
16
16
|
os_list: '["ubuntu-latest", "macos-latest", "windows-latest"]'
|
|
17
17
|
package_name: pymiesimx
|
|
18
18
|
recipe_path: conda.recipe
|
|
19
19
|
test_import: PyMieSimX
|
|
20
|
-
# Shell startup in the reusable workflow reactivates base, even through
|
|
21
|
-
# conda run. Invoke the installed environment's interpreter directly.
|
|
22
|
-
test_command: >-
|
|
23
|
-
if [ -f '${test_prefix}/python.exe' ]; then
|
|
24
|
-
'${test_prefix}/python.exe' '${GITHUB_WORKSPACE}/tools/verify_conda_artifact.py';
|
|
25
|
-
else
|
|
26
|
-
'${test_prefix}/bin/python' '${GITHUB_WORKSPACE}/tools/verify_conda_artifact.py';
|
|
27
|
-
fi
|
|
28
20
|
secrets:
|
|
29
21
|
ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
|
|
@@ -16,18 +16,13 @@ jobs:
|
|
|
16
16
|
name: Run GUI tests and publish coverage
|
|
17
17
|
runs-on: ubuntu-latest
|
|
18
18
|
steps:
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
fetch-depth: 0
|
|
22
|
-
|
|
23
|
-
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
|
|
19
|
+
- name: Set up Python and CI dependencies
|
|
20
|
+
uses: MartinPdeS/MPSActions/actions/setup-python@a01969bc5af90666281f9d37acffdf6a4629763a
|
|
24
21
|
with:
|
|
25
22
|
python-version: "3.11"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
python -m pip install --upgrade pip wheel build
|
|
30
|
-
python -m pip install -e ".[testing]"
|
|
23
|
+
install-command: >-
|
|
24
|
+
python -m pip install --upgrade pip wheel build && python -m pip install -e ".[testing]"
|
|
25
|
+
fetch-depth: 0
|
|
31
26
|
|
|
32
27
|
- name: Initialize material catalog
|
|
33
28
|
run: python -m PyOptik setup --no-progress
|
|
@@ -0,0 +1,26 @@
|
|
|
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 }}-${{ github.ref }}
|
|
13
|
+
cancel-in-progress: true
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
contents: write
|
|
17
|
+
pages: write
|
|
18
|
+
id-token: write
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
documentation:
|
|
22
|
+
uses: MartinPdeS/MPSActions/.github/workflows/publish_documentation.yml@a01969bc5af90666281f9d37acffdf6a4629763a
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.13"
|
|
25
|
+
package-name: "PyMieSimX"
|
|
26
|
+
deploy-pages: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v')) }}
|
|
@@ -17,7 +17,7 @@ jobs:
|
|
|
17
17
|
python-version: ["3.11", "3.13"]
|
|
18
18
|
steps:
|
|
19
19
|
- name: Set up Python and CI dependencies
|
|
20
|
-
uses: MartinPdeS/MPSActions/actions/setup-python@
|
|
20
|
+
uses: MartinPdeS/MPSActions/actions/setup-python@a01969bc5af90666281f9d37acffdf6a4629763a
|
|
21
21
|
with:
|
|
22
22
|
python-version: "${{ matrix.python-version }}"
|
|
23
23
|
install-command: >-
|
|
@@ -35,7 +35,7 @@ jobs:
|
|
|
35
35
|
runs-on: ubuntu-latest
|
|
36
36
|
steps:
|
|
37
37
|
- name: Set up Python and CI dependencies
|
|
38
|
-
uses: MartinPdeS/MPSActions/actions/setup-python@
|
|
38
|
+
uses: MartinPdeS/MPSActions/actions/setup-python@a01969bc5af90666281f9d37acffdf6a4629763a
|
|
39
39
|
with:
|
|
40
40
|
python-version: "3.11"
|
|
41
41
|
install-command: >-
|
|
@@ -18,7 +18,7 @@ jobs:
|
|
|
18
18
|
python-version: ["3.11", "3.14"]
|
|
19
19
|
steps:
|
|
20
20
|
- name: Set up Python and CI dependencies
|
|
21
|
-
uses: MartinPdeS/MPSActions/actions/setup-python@
|
|
21
|
+
uses: MartinPdeS/MPSActions/actions/setup-python@a01969bc5af90666281f9d37acffdf6a4629763a
|
|
22
22
|
with:
|
|
23
23
|
python-version: "${{ matrix.python-version }}"
|
|
24
24
|
install-command: >-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyMieSimX
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.3
|
|
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
|
|
@@ -18,6 +18,7 @@ Requires-Dist: dash<5,>=4.1.0
|
|
|
18
18
|
Requires-Dist: gunicorn<24,>=23.0.0
|
|
19
19
|
Requires-Dist: numpy<3,>=2.0
|
|
20
20
|
Requires-Dist: pandas<3,>=2.2
|
|
21
|
+
Requires-Dist: pint<0.26,>=0.24
|
|
21
22
|
Requires-Dist: plotly<7,>=5.24
|
|
22
23
|
Requires-Dist: psycopg[binary]<4,>=3.2.9
|
|
23
24
|
Provides-Extra: testing
|
|
@@ -30,11 +31,20 @@ Provides-Extra: dev
|
|
|
30
31
|
Requires-Dist: build>=1.2; extra == "dev"
|
|
31
32
|
Requires-Dist: mypy==1.15.0; extra == "dev"
|
|
32
33
|
Requires-Dist: ruff==0.11.2; extra == "dev"
|
|
34
|
+
Provides-Extra: docs
|
|
35
|
+
Requires-Dist: MartinPdeS-docs>=0.1.4; extra == "docs"
|
|
36
|
+
Provides-Extra: documentation
|
|
37
|
+
Requires-Dist: MartinPdeS-docs>=0.1.4; extra == "documentation"
|
|
33
38
|
Dynamic: license-file
|
|
34
39
|
|
|
35
40
|
PyMieSimX
|
|
36
41
|
=========
|
|
37
42
|
|
|
43
|
+
.. image:: docs/source/_static/logo.svg
|
|
44
|
+
:alt: PyMieSimX
|
|
45
|
+
:align: center
|
|
46
|
+
:width: 420px
|
|
47
|
+
|
|
38
48
|
PyMieSimX is the standalone graphical interface for `PyMieSim
|
|
39
49
|
<https://github.com/MartinPdeS/PyMieSim>`_. It provides a Dash application for
|
|
40
50
|
configuring optical setups, running parameter sweeps, exploring individual
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyMieSimX
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.3
|
|
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
|
|
@@ -18,6 +18,7 @@ Requires-Dist: dash<5,>=4.1.0
|
|
|
18
18
|
Requires-Dist: gunicorn<24,>=23.0.0
|
|
19
19
|
Requires-Dist: numpy<3,>=2.0
|
|
20
20
|
Requires-Dist: pandas<3,>=2.2
|
|
21
|
+
Requires-Dist: pint<0.26,>=0.24
|
|
21
22
|
Requires-Dist: plotly<7,>=5.24
|
|
22
23
|
Requires-Dist: psycopg[binary]<4,>=3.2.9
|
|
23
24
|
Provides-Extra: testing
|
|
@@ -30,11 +31,20 @@ Provides-Extra: dev
|
|
|
30
31
|
Requires-Dist: build>=1.2; extra == "dev"
|
|
31
32
|
Requires-Dist: mypy==1.15.0; extra == "dev"
|
|
32
33
|
Requires-Dist: ruff==0.11.2; extra == "dev"
|
|
34
|
+
Provides-Extra: docs
|
|
35
|
+
Requires-Dist: MartinPdeS-docs>=0.1.4; extra == "docs"
|
|
36
|
+
Provides-Extra: documentation
|
|
37
|
+
Requires-Dist: MartinPdeS-docs>=0.1.4; extra == "documentation"
|
|
33
38
|
Dynamic: license-file
|
|
34
39
|
|
|
35
40
|
PyMieSimX
|
|
36
41
|
=========
|
|
37
42
|
|
|
43
|
+
.. image:: docs/source/_static/logo.svg
|
|
44
|
+
:alt: PyMieSimX
|
|
45
|
+
:align: center
|
|
46
|
+
:width: 420px
|
|
47
|
+
|
|
38
48
|
PyMieSimX is the standalone graphical interface for `PyMieSim
|
|
39
49
|
<https://github.com/MartinPdeS/PyMieSim>`_. It provides a Dash application for
|
|
40
50
|
configuring optical setups, running parameter sweeps, exploring individual
|
|
@@ -14,6 +14,7 @@ pytest.ini
|
|
|
14
14
|
.github/workflows/deploy_PyPi.yml
|
|
15
15
|
.github/workflows/deploy_anaconda.yml
|
|
16
16
|
.github/workflows/deploy_coverage.yml
|
|
17
|
+
.github/workflows/deploy_documentation.yml
|
|
17
18
|
.github/workflows/quality.yml
|
|
18
19
|
.github/workflows/tests.yml
|
|
19
20
|
PyMieSimX/__init__.py
|
|
@@ -84,6 +85,16 @@ PyMieSimX/gui/pages/single/sections/__init__.py
|
|
|
84
85
|
PyMieSimX/gui/pages/single/sections/representations.py
|
|
85
86
|
PyMieSimX/gui/pages/single/sections/setup.py
|
|
86
87
|
conda.recipe/meta.yaml
|
|
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/sharing.rst
|
|
96
|
+
docs/source/_static/favicon.svg
|
|
97
|
+
docs/source/_static/logo.svg
|
|
87
98
|
tests/browser/test_dashboard.py
|
|
88
99
|
tests/gui/cli.py
|
|
89
100
|
tests/gui/test_admin.py
|
|
@@ -4,6 +4,7 @@ dash<5,>=4.1.0
|
|
|
4
4
|
gunicorn<24,>=23.0.0
|
|
5
5
|
numpy<3,>=2.0
|
|
6
6
|
pandas<3,>=2.2
|
|
7
|
+
pint<0.26,>=0.24
|
|
7
8
|
plotly<7,>=5.24
|
|
8
9
|
psycopg[binary]<4,>=3.2.9
|
|
9
10
|
|
|
@@ -15,6 +16,12 @@ build>=1.2
|
|
|
15
16
|
mypy==1.15.0
|
|
16
17
|
ruff==0.11.2
|
|
17
18
|
|
|
19
|
+
[docs]
|
|
20
|
+
MartinPdeS-docs>=0.1.4
|
|
21
|
+
|
|
22
|
+
[documentation]
|
|
23
|
+
MartinPdeS-docs>=0.1.4
|
|
24
|
+
|
|
18
25
|
[testing]
|
|
19
26
|
pytest>=8.0
|
|
20
27
|
pytest-cov>=5.0
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
".github/workflows/deploy_PyPi.yml",
|
|
7
7
|
".github/workflows/deploy_anaconda.yml",
|
|
8
8
|
".github/workflows/deploy_coverage.yml",
|
|
9
|
+
".github/workflows/deploy_documentation.yml",
|
|
9
10
|
".github/workflows/quality.yml",
|
|
10
11
|
".github/workflows/tests.yml",
|
|
11
12
|
".gitignore",
|
|
@@ -75,6 +76,16 @@
|
|
|
75
76
|
"PyMieSimX/gui/validation.py",
|
|
76
77
|
"README.rst",
|
|
77
78
|
"conda.recipe/meta.yaml",
|
|
79
|
+
"docs/source/_static/favicon.svg",
|
|
80
|
+
"docs/source/_static/logo.svg",
|
|
81
|
+
"docs/source/api.rst",
|
|
82
|
+
"docs/source/conf.py",
|
|
83
|
+
"docs/source/contributing.rst",
|
|
84
|
+
"docs/source/getting_started.rst",
|
|
85
|
+
"docs/source/gui.rst",
|
|
86
|
+
"docs/source/how_it_works.rst",
|
|
87
|
+
"docs/source/index.rst",
|
|
88
|
+
"docs/source/sharing.rst",
|
|
78
89
|
"makefile",
|
|
79
90
|
"pyproject.toml",
|
|
80
91
|
"pytest.ini",
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
PyMieSimX
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
.. image:: docs/source/_static/logo.svg
|
|
5
|
+
:alt: PyMieSimX
|
|
6
|
+
:align: center
|
|
7
|
+
:width: 420px
|
|
8
|
+
|
|
4
9
|
PyMieSimX is the standalone graphical interface for `PyMieSim
|
|
5
10
|
<https://github.com/MartinPdeS/PyMieSim>`_. It provides a Dash application for
|
|
6
11
|
configuring optical setups, running parameter sweeps, exploring individual
|
|
@@ -7,6 +7,7 @@ source:
|
|
|
7
7
|
|
|
8
8
|
build:
|
|
9
9
|
number: 0
|
|
10
|
+
string: py{{ PY_VER | replace('.', '') }}_{{ PKG_BUILDNUM }}
|
|
10
11
|
script_env:
|
|
11
12
|
- SETUPTOOLS_SCM_PRETEND_VERSION={{ GIT_DESCRIBE_TAG | replace("v", "") }}
|
|
12
13
|
entry_points:
|
|
@@ -27,6 +28,7 @@ requirements:
|
|
|
27
28
|
- gunicorn >=23.0.0,<24 # [not win]
|
|
28
29
|
- numpy >=2.0,<3
|
|
29
30
|
- pandas >=2.2,<3
|
|
31
|
+
- pint >=0.24,<0.26
|
|
30
32
|
- plotly >=5.24,<7
|
|
31
33
|
- psycopg >=3.2.9,<4
|
|
32
34
|
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="PMS favicon">
|
|
3
|
+
<title>PMS</title>
|
|
4
|
+
<rect width="64" height="64" rx="12" fill="#000000"/>
|
|
5
|
+
<text x="32" y="41" text-anchor="middle" fill="#2f80ff" font-family="Arial, Helvetica, sans-serif" font-size="24" font-weight="800" letter-spacing="1">PMS</text>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg"
|
|
3
|
+
width="1100" height="400"
|
|
4
|
+
viewBox="200 50 700 400"
|
|
5
|
+
role="img"
|
|
6
|
+
aria-label="PyMieSim Flow-cytometry Calibration logo">
|
|
7
|
+
<title>PyMieSim Flow-cytometry Calibration</title>
|
|
8
|
+
<style>
|
|
9
|
+
.logo-main {
|
|
10
|
+
font-family: "Avenir Next", "Century Gothic", Futura, Montserrat, Arial, serif;
|
|
11
|
+
font-size: 186px;
|
|
12
|
+
font-weight: 560;
|
|
13
|
+
letter-spacing: -3px;
|
|
14
|
+
fill: #26272a;
|
|
15
|
+
}
|
|
16
|
+
.logo-subtitle {
|
|
17
|
+
font-family: "Avenir Next", "Century Gothic", Futura, Montserrat, Arial, sans-serif;
|
|
18
|
+
font-size: 55px;
|
|
19
|
+
font-weight: 350;
|
|
20
|
+
letter-spacing: -1.2px;
|
|
21
|
+
fill: #26272a;
|
|
22
|
+
text-anchor: end;
|
|
23
|
+
}
|
|
24
|
+
</style>
|
|
25
|
+
|
|
26
|
+
<text class="logo-main" x="35" y="290"><tspan>P</tspan><tspan dx="9">yMieSim</tspan></text>
|
|
27
|
+
|
|
28
|
+
<!-- Original blue/cyan chevron X preserved as vector paths, shifted slightly right for better spacing -->
|
|
29
|
+
<g transform="translate(-108,0)">
|
|
30
|
+
<path d="m 975.8673,149.6464 h 26 l 64,88 -64,88 h -26 l 64,-88 z"
|
|
31
|
+
fill="#2d6df6"/>
|
|
32
|
+
<path d="m 1135.8673,149.6464 h 28 l -64,88 64,88 h -28 l -62,-88 z"
|
|
33
|
+
fill="#16c9dc"/>
|
|
34
|
+
</g>
|
|
35
|
+
|
|
36
|
+
<text class="logo-subtitle" x="1078" y="397">Light Scattering Simulation</text>
|
|
37
|
+
<line x1="460" y1="416" x2="1078" y2="416"
|
|
38
|
+
stroke="#26272a" stroke-width="5" stroke-linecap="butt" />
|
|
39
|
+
</svg>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Python API
|
|
2
|
+
==========
|
|
3
|
+
|
|
4
|
+
The top-level API is independent of the Dash server and is useful in scripts,
|
|
5
|
+
notebooks, and automated workflows.
|
|
6
|
+
|
|
7
|
+
.. autosummary::
|
|
8
|
+
:toctree: generated
|
|
9
|
+
|
|
10
|
+
PyMieSimX.api.run_experiment
|
|
11
|
+
PyMieSimX.api.compute_population_optics
|
|
12
|
+
PyMieSimX.api.validate_experiment_inputs
|
|
13
|
+
PyMieSimX.api.available_measures
|
|
14
|
+
PyMieSimX.api.export_result_to_csv
|
|
15
|
+
PyMieSimX.api.export_single_result_to_csv
|
|
16
|
+
PyMieSimX.api.export_population_to_csv
|
|
17
|
+
PyMieSimX.api.estimate_result_size
|
|
18
|
+
PyMieSimX.api.estimate_sweep_size
|
|
19
|
+
|
|
20
|
+
API module
|
|
21
|
+
----------
|
|
22
|
+
|
|
23
|
+
.. automodule:: PyMieSimX.api
|
|
24
|
+
:no-members:
|
|
25
|
+
:show-inheritance:
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""Sphinx configuration for PyMieSimX."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import subprocess
|
|
5
|
+
import sys
|
|
6
|
+
from importlib.metadata import PackageNotFoundError, version as distribution_version
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
from martinpdes_docs import configure
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# API autodoc imports the calculation services, which resolve named PyOptik
|
|
13
|
+
# materials. Populate the catalogue on a fresh documentation runner.
|
|
14
|
+
try:
|
|
15
|
+
from PyOptik.directories import user_data_path
|
|
16
|
+
except ImportError:
|
|
17
|
+
user_data_path = None
|
|
18
|
+
else:
|
|
19
|
+
catalog_path = Path(user_data_path) / "rii" / "catalog-nk.yml"
|
|
20
|
+
if not catalog_path.is_file():
|
|
21
|
+
subprocess.run(
|
|
22
|
+
[sys.executable, "-m", "PyOptik", "setup", "--no-progress"],
|
|
23
|
+
check=True,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
project = "PyMieSimX"
|
|
28
|
+
package = "PyMieSimX"
|
|
29
|
+
repository = "MartinPdeS/PyMieSimX"
|
|
30
|
+
author = "Martin Poinsinet de Sivry-Houle"
|
|
31
|
+
|
|
32
|
+
try:
|
|
33
|
+
installed_version = distribution_version(package)
|
|
34
|
+
except PackageNotFoundError:
|
|
35
|
+
installed_version = "latest"
|
|
36
|
+
|
|
37
|
+
version = os.getenv("tag", installed_version)
|
|
38
|
+
|
|
39
|
+
# PyMieSimX documents a stable Python API and its Dash application; it does
|
|
40
|
+
# not currently have executable gallery examples.
|
|
41
|
+
globals().update(
|
|
42
|
+
configure(
|
|
43
|
+
project=project,
|
|
44
|
+
package=package,
|
|
45
|
+
author=author,
|
|
46
|
+
repository=repository,
|
|
47
|
+
version=version,
|
|
48
|
+
logo="_static/logo.svg",
|
|
49
|
+
favicon="_static/favicon.svg",
|
|
50
|
+
extensions=[
|
|
51
|
+
"sphinx.ext.autodoc",
|
|
52
|
+
"sphinx.ext.autosummary",
|
|
53
|
+
"sphinx.ext.intersphinx",
|
|
54
|
+
"sphinx.ext.napoleon",
|
|
55
|
+
"sphinx.ext.viewcode",
|
|
56
|
+
"sphinx.ext.todo",
|
|
57
|
+
"sphinx_design",
|
|
58
|
+
],
|
|
59
|
+
)
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
autodoc_default_options.update({"members": True})
|
|
63
|
+
html_context.update({"doc_path": "docs/source", "default_mode": "dark"})
|
|
64
|
+
|
|
65
|
+
intersphinx_mapping = {
|
|
66
|
+
"numpy": ("https://numpy.org/devdocs", None),
|
|
67
|
+
"pandas": ("https://pandas.pydata.org/docs", None),
|
|
68
|
+
"plotly": ("https://plotly.com/python-api-reference", None),
|
|
69
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Contributing
|
|
2
|
+
============
|
|
3
|
+
|
|
4
|
+
Install the development dependencies in an editable environment::
|
|
5
|
+
|
|
6
|
+
python -m pip install -e ".[testing,dev,docs]"
|
|
7
|
+
|
|
8
|
+
Run the checks locally with::
|
|
9
|
+
|
|
10
|
+
make quality
|
|
11
|
+
make test
|
|
12
|
+
make docs
|
|
13
|
+
|
|
14
|
+
The project uses Ruff for formatting and linting, mypy for selected typed
|
|
15
|
+
modules, and pytest for the GUI and API tests. Pull requests run these checks
|
|
16
|
+
through GitHub Actions.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
Getting started
|
|
2
|
+
===============
|
|
3
|
+
|
|
4
|
+
Installation
|
|
5
|
+
------------
|
|
6
|
+
|
|
7
|
+
Install the application from PyPI::
|
|
8
|
+
|
|
9
|
+
python -m pip install PyMieSimX
|
|
10
|
+
|
|
11
|
+
PyMieSimX uses PyOptik's material catalogue. Initialize the local catalogue
|
|
12
|
+
explicitly when setting up a new environment::
|
|
13
|
+
|
|
14
|
+
python -m PyOptik setup --no-progress
|
|
15
|
+
|
|
16
|
+
Start the dashboard with::
|
|
17
|
+
|
|
18
|
+
pymiesimx
|
|
19
|
+
|
|
20
|
+
The command accepts ``--host``, ``--port``, ``--no-browser``, and ``--debug``.
|
|
21
|
+
Run ``pymiesimx --help`` for the complete list.
|
|
22
|
+
|
|
23
|
+
First workflow
|
|
24
|
+
--------------
|
|
25
|
+
|
|
26
|
+
#. Open **Single scatterer** to configure a wavelength, source, particle, and
|
|
27
|
+
detector.
|
|
28
|
+
#. Choose a named material from PyOptik or enter a complex refractive index.
|
|
29
|
+
#. Select a measure such as ``Qsca`` or ``Qext`` and press **Run**.
|
|
30
|
+
#. Use the plot controls to inspect the result and export the data as CSV.
|
|
31
|
+
|
|
32
|
+
For parameter studies, use **Parameter scan** to select the varied quantities
|
|
33
|
+
and their ranges. PyMieSimX validates the sweep size before submitting it to a
|
|
34
|
+
bounded background worker, so the interface remains responsive while a run is
|
|
35
|
+
queued or executing.
|
|
36
|
+
|
|
37
|
+
Python API
|
|
38
|
+
----------
|
|
39
|
+
|
|
40
|
+
The calculation layer is available without creating a Dash application::
|
|
41
|
+
|
|
42
|
+
from PyMieSimX import run_experiment
|
|
43
|
+
|
|
44
|
+
result = run_experiment(
|
|
45
|
+
source_type="GaussianSet",
|
|
46
|
+
source_values={
|
|
47
|
+
"wavelength": "650",
|
|
48
|
+
"polarization": "0",
|
|
49
|
+
"optical_power": "1e-3",
|
|
50
|
+
"numerical_aperture": "0.2",
|
|
51
|
+
},
|
|
52
|
+
scatterer_type="SphereSet",
|
|
53
|
+
scatterer_values={"diameter": "500", "material": "1.4", "medium": "1.0"},
|
|
54
|
+
detector_type="None",
|
|
55
|
+
detector_values={},
|
|
56
|
+
measure="Qsca",
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
See :doc:`api` for result-size validation, multiple measures, population
|
|
60
|
+
optics, and CSV export helpers.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Graphical interface
|
|
2
|
+
===================
|
|
3
|
+
|
|
4
|
+
The optional Dash interface is exposed through two helpers:
|
|
5
|
+
|
|
6
|
+
``create_dash_app``
|
|
7
|
+
Create the configured Dash application for embedding in another service.
|
|
8
|
+
|
|
9
|
+
``OpticalSetupGUI``
|
|
10
|
+
Construct the application wrapper used by the ``pymiesimx`` command.
|
|
11
|
+
|
|
12
|
+
These objects are imported lazily, so importing :mod:`PyMieSimX` for its
|
|
13
|
+
calculation API does not start a web server. The command-line entry point is
|
|
14
|
+
the recommended way to launch the complete interface.
|
|
15
|
+
|
|
16
|
+
.. automodule:: PyMieSimX.gui.interface
|
|
17
|
+
:members: create_dash_app, OpticalSetupGUI
|
|
18
|
+
:show-inheritance:
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
How it works
|
|
2
|
+
============
|
|
3
|
+
|
|
4
|
+
PyMieSimX separates the interactive application from the optical calculations.
|
|
5
|
+
The Dash pages collect user input, validate it, and pass normalized values to
|
|
6
|
+
PyMieSim. Results are converted into tables and Plotly figures for the browser.
|
|
7
|
+
|
|
8
|
+
The main pieces are:
|
|
9
|
+
|
|
10
|
+
* **Setup and validation** normalize units, material choices, source settings,
|
|
11
|
+
detector settings, and sweep bounds before a calculation starts.
|
|
12
|
+
* **PyMieSim** constructs the scatterer, source, and detector objects and
|
|
13
|
+
computes the requested observables.
|
|
14
|
+
* **Background jobs** keep larger parameter scans away from the request thread
|
|
15
|
+
and report queued, running, completed, and failed states to the UI.
|
|
16
|
+
* **Result guards** estimate dataframe and serialized payload sizes before a
|
|
17
|
+
run, then check the actual result before it is sent to the browser.
|
|
18
|
+
* **Sharing** stores a validated configuration in a URL. Opening a shared URL
|
|
19
|
+
restores the inputs and runs the setup again with the installed dependencies.
|
|
20
|
+
|
|
21
|
+
Material names are resolved by PyOptik and therefore follow the catalogue
|
|
22
|
+
available in the current environment. A direct ``n+ik`` value can be used when
|
|
23
|
+
an entry is not available.
|
|
24
|
+
|
|
25
|
+
Ensemble optics
|
|
26
|
+
---------------
|
|
27
|
+
|
|
28
|
+
The ensemble workflow evaluates a population of homogeneous spherical
|
|
29
|
+
particles at one wavelength. It supports monodisperse, truncated Gaussian,
|
|
30
|
+
lognormal, and uniform number-based diameter distributions. Cross sections are
|
|
31
|
+
averaged over the sampled population; effective anisotropy is weighted by
|
|
32
|
+
scattering cross section, and population albedo is the ratio of mean scattering
|
|
33
|
+
to mean extinction cross section.
|
|
34
|
+
|
|
35
|
+
Use dilute-population assumptions: particle interactions, multiple scattering,
|
|
36
|
+
and host-medium absorption are outside this model.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
PyMieSimX
|
|
2
|
+
=========
|
|
3
|
+
|
|
4
|
+
.. image:: _static/logo.svg
|
|
5
|
+
:alt: PyMieSimX
|
|
6
|
+
:align: center
|
|
7
|
+
:width: 520px
|
|
8
|
+
|
|
9
|
+
PyMieSimX is a Dash interface for configuring and exploring
|
|
10
|
+
`PyMieSim <https://martinpdes.github.io/PyMieSim/>`_ scattering simulations.
|
|
11
|
+
Use the web interface for interactive work, or call the lightweight Python API
|
|
12
|
+
from scripts and notebooks.
|
|
13
|
+
|
|
14
|
+
.. toctree::
|
|
15
|
+
:maxdepth: 2
|
|
16
|
+
:caption: User guide
|
|
17
|
+
|
|
18
|
+
getting_started
|
|
19
|
+
how_it_works
|
|
20
|
+
sharing
|
|
21
|
+
|
|
22
|
+
.. toctree::
|
|
23
|
+
:maxdepth: 2
|
|
24
|
+
:caption: Reference
|
|
25
|
+
|
|
26
|
+
api
|
|
27
|
+
gui
|
|
28
|
+
|
|
29
|
+
.. toctree::
|
|
30
|
+
:maxdepth: 1
|
|
31
|
+
:caption: Project
|
|
32
|
+
|
|
33
|
+
contributing
|
|
34
|
+
|
|
35
|
+
Key features
|
|
36
|
+
------------
|
|
37
|
+
|
|
38
|
+
* Configure single scatterer, parameter-scan, and ensemble optics studies.
|
|
39
|
+
* Explore scattering, absorption, extinction, efficiencies, and angular plots.
|
|
40
|
+
* Share a complete simulation setup with a URL and export computed results as
|
|
41
|
+
CSV files.
|
|
42
|
+
* Use the same calculations without starting Dash through the Python API.
|
|
43
|
+
|
|
44
|
+
The scientific solver and material catalogue are provided by PyMieSim and
|
|
45
|
+
PyOptik. PyMieSimX focuses on the user interface, validation, plotting, and
|
|
46
|
+
export workflows around them.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Sharing simulations
|
|
2
|
+
===================
|
|
3
|
+
|
|
4
|
+
Use **Copy simulation link** in Single scatterer, Parameter scan, or Ensemble
|
|
5
|
+
optics to share the current setup. A link contains the configuration, sweep
|
|
6
|
+
ranges, selected measures, and plot settings; it does not contain a snapshot of
|
|
7
|
+
the computed result.
|
|
8
|
+
|
|
9
|
+
When a link is opened, PyMieSimX restores the inputs and recalculates the
|
|
10
|
+
simulation with the installed PyMieSim and PyOptik versions. Results can change
|
|
11
|
+
when those dependencies or material data are updated. Use **Run** after editing
|
|
12
|
+
any restored value.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PYTHON ?= python3
|
|
2
2
|
BUILD_DIR ?= build
|
|
3
3
|
|
|
4
|
-
.PHONY: quality test build install editable run docker-build docker-run clean release tag patch minor major
|
|
4
|
+
.PHONY: quality test docs build install editable run docker-build docker-run clean release tag patch minor major
|
|
5
5
|
|
|
6
6
|
quality:
|
|
7
7
|
$(PYTHON) -m ruff check PyMieSimX tests
|
|
@@ -10,6 +10,9 @@ quality:
|
|
|
10
10
|
test:
|
|
11
11
|
$(PYTHON) -m pytest
|
|
12
12
|
|
|
13
|
+
docs:
|
|
14
|
+
$(PYTHON) -m sphinx -M html docs/source docs/_build
|
|
15
|
+
|
|
13
16
|
build:
|
|
14
17
|
$(PYTHON) -m build --outdir $(BUILD_DIR)
|
|
15
18
|
|
|
@@ -20,6 +20,7 @@ dependencies = [
|
|
|
20
20
|
"gunicorn>=23.0.0,<24",
|
|
21
21
|
"numpy>=2.0,<3",
|
|
22
22
|
"pandas>=2.2,<3",
|
|
23
|
+
"pint>=0.24,<0.26",
|
|
23
24
|
"plotly>=5.24,<7",
|
|
24
25
|
"psycopg[binary]>=3.2.9,<4",
|
|
25
26
|
]
|
|
@@ -51,6 +52,12 @@ dev = [
|
|
|
51
52
|
"mypy==1.15.0",
|
|
52
53
|
"ruff==0.11.2",
|
|
53
54
|
]
|
|
55
|
+
docs = [
|
|
56
|
+
"MartinPdeS-docs>=0.1.4",
|
|
57
|
+
]
|
|
58
|
+
documentation = [
|
|
59
|
+
"MartinPdeS-docs>=0.1.4",
|
|
60
|
+
]
|
|
54
61
|
|
|
55
62
|
[tool.setuptools.packages.find]
|
|
56
63
|
include = ["PyMieSimX*"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymiesimx-0.4.0 → pymiesimx-0.4.3}/PyMieSimX/gui/pages/experiment/sections/configuration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|