PyOptik 1.4.1.post0__tar.gz → 1.6.0.post0__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.
- pyoptik-1.4.1.post0/.github/workflows/coverage.yml → pyoptik-1.6.0.post0/.github/workflows/deploy_coverage.yml +11 -6
- pyoptik-1.6.0.post0/.github/workflows/deploy_documentation.yml +57 -0
- pyoptik-1.6.0.post0/.github/workflows/deploy_workflow.yml +30 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PKG-INFO +8 -7
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/__init__.py +4 -2
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/_version.py +2 -2
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/base_class.py +1 -1
- pyoptik-1.6.0.post0/PyOptik/material.py +61 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/sellmeier_class.py +2 -2
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/tabulated_class.py +2 -2
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik.egg-info/PKG-INFO +8 -7
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik.egg-info/SOURCES.txt +2 -2
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/README.rst +7 -6
- {pyoptik-1.4.1.post0/docs/source/gallery → pyoptik-1.6.0.post0/docs/examples}/plot_bk7.py +2 -2
- {pyoptik-1.4.1.post0/docs/source/gallery → pyoptik-1.6.0.post0/docs/examples}/plot_sf5.py +2 -2
- {pyoptik-1.4.1.post0/docs/source/gallery → pyoptik-1.6.0.post0/docs/examples}/plot_silica.py +2 -2
- {pyoptik-1.4.1.post0/docs/source/gallery → pyoptik-1.6.0.post0/docs/examples}/plot_silver.py +2 -2
- {pyoptik-1.4.1.post0/docs/source/gallery → pyoptik-1.6.0.post0/docs/examples}/plot_water.py +2 -2
- pyoptik-1.6.0.post0/tests/test_usual_material.py +16 -0
- pyoptik-1.4.1.post0/.github/workflows/deploy_workflow.yml +0 -41
- pyoptik-1.4.1.post0/PyOptik/material.py +0 -129
- pyoptik-1.4.1.post0/docs/deprecated/experiment_material.py +0 -110
- pyoptik-1.4.1.post0/tests/test_usual_material.py +0 -25
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/.github/dependabot.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/.gitignore +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/.readthedocs.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/LICENSE +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/__main__.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/__init__.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/BAK1.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/BK7.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/SF5.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/ZBLAN.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/__init__.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/argon.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/crown.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/default.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/flint.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/fluorine_doped_silica_1%.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/fluorine_doped_silica_2%.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/fused_silica.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/germanium.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/lithium_niobate.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/polystyren.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/silica.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/silicon.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/soda_lime_glass.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/sellmeier/water.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/tabulated/__init__.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/tabulated/aluminium.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/tabulated/calcium.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/tabulated/copper.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/tabulated/default.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/tabulated/gold.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/tabulated/iron.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/tabulated/nickel.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/tabulated/silver.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/tabulated/sodium.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/data/tabulated/zinc.yml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/directories.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik/utils.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik.egg-info/dependency_links.txt +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik.egg-info/requires.txt +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/PyOptik.egg-info/top_level.txt +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/Makefile +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/examples/README.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/examples/create_sellmeier_file.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/examples/create_tabulated_file.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/examples/download_yml_file.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/images/example_bk7.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/images/logo.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/make.bat +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/_static/default.css +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/code.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/conf.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/add_material.ipynb +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/add_material.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/add_material.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/add_material_codeobj.pickle +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/create_sellmeier_file.ipynb +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/create_sellmeier_file.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/create_sellmeier_file.py.md5 +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/create_sellmeier_file.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/create_sellmeier_file_codeobj.pickle +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/create_tabulated_file.ipynb +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/create_tabulated_file.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/create_tabulated_file.py.md5 +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/create_tabulated_file.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/create_tabulated_file_codeobj.pickle +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/download_yml_file.ipynb +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/download_yml_file.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/download_yml_file.py.md5 +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/download_yml_file.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/download_yml_file_codeobj.pickle +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/get_values.ipynb +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/get_values.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/get_values.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/get_values_codeobj.pickle +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/sphx_glr_create_sellmeier_file_001.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/sphx_glr_create_tabulated_file_001.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/sphx_glr_download_yml_file_001.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/sphx_glr_plot_bk7_001.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/sphx_glr_plot_sellmeier_0_001.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/sphx_glr_plot_sellmeier_1_001.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/sphx_glr_plot_sf5_001.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/sphx_glr_plot_silica_001.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/sphx_glr_plot_silver_001.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/sphx_glr_plot_water_001.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/thumb/sphx_glr_add_material_thumb.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/thumb/sphx_glr_create_sellmeier_file_thumb.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/thumb/sphx_glr_create_tabulated_file_thumb.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/thumb/sphx_glr_download_yml_file_thumb.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/thumb/sphx_glr_get_values_thumb.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/thumb/sphx_glr_plot_bk7_thumb.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/thumb/sphx_glr_plot_sellmeier_0_thumb.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/thumb/sphx_glr_plot_sellmeier_1_thumb.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/thumb/sphx_glr_plot_sf5_thumb.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/thumb/sphx_glr_plot_silica_thumb.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/thumb/sphx_glr_plot_silver_thumb.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/images/thumb/sphx_glr_plot_water_thumb.png +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/index.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_bk7.ipynb +0 -0
- {pyoptik-1.4.1.post0/docs/examples → pyoptik-1.6.0.post0/docs/source/gallery}/plot_bk7.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_bk7.py.md5 +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_bk7.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_bk7_codeobj.pickle +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sellmeier_0.ipynb +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sellmeier_0.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sellmeier_0.py.md5 +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sellmeier_0.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sellmeier_0_codeobj.pickle +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sellmeier_1.ipynb +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sellmeier_1.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sellmeier_1.py.md5 +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sellmeier_1.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sellmeier_1_codeobj.pickle +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sf5.ipynb +0 -0
- {pyoptik-1.4.1.post0/docs/examples → pyoptik-1.6.0.post0/docs/source/gallery}/plot_sf5.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sf5.py.md5 +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sf5.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_sf5_codeobj.pickle +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_silica.ipynb +0 -0
- {pyoptik-1.4.1.post0/docs/examples → pyoptik-1.6.0.post0/docs/source/gallery}/plot_silica.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_silica.py.md5 +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_silica.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_silica_codeobj.pickle +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_silver.ipynb +0 -0
- {pyoptik-1.4.1.post0/docs/examples → pyoptik-1.6.0.post0/docs/source/gallery}/plot_silver.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_silver.py.md5 +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_silver.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_silver_codeobj.pickle +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_water.ipynb +0 -0
- {pyoptik-1.4.1.post0/docs/examples → pyoptik-1.6.0.post0/docs/source/gallery}/plot_water.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_water.py.md5 +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_water.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/plot_water_codeobj.pickle +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/gallery/sg_execution_times.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/index.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/docs/source/references.rst +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/pyproject.toml +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/setup.cfg +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/tests/__init__.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/tests/test_sellmeier.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/tests/test_tabulated.py +0 -0
- {pyoptik-1.4.1.post0 → pyoptik-1.6.0.post0}/tests/test_utils.py +0 -0
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
# .github/workflows/
|
|
1
|
+
# .github/workflows/deploy_coverage.yml
|
|
2
2
|
name: Coverage
|
|
3
3
|
|
|
4
4
|
on:
|
|
5
|
-
pull_request:
|
|
6
|
-
branches: "master"
|
|
7
5
|
push:
|
|
8
|
-
branches: "master"
|
|
6
|
+
branches: [ "master" ]
|
|
7
|
+
tags:
|
|
8
|
+
- '*'
|
|
9
|
+
pull_request:
|
|
10
|
+
branches: [ "master" ]
|
|
11
|
+
|
|
9
12
|
|
|
10
13
|
jobs:
|
|
11
14
|
coverage:
|
|
@@ -14,14 +17,14 @@ jobs:
|
|
|
14
17
|
permissions:
|
|
15
18
|
pull-requests: write
|
|
16
19
|
contents: write
|
|
20
|
+
|
|
17
21
|
steps:
|
|
18
|
-
- name: "Set-up: Python
|
|
22
|
+
- name: "Set-up: Python 3.10"
|
|
19
23
|
uses: actions/setup-python@v4
|
|
20
24
|
id: cp310
|
|
21
25
|
with:
|
|
22
26
|
python-version: "3.10"
|
|
23
27
|
|
|
24
|
-
|
|
25
28
|
- name: "Install: Dependencies for headless server"
|
|
26
29
|
shell: bash
|
|
27
30
|
run: |
|
|
@@ -42,8 +45,10 @@ jobs:
|
|
|
42
45
|
pytest
|
|
43
46
|
|
|
44
47
|
- name: Coverage comment
|
|
48
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
|
45
49
|
uses: py-cov-action/python-coverage-comment-action@v3
|
|
46
50
|
with:
|
|
51
|
+
GITHUB_PR_RUN_ID: ${{ github.event.workflow_run.id }}
|
|
47
52
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
48
53
|
MINIMUM_GREEN: 90
|
|
49
54
|
MINIMUM_ORANGE: 50
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# .github/workflows/deploy_documentation.yml
|
|
2
|
+
name: Documentation
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
branches: [ "master" ]
|
|
7
|
+
tags:
|
|
8
|
+
- '*'
|
|
9
|
+
pull_request:
|
|
10
|
+
branches: [ "master" ]
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
documentation:
|
|
14
|
+
name: Run the documentation building tools
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
permissions:
|
|
17
|
+
pull-requests: write
|
|
18
|
+
contents: write
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
- name: "Set-up: Python 3.10"
|
|
22
|
+
uses: actions/setup-python@v4
|
|
23
|
+
id: cp310
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.10"
|
|
26
|
+
|
|
27
|
+
- name: "Install: Dependencies for headless server"
|
|
28
|
+
shell: bash
|
|
29
|
+
run: |
|
|
30
|
+
sudo apt-get update
|
|
31
|
+
sudo apt-get install libgl1-mesa-glx xvfb
|
|
32
|
+
|
|
33
|
+
- name: "Checkout requirements and files for testing"
|
|
34
|
+
uses: actions/checkout@v4
|
|
35
|
+
with:
|
|
36
|
+
fetch-depth: 0
|
|
37
|
+
submodules: true
|
|
38
|
+
|
|
39
|
+
- name: Install everything, run the tests, produce the .coverage file
|
|
40
|
+
run: |
|
|
41
|
+
python -m pip install wheel build
|
|
42
|
+
python -m build --wheel
|
|
43
|
+
python -m pip install .[documentation]
|
|
44
|
+
|
|
45
|
+
- name: "Build: documentation"
|
|
46
|
+
shell: bash
|
|
47
|
+
run: |
|
|
48
|
+
make -C docs html
|
|
49
|
+
|
|
50
|
+
- name: "Upload: GitHub Pages"
|
|
51
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
|
52
|
+
uses: crazy-max/ghaction-github-pages@v3
|
|
53
|
+
with:
|
|
54
|
+
target_branch: gh-pages
|
|
55
|
+
build_dir: docs/build/html
|
|
56
|
+
env:
|
|
57
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Deploy Wheel
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ "master" ]
|
|
6
|
+
tags:
|
|
7
|
+
- '*'
|
|
8
|
+
pull_request:
|
|
9
|
+
branches: [ "master" ]
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: write
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
build_pure_python:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: MartinPdeS/MPSActions/build_pure_python_package@master
|
|
19
|
+
with:
|
|
20
|
+
python-version: '3.10'
|
|
21
|
+
|
|
22
|
+
publish_wheel:
|
|
23
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
|
24
|
+
needs: [build_pure_python]
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
steps:
|
|
27
|
+
- uses: MartinPdeS/MPSActions/publish_pypi@master
|
|
28
|
+
with:
|
|
29
|
+
python-version: "3.10"
|
|
30
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PyOptik
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.6.0.post0
|
|
4
4
|
Summary: A package for refractive index values.
|
|
5
5
|
Author-email: Martin Poinsinet de Sivry-Houle <martin.poinsinet.de.sivry@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -88,10 +88,10 @@ After installing PyOptik, you can easily access material properties:
|
|
|
88
88
|
|
|
89
89
|
.. code:: python
|
|
90
90
|
|
|
91
|
-
from PyOptik import
|
|
91
|
+
from PyOptik import Material
|
|
92
92
|
|
|
93
93
|
# Access the refractive index of BK7 glass
|
|
94
|
-
bk7 =
|
|
94
|
+
bk7 = Material.BK7
|
|
95
95
|
n = bk7.compute_refractive_index(0.55e-6)
|
|
96
96
|
print(f"Refractive index at 0.55 µm: {n}")
|
|
97
97
|
|
|
@@ -104,13 +104,13 @@ Here is a quick example demonstrating how to use PyOptik to retrieve and plot th
|
|
|
104
104
|
.. code:: python
|
|
105
105
|
|
|
106
106
|
import numpy as np
|
|
107
|
-
from PyOptik import
|
|
107
|
+
from PyOptik import Material
|
|
108
108
|
|
|
109
109
|
# Define wavelength range
|
|
110
110
|
wavelengths = np.linspace(0.3e-6, 2.5e-6, 100)
|
|
111
111
|
|
|
112
112
|
# Retrieve refractive index for BK7 glass
|
|
113
|
-
bk7 =
|
|
113
|
+
bk7 = Material.BK7
|
|
114
114
|
n_values = bk7.compute_refractive_index(wavelengths)
|
|
115
115
|
|
|
116
116
|
# Plot the results
|
|
@@ -178,8 +178,9 @@ As of 2024, PyOptik is still under development. If you would like to collaborate
|
|
|
178
178
|
|
|
179
179
|
.. |example_bk7| image:: https://github.com/MartinPdeS/PyOptik/blob/master/docs/images/example_bk7.png
|
|
180
180
|
|
|
181
|
-
.. |docs| image:: https://
|
|
182
|
-
:target: https://pyoptik.readthedocs.io/en/latest/
|
|
181
|
+
.. |docs| image:: https://github.com/martinpdes/pyoptik/actions/workflows/deploy_documentation.yml/badge.svg
|
|
182
|
+
:target: https://pyoptik.readthedocs.io/en/latest/code.html
|
|
183
|
+
:alt: Documentation Status
|
|
183
184
|
|
|
184
185
|
.. |PyPi| image:: https://badge.fury.io/py/pyoptik.svg
|
|
185
186
|
:target: https://badge.fury.io/py/pyoptik
|
|
@@ -6,6 +6,8 @@ except ImportError:
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
from .utils import build_default_library
|
|
9
|
-
from .material import
|
|
9
|
+
from .material import Material
|
|
10
10
|
from .tabulated_class import TabulatedMaterial
|
|
11
|
-
from .sellmeier_class import SellmeierMaterial
|
|
11
|
+
from .sellmeier_class import SellmeierMaterial
|
|
12
|
+
|
|
13
|
+
Material = Material()
|
|
@@ -12,5 +12,5 @@ __version__: str
|
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
|
13
13
|
version_tuple: VERSION_TUPLE
|
|
14
14
|
|
|
15
|
-
__version__ = version = '1.
|
|
16
|
-
__version_tuple__ = version_tuple = (1,
|
|
15
|
+
__version__ = version = '1.6.0.post0'
|
|
16
|
+
__version_tuple__ = version_tuple = (1, 6, 0)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
|
|
4
|
+
from typing import Union
|
|
5
|
+
from PyOptik.sellmeier_class import SellmeierMaterial
|
|
6
|
+
from PyOptik.tabulated_class import TabulatedMaterial
|
|
7
|
+
from PyOptik import data
|
|
8
|
+
|
|
9
|
+
class staticproperty(property):
|
|
10
|
+
"""
|
|
11
|
+
A descriptor that mimics the behavior of a @property but for class-level access.
|
|
12
|
+
|
|
13
|
+
This allows a method to be accessed like a static property without the need to instantiate the class.
|
|
14
|
+
"""
|
|
15
|
+
def __get__(self, owner_self, owner_cls):
|
|
16
|
+
return self.fget()
|
|
17
|
+
|
|
18
|
+
class Material:
|
|
19
|
+
"""
|
|
20
|
+
A class representing common materials available in the PyOptik library.
|
|
21
|
+
|
|
22
|
+
This class provides easy access to a predefined list of materials, either through static properties or
|
|
23
|
+
a dynamic getter method. Materials are categorized into Sellmeier and Tabulated materials.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
all = [
|
|
27
|
+
'silver',
|
|
28
|
+
'gold',
|
|
29
|
+
'aluminium',
|
|
30
|
+
'copper',
|
|
31
|
+
'zinc',
|
|
32
|
+
'iron',
|
|
33
|
+
'argon',
|
|
34
|
+
'water',
|
|
35
|
+
'silicon',
|
|
36
|
+
'BK7',
|
|
37
|
+
'fused_silica',
|
|
38
|
+
'germanium',
|
|
39
|
+
'polystyren'
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
def __getattr__(self, material_name: str) -> Union[SellmeierMaterial, TabulatedMaterial]:
|
|
43
|
+
"""
|
|
44
|
+
Retrieve a material by name.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
material_name (str): The name of the material to retrieve.
|
|
48
|
+
|
|
49
|
+
Returns:
|
|
50
|
+
Union[SellmeierMaterial, TabulatedMaterial]: An instance of the material if found.
|
|
51
|
+
|
|
52
|
+
Raises:
|
|
53
|
+
FileNotFoundError: If the material is not found in either the Sellmeier or Tabulated lists.
|
|
54
|
+
"""
|
|
55
|
+
if material_name in data.sellmeier.material_list:
|
|
56
|
+
return SellmeierMaterial(material_name)
|
|
57
|
+
|
|
58
|
+
if material_name in data.tabulated.material_list:
|
|
59
|
+
return TabulatedMaterial(material_name)
|
|
60
|
+
|
|
61
|
+
raise FileNotFoundError(f'Material: [{material_name}] could not be found.')
|
|
@@ -9,11 +9,11 @@ import yaml
|
|
|
9
9
|
from PyOptik.directories import sellmeier_data_path
|
|
10
10
|
import itertools
|
|
11
11
|
import warnings
|
|
12
|
-
from PyOptik.base_class import
|
|
12
|
+
from PyOptik.base_class import BaseMaterial
|
|
13
13
|
from MPSPlots.styles import mps
|
|
14
14
|
|
|
15
15
|
@dataclass
|
|
16
|
-
class SellmeierMaterial(
|
|
16
|
+
class SellmeierMaterial(BaseMaterial):
|
|
17
17
|
filename: str
|
|
18
18
|
coefficients: numpy.ndarray = field(init=False)
|
|
19
19
|
wavelength_range: Optional[Tuple[float, float]] = field(init=False)
|
|
@@ -8,12 +8,12 @@ import yaml
|
|
|
8
8
|
from scipy.interpolate import interp1d
|
|
9
9
|
import warnings
|
|
10
10
|
from PyOptik.directories import tabulated_data_path
|
|
11
|
-
from PyOptik.base_class import
|
|
11
|
+
from PyOptik.base_class import BaseMaterial
|
|
12
12
|
from MPSPlots.styles import mps
|
|
13
13
|
import matplotlib.pyplot as plt
|
|
14
14
|
|
|
15
15
|
@dataclass
|
|
16
|
-
class TabulatedMaterial(
|
|
16
|
+
class TabulatedMaterial(BaseMaterial):
|
|
17
17
|
filename: str
|
|
18
18
|
wavelength: numpy.ndarray = field(init=False)
|
|
19
19
|
n_values: numpy.ndarray = field(init=False)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PyOptik
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.6.0.post0
|
|
4
4
|
Summary: A package for refractive index values.
|
|
5
5
|
Author-email: Martin Poinsinet de Sivry-Houle <martin.poinsinet.de.sivry@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -88,10 +88,10 @@ After installing PyOptik, you can easily access material properties:
|
|
|
88
88
|
|
|
89
89
|
.. code:: python
|
|
90
90
|
|
|
91
|
-
from PyOptik import
|
|
91
|
+
from PyOptik import Material
|
|
92
92
|
|
|
93
93
|
# Access the refractive index of BK7 glass
|
|
94
|
-
bk7 =
|
|
94
|
+
bk7 = Material.BK7
|
|
95
95
|
n = bk7.compute_refractive_index(0.55e-6)
|
|
96
96
|
print(f"Refractive index at 0.55 µm: {n}")
|
|
97
97
|
|
|
@@ -104,13 +104,13 @@ Here is a quick example demonstrating how to use PyOptik to retrieve and plot th
|
|
|
104
104
|
.. code:: python
|
|
105
105
|
|
|
106
106
|
import numpy as np
|
|
107
|
-
from PyOptik import
|
|
107
|
+
from PyOptik import Material
|
|
108
108
|
|
|
109
109
|
# Define wavelength range
|
|
110
110
|
wavelengths = np.linspace(0.3e-6, 2.5e-6, 100)
|
|
111
111
|
|
|
112
112
|
# Retrieve refractive index for BK7 glass
|
|
113
|
-
bk7 =
|
|
113
|
+
bk7 = Material.BK7
|
|
114
114
|
n_values = bk7.compute_refractive_index(wavelengths)
|
|
115
115
|
|
|
116
116
|
# Plot the results
|
|
@@ -178,8 +178,9 @@ As of 2024, PyOptik is still under development. If you would like to collaborate
|
|
|
178
178
|
|
|
179
179
|
.. |example_bk7| image:: https://github.com/MartinPdeS/PyOptik/blob/master/docs/images/example_bk7.png
|
|
180
180
|
|
|
181
|
-
.. |docs| image:: https://
|
|
182
|
-
:target: https://pyoptik.readthedocs.io/en/latest/
|
|
181
|
+
.. |docs| image:: https://github.com/martinpdes/pyoptik/actions/workflows/deploy_documentation.yml/badge.svg
|
|
182
|
+
:target: https://pyoptik.readthedocs.io/en/latest/code.html
|
|
183
|
+
:alt: Documentation Status
|
|
183
184
|
|
|
184
185
|
.. |PyPi| image:: https://badge.fury.io/py/pyoptik.svg
|
|
185
186
|
:target: https://badge.fury.io/py/pyoptik
|
|
@@ -4,7 +4,8 @@ LICENSE
|
|
|
4
4
|
README.rst
|
|
5
5
|
pyproject.toml
|
|
6
6
|
.github/dependabot.yml
|
|
7
|
-
.github/workflows/
|
|
7
|
+
.github/workflows/deploy_coverage.yml
|
|
8
|
+
.github/workflows/deploy_documentation.yml
|
|
8
9
|
.github/workflows/deploy_workflow.yml
|
|
9
10
|
PyOptik/__init__.py
|
|
10
11
|
PyOptik/__main__.py
|
|
@@ -53,7 +54,6 @@ PyOptik/data/tabulated/sodium.yml
|
|
|
53
54
|
PyOptik/data/tabulated/zinc.yml
|
|
54
55
|
docs/Makefile
|
|
55
56
|
docs/make.bat
|
|
56
|
-
docs/deprecated/experiment_material.py
|
|
57
57
|
docs/examples/README.rst
|
|
58
58
|
docs/examples/create_sellmeier_file.py
|
|
59
59
|
docs/examples/create_tabulated_file.py
|
|
@@ -30,10 +30,10 @@ After installing PyOptik, you can easily access material properties:
|
|
|
30
30
|
|
|
31
31
|
.. code:: python
|
|
32
32
|
|
|
33
|
-
from PyOptik import
|
|
33
|
+
from PyOptik import Material
|
|
34
34
|
|
|
35
35
|
# Access the refractive index of BK7 glass
|
|
36
|
-
bk7 =
|
|
36
|
+
bk7 = Material.BK7
|
|
37
37
|
n = bk7.compute_refractive_index(0.55e-6)
|
|
38
38
|
print(f"Refractive index at 0.55 µm: {n}")
|
|
39
39
|
|
|
@@ -46,13 +46,13 @@ Here is a quick example demonstrating how to use PyOptik to retrieve and plot th
|
|
|
46
46
|
.. code:: python
|
|
47
47
|
|
|
48
48
|
import numpy as np
|
|
49
|
-
from PyOptik import
|
|
49
|
+
from PyOptik import Material
|
|
50
50
|
|
|
51
51
|
# Define wavelength range
|
|
52
52
|
wavelengths = np.linspace(0.3e-6, 2.5e-6, 100)
|
|
53
53
|
|
|
54
54
|
# Retrieve refractive index for BK7 glass
|
|
55
|
-
bk7 =
|
|
55
|
+
bk7 = Material.BK7
|
|
56
56
|
n_values = bk7.compute_refractive_index(wavelengths)
|
|
57
57
|
|
|
58
58
|
# Plot the results
|
|
@@ -120,8 +120,9 @@ As of 2024, PyOptik is still under development. If you would like to collaborate
|
|
|
120
120
|
|
|
121
121
|
.. |example_bk7| image:: https://github.com/MartinPdeS/PyOptik/blob/master/docs/images/example_bk7.png
|
|
122
122
|
|
|
123
|
-
.. |docs| image:: https://
|
|
124
|
-
:target: https://pyoptik.readthedocs.io/en/latest/
|
|
123
|
+
.. |docs| image:: https://github.com/martinpdes/pyoptik/actions/workflows/deploy_documentation.yml/badge.svg
|
|
124
|
+
:target: https://pyoptik.readthedocs.io/en/latest/code.html
|
|
125
|
+
:alt: Documentation Status
|
|
125
126
|
|
|
126
127
|
.. |PyPi| image:: https://badge.fury.io/py/pyoptik.svg
|
|
127
128
|
:target: https://badge.fury.io/py/pyoptik
|
|
@@ -7,10 +7,10 @@ This module demonstrates the usage of the PyOptik library to calculate and plot
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import numpy
|
|
10
|
-
from PyOptik import
|
|
10
|
+
from PyOptik import Material
|
|
11
11
|
|
|
12
12
|
# Initialize the material with the Sellmeier model
|
|
13
|
-
material =
|
|
13
|
+
material = Material.BK7
|
|
14
14
|
|
|
15
15
|
# Calculate refractive index at specific wavelengths
|
|
16
16
|
RI = material.compute_refractive_index(wavelength=[1310e-9, 1550e-9])
|
|
@@ -7,10 +7,10 @@ This module demonstrates the usage of the PyOptik library to calculate and plot
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import numpy
|
|
10
|
-
from PyOptik import
|
|
10
|
+
from PyOptik import Material
|
|
11
11
|
|
|
12
12
|
# Initialize the material with the Sellmeier model
|
|
13
|
-
material =
|
|
13
|
+
material = Material.SF5
|
|
14
14
|
|
|
15
15
|
# Calculate refractive index at specific wavelengths
|
|
16
16
|
RI = material.compute_refractive_index(wavelength=[1310e-9, 1550e-9])
|
{pyoptik-1.4.1.post0/docs/source/gallery → pyoptik-1.6.0.post0/docs/examples}/plot_silica.py
RENAMED
|
@@ -7,10 +7,10 @@ This module demonstrates the usage of the PyOptik library to calculate and plot
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import numpy
|
|
10
|
-
from PyOptik import
|
|
10
|
+
from PyOptik import Material
|
|
11
11
|
|
|
12
12
|
# Initialize the material with the Sellmeier model
|
|
13
|
-
material =
|
|
13
|
+
material = Material.fused_silica
|
|
14
14
|
|
|
15
15
|
# Calculate refractive index at specific wavelengths
|
|
16
16
|
RI = material.compute_refractive_index(wavelength=[1310e-9, 1550e-9])
|
{pyoptik-1.4.1.post0/docs/source/gallery → pyoptik-1.6.0.post0/docs/examples}/plot_silver.py
RENAMED
|
@@ -7,10 +7,10 @@ This module demonstrates the usage of the PyOptik library to calculate and plot
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import numpy
|
|
10
|
-
from PyOptik import
|
|
10
|
+
from PyOptik import Material
|
|
11
11
|
|
|
12
12
|
# Initialize the material with the Sellmeier model
|
|
13
|
-
material =
|
|
13
|
+
material = Material.silver
|
|
14
14
|
|
|
15
15
|
# Calculate refractive index at specific wavelengths
|
|
16
16
|
RI = material.compute_refractive_index(wavelength=[1310e-9, 1550e-9])
|
|
@@ -7,10 +7,10 @@ This module demonstrates the usage of the PyOptik library to calculate and plot
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import numpy
|
|
10
|
-
from PyOptik import
|
|
10
|
+
from PyOptik import Material
|
|
11
11
|
|
|
12
12
|
# Initialize the material with the Sellmeier model
|
|
13
|
-
material =
|
|
13
|
+
material = Material.water
|
|
14
14
|
|
|
15
15
|
# Calculate refractive index at specific wavelengths
|
|
16
16
|
RI = material.compute_refractive_index(wavelength=[800e-9, 900e-9])
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from PyOptik import Material
|
|
3
|
+
from PyOptik.material import SellmeierMaterial, TabulatedMaterial
|
|
4
|
+
|
|
5
|
+
@pytest.mark.parametrize('material_name', Material.all, ids=lambda name: f'Test {name}')
|
|
6
|
+
def test_usual_material(material_name):
|
|
7
|
+
"""
|
|
8
|
+
Test each usual material defined in UsualMaterial to ensure that it can be instantiated without errors.
|
|
9
|
+
"""
|
|
10
|
+
material_instance = getattr(Material, material_name)
|
|
11
|
+
|
|
12
|
+
assert isinstance(material_instance, (SellmeierMaterial, TabulatedMaterial)), f"{material_name} instantiation failed."
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
if __name__ == "__main__":
|
|
16
|
+
pytest.main([__file__])
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
name: Deploy
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [ "master" ]
|
|
6
|
-
tags:
|
|
7
|
-
- '*'
|
|
8
|
-
pull_request:
|
|
9
|
-
branches: [ "master" ]
|
|
10
|
-
|
|
11
|
-
permissions:
|
|
12
|
-
contents: write
|
|
13
|
-
|
|
14
|
-
jobs:
|
|
15
|
-
build_pure_python:
|
|
16
|
-
runs-on: ubuntu-latest
|
|
17
|
-
steps:
|
|
18
|
-
- uses: MartinPdeS/MPSActions/build_pure_python_package@master
|
|
19
|
-
with:
|
|
20
|
-
python-version: '3.10'
|
|
21
|
-
|
|
22
|
-
publish_documentation:
|
|
23
|
-
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
|
24
|
-
needs: [build_pure_python]
|
|
25
|
-
runs-on: ubuntu-latest
|
|
26
|
-
steps:
|
|
27
|
-
- uses: MartinPdeS/MPSActions/publish_documentation@master
|
|
28
|
-
with:
|
|
29
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
30
|
-
package-name: PyOptik
|
|
31
|
-
python-version: "3.10" #no documentation for python 3.7 (pickle5 not present˘)
|
|
32
|
-
|
|
33
|
-
publish_wheel:
|
|
34
|
-
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
|
35
|
-
needs: [build_pure_python, publish_documentation]
|
|
36
|
-
runs-on: ubuntu-latest
|
|
37
|
-
steps:
|
|
38
|
-
- uses: MartinPdeS/MPSActions/publish_pypi@master
|
|
39
|
-
with:
|
|
40
|
-
python-version: "3.10"
|
|
41
|
-
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
|
|
4
|
-
from typing import Union
|
|
5
|
-
from PyOptik.sellmeier_class import SellmeierMaterial
|
|
6
|
-
from PyOptik.tabulated_class import TabulatedMaterial
|
|
7
|
-
from PyOptik import data
|
|
8
|
-
|
|
9
|
-
class staticproperty(property):
|
|
10
|
-
"""
|
|
11
|
-
A descriptor that mimics the behavior of a @property but for class-level access.
|
|
12
|
-
|
|
13
|
-
This allows a method to be accessed like a static property without the need to instantiate the class.
|
|
14
|
-
"""
|
|
15
|
-
def __get__(self, owner_self, owner_cls):
|
|
16
|
-
return self.fget()
|
|
17
|
-
|
|
18
|
-
class UsualMaterial:
|
|
19
|
-
"""
|
|
20
|
-
A class representing common materials available in the PyOptik library.
|
|
21
|
-
|
|
22
|
-
This class provides easy access to a predefined list of materials, either through static properties or
|
|
23
|
-
a dynamic getter method. Materials are categorized into Sellmeier and Tabulated materials.
|
|
24
|
-
"""
|
|
25
|
-
|
|
26
|
-
all_materials = [
|
|
27
|
-
'silver',
|
|
28
|
-
'gold',
|
|
29
|
-
'aluminium',
|
|
30
|
-
'copper',
|
|
31
|
-
'zinc',
|
|
32
|
-
'iron',
|
|
33
|
-
'argon',
|
|
34
|
-
'water',
|
|
35
|
-
'silicon',
|
|
36
|
-
'BK7',
|
|
37
|
-
'fused_silica',
|
|
38
|
-
'germanium',
|
|
39
|
-
'polystyren'
|
|
40
|
-
]
|
|
41
|
-
|
|
42
|
-
@staticmethod
|
|
43
|
-
def get(material_name: str) -> Union[SellmeierMaterial, TabulatedMaterial]:
|
|
44
|
-
"""
|
|
45
|
-
Retrieve a material by name.
|
|
46
|
-
|
|
47
|
-
Args:
|
|
48
|
-
material_name (str): The name of the material to retrieve.
|
|
49
|
-
|
|
50
|
-
Returns:
|
|
51
|
-
Union[SellmeierMaterial, TabulatedMaterial]: An instance of the material if found.
|
|
52
|
-
|
|
53
|
-
Raises:
|
|
54
|
-
FileNotFoundError: If the material is not found in either the Sellmeier or Tabulated lists.
|
|
55
|
-
"""
|
|
56
|
-
if material_name in data.sellmeier.material_list:
|
|
57
|
-
return SellmeierMaterial(material_name)
|
|
58
|
-
|
|
59
|
-
if material_name in data.tabulated.material_list:
|
|
60
|
-
return TabulatedMaterial(material_name)
|
|
61
|
-
|
|
62
|
-
raise FileNotFoundError(f'Material: [{material_name}] could not be found.')
|
|
63
|
-
|
|
64
|
-
# Static properties for each material
|
|
65
|
-
|
|
66
|
-
@staticproperty
|
|
67
|
-
def silver() -> TabulatedMaterial:
|
|
68
|
-
"""Get the TabulatedMaterial instance for silver."""
|
|
69
|
-
return TabulatedMaterial('silver')
|
|
70
|
-
|
|
71
|
-
@staticproperty
|
|
72
|
-
def gold() -> TabulatedMaterial:
|
|
73
|
-
"""Get the TabulatedMaterial instance for gold."""
|
|
74
|
-
return TabulatedMaterial('gold')
|
|
75
|
-
|
|
76
|
-
@staticproperty
|
|
77
|
-
def aluminium() -> TabulatedMaterial:
|
|
78
|
-
"""Get the TabulatedMaterial instance for aluminium."""
|
|
79
|
-
return TabulatedMaterial('aluminium')
|
|
80
|
-
|
|
81
|
-
@staticproperty
|
|
82
|
-
def copper() -> TabulatedMaterial:
|
|
83
|
-
"""Get the TabulatedMaterial instance for copper."""
|
|
84
|
-
return TabulatedMaterial('copper')
|
|
85
|
-
|
|
86
|
-
@staticproperty
|
|
87
|
-
def zinc() -> TabulatedMaterial:
|
|
88
|
-
"""Get the TabulatedMaterial instance for zinc."""
|
|
89
|
-
return TabulatedMaterial('zinc')
|
|
90
|
-
|
|
91
|
-
@staticproperty
|
|
92
|
-
def iron() -> TabulatedMaterial:
|
|
93
|
-
"""Get the TabulatedMaterial instance for iron."""
|
|
94
|
-
return TabulatedMaterial('iron')
|
|
95
|
-
|
|
96
|
-
@staticproperty
|
|
97
|
-
def polystyren() -> SellmeierMaterial:
|
|
98
|
-
"""Get the SellmeierMaterial instance for polystyren."""
|
|
99
|
-
return SellmeierMaterial('polystyren')
|
|
100
|
-
|
|
101
|
-
@staticproperty
|
|
102
|
-
def argon() -> SellmeierMaterial:
|
|
103
|
-
"""Get the SellmeierMaterial instance for argon."""
|
|
104
|
-
return SellmeierMaterial('argon')
|
|
105
|
-
|
|
106
|
-
@staticproperty
|
|
107
|
-
def water() -> SellmeierMaterial:
|
|
108
|
-
"""Get the SellmeierMaterial instance for water."""
|
|
109
|
-
return SellmeierMaterial('water')
|
|
110
|
-
|
|
111
|
-
@staticproperty
|
|
112
|
-
def silicon() -> SellmeierMaterial:
|
|
113
|
-
"""Get the SellmeierMaterial instance for silicon."""
|
|
114
|
-
return SellmeierMaterial('silicon')
|
|
115
|
-
|
|
116
|
-
@staticproperty
|
|
117
|
-
def BK7() -> SellmeierMaterial:
|
|
118
|
-
"""Get the SellmeierMaterial instance for BK7."""
|
|
119
|
-
return SellmeierMaterial('BK7')
|
|
120
|
-
|
|
121
|
-
@staticproperty
|
|
122
|
-
def fused_silica() -> SellmeierMaterial:
|
|
123
|
-
"""Get the SellmeierMaterial instance for fused_silica."""
|
|
124
|
-
return SellmeierMaterial('fused_silica')
|
|
125
|
-
|
|
126
|
-
@staticproperty
|
|
127
|
-
def germanium() -> SellmeierMaterial:
|
|
128
|
-
"""Get the SellmeierMaterial instance for germanium."""
|
|
129
|
-
return SellmeierMaterial('germanium')
|