PyFiberModes 0.10.0__tar.gz → 0.11.0__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.
- pyfibermodes-0.11.0/.github/workflows/deploy_PyPi.yml +29 -0
- pyfibermodes-0.11.0/.github/workflows/deploy_anaconda.yml +32 -0
- pyfibermodes-0.11.0/.github/workflows/deploy_coverage.yml +21 -0
- pyfibermodes-0.11.0/.github/workflows/deploy_documentation.yml +19 -0
- pyfibermodes-0.11.0/.github/workflows/quality.yml +22 -0
- pyfibermodes-0.11.0/.github/workflows/tests.yml +28 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/.gitignore +11 -1
- pyfibermodes-0.11.0/.zenodo.json +21 -0
- pyfibermodes-0.11.0/CHANGELOG.md +38 -0
- pyfibermodes-0.11.0/CITATION.cff +19 -0
- pyfibermodes-0.11.0/CONTRIBUTING.md +7 -0
- pyfibermodes-0.11.0/MANIFEST.in +4 -0
- pyfibermodes-0.11.0/Makefile +50 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PKG-INFO +323 -89
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/__init__.py +6 -0
- pyfibermodes-0.11.0/PyFiberModes/_version.py +24 -0
- pyfibermodes-0.11.0/PyFiberModes/analysis.py +112 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber.py +11 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/field.py +74 -115
- pyfibermodes-0.11.0/PyFiberModes/optimization.py +86 -0
- pyfibermodes-0.11.0/PyFiberModes/propagation.py +82 -0
- pyfibermodes-0.11.0/PyFiberModes/solver/__init__.py +3 -0
- pyfibermodes-0.11.0/PyFiberModes/solver/mlsif/__init__.py +1 -0
- pyfibermodes-0.11.0/PyFiberModes/solver/ssif/__init__.py +2 -0
- pyfibermodes-0.11.0/PyFiberModes/solver/tlsif/__init__.py +1 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes.egg-info/PKG-INFO +323 -89
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes.egg-info/SOURCES.txt +18 -6
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes.egg-info/requires.txt +10 -6
- pyfibermodes-0.11.0/README.rst +367 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0/conda.recipe}/meta.yaml +3 -4
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/pyproject.toml +28 -8
- pyfibermodes-0.11.0/tests/test_advanced_features.py +183 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/tests/test_field.py +27 -0
- pyfibermodes-0.11.0/tests/test_release_tools.py +66 -0
- pyfibermodes-0.11.0/tools/check_release.py +91 -0
- pyfibermodes-0.11.0/tools/next_release_version.py +55 -0
- pyfibermodes-0.11.0/tools/release_tag.py +118 -0
- pyfibermodes-0.10.0/.github/workflows/deploy_PyPi.yml +0 -20
- pyfibermodes-0.10.0/.github/workflows/deploy_anaconda.yml +0 -21
- pyfibermodes-0.10.0/.github/workflows/deploy_coverage.yml +0 -25
- pyfibermodes-0.10.0/.github/workflows/deploy_documentation.yml +0 -24
- pyfibermodes-0.10.0/.readthedocs.yml +0 -35
- pyfibermodes-0.10.0/PyFiberModes/_version.py +0 -34
- pyfibermodes-0.10.0/PyFiberModes/solver/__init__.py +0 -1
- pyfibermodes-0.10.0/PyFiberModes/solver/mlsif/__init__.py +0 -1
- pyfibermodes-0.10.0/PyFiberModes/solver/ssif/__init__.py +0 -2
- pyfibermodes-0.10.0/PyFiberModes/solver/tlsif/__init__.py +0 -1
- pyfibermodes-0.10.0/README.rst +0 -140
- pyfibermodes-0.10.0/perso/test_1.py +0 -65
- pyfibermodes-0.10.0/perso/test_2.py +0 -40
- pyfibermodes-0.10.0/perso/test_3.py +0 -49
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/.coveragerc +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/.github/dependabot.yml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/LICENSE +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/__future__.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/coordinates.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/directories.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/factory.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/1550BHP.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/DCF13.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/DCF1300S_20.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/DCF1300S_26.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/DCF1300S_33.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/DCF1300S_42.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/F2028M12.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/F2028M21.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/F2028M24.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/F2058G1.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/F2058L1.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/HI1060.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/HP630.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/SM1950.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/SMF28.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/fluorine_doped_1%_capillary.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/fluorine_doped_2%_capillary.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/test_fiber.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fiber_files/test_multimode_fiber.yaml +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/fundamentals.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/loader.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/mode.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/mode_instances.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/solver/base_solver.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/solver/mlsif/neff.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/solver/ssif/cutoff.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/solver/ssif/neff.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/solver/tlsif/cutoff.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/source.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/stepindex.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/tools/__init__.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/tools/directories.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes/tools/utils.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes.egg-info/dependency_links.txt +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/PyFiberModes.egg-info/top_level.txt +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/Makefile +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/DCF/README.rst +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/DCF/plot_DCF_fields.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/README.rst +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/SMF28/README.rst +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/SMF28/plot_smf28.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/SMF28/plot_smf28_dispersion_vs_wavelength.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/SMF28/plot_smf28_group_index_vs_wavelength.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/basic/README.rst +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/basic/plot_U_vs_V.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/basic/plot_comparison_solvers.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/basic/plot_dispersion.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/basic/plot_effective_index.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/basic/plot_fiber_LP_modes.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/basic/plot_group_index.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/basic/plot_mode_field.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/basic/plot_mode_field_1.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/basic/plot_mode_field_2.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/examples/basic/plot_neff_tapered_fiber.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/make.bat +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/source/_static/default.css +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/source/_static/thumbnail.png +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/source/code.rst +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/source/conf.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/source/examples.rst +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/docs/source/index.rst +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/pytest.ini +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/setup.cfg +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/tests/__init__.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/tests/test_api.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/tests/test_coordinates.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/tests/test_fiber.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/tests/test_file_loading.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/tests/test_ssif.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/tests/test_tlsif.py +0 -0
- {pyfibermodes-0.10.0 → pyfibermodes-0.11.0}/tests/test_validation.py +0 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: ["v*"]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
validate-release:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
|
|
15
|
+
with:
|
|
16
|
+
fetch-depth: 0
|
|
17
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
|
|
18
|
+
with:
|
|
19
|
+
python-version: "3.11"
|
|
20
|
+
- run: python tools/check_release.py --version "${GITHUB_REF_NAME}"
|
|
21
|
+
|
|
22
|
+
publish:
|
|
23
|
+
needs: validate-release
|
|
24
|
+
uses: MartinPdeS/MPSActions/.github/workflows/publish_pure_package_to_PyPi.yml@v5
|
|
25
|
+
with:
|
|
26
|
+
python-version: "3.11"
|
|
27
|
+
test-command: python -c 'import PyFiberModes'
|
|
28
|
+
secrets:
|
|
29
|
+
PYPI_API_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: Publish Conda package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: ["v*"]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
validate-release:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
|
|
15
|
+
with:
|
|
16
|
+
fetch-depth: 0
|
|
17
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
|
|
18
|
+
with:
|
|
19
|
+
python-version: "3.11"
|
|
20
|
+
- run: python tools/check_release.py --version "${GITHUB_REF_NAME}"
|
|
21
|
+
|
|
22
|
+
publish:
|
|
23
|
+
needs: validate-release
|
|
24
|
+
uses: MartinPdeS/MPSActions/.github/workflows/publish_compiled_package_to_anaconda.yml@v5
|
|
25
|
+
with:
|
|
26
|
+
python_versions: '["3.11", "3.12", "3.13"]'
|
|
27
|
+
os_list: '["ubuntu-latest", "macos-latest", "windows-latest"]'
|
|
28
|
+
package_name: pyfibermodes
|
|
29
|
+
recipe_path: conda.recipe
|
|
30
|
+
test_import: PyFiberModes
|
|
31
|
+
secrets:
|
|
32
|
+
ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
name: Publish coverage
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [master]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write
|
|
11
|
+
pull-requests: write
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
coverage:
|
|
15
|
+
uses: MartinPdeS/MPSActions/.github/workflows/publish_coverage.yml@v5
|
|
16
|
+
with:
|
|
17
|
+
python-version: "3.11"
|
|
18
|
+
apt-package: xvfb
|
|
19
|
+
coverage-package: PyFiberModes
|
|
20
|
+
secrets:
|
|
21
|
+
_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
name: Publish documentation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master]
|
|
6
|
+
tags: ["v*"]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
pages: write
|
|
11
|
+
id-token: write
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
documentation:
|
|
15
|
+
uses: MartinPdeS/MPSActions/.github/workflows/publish_documentation.yml@v5
|
|
16
|
+
with:
|
|
17
|
+
python-version: "3.11"
|
|
18
|
+
package-name: PyFiberModes
|
|
19
|
+
apt-package: xvfb jq
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: Static quality checks
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [master]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
quality:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
|
|
17
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
|
|
18
|
+
with:
|
|
19
|
+
python-version: "3.11"
|
|
20
|
+
- run: python -m pip install --upgrade pip && python -m pip install -e ".[dev]"
|
|
21
|
+
- run: python -m ruff check PyFiberModes tests tools
|
|
22
|
+
- run: python tools/check_release.py
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
name: Python ${{ matrix.python-version }}
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
strategy:
|
|
17
|
+
fail-fast: false
|
|
18
|
+
matrix:
|
|
19
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
|
|
22
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
|
|
23
|
+
with:
|
|
24
|
+
python-version: ${{ matrix.python-version }}
|
|
25
|
+
- run: python -m pip install --upgrade pip && python -m pip install -e ".[testing]"
|
|
26
|
+
- run: python -m pytest -q
|
|
27
|
+
env:
|
|
28
|
+
MPLBACKEND: Agg
|
|
@@ -12,13 +12,22 @@
|
|
|
12
12
|
!.gitignore
|
|
13
13
|
!.pre-commit-config.yaml
|
|
14
14
|
!LICENSE
|
|
15
|
-
!
|
|
15
|
+
!conda.recipe
|
|
16
|
+
!conda.recipe/meta.yaml
|
|
16
17
|
!pyproject.toml
|
|
17
18
|
!README.rst
|
|
19
|
+
!CONTRIBUTING.md
|
|
20
|
+
!/Makefile
|
|
21
|
+
!tools
|
|
22
|
+
!tools/*.py
|
|
18
23
|
!notebook.ipynb
|
|
19
24
|
!CMakeLists.txt
|
|
20
25
|
!pytest.ini
|
|
21
26
|
!.coveragerc
|
|
27
|
+
!.zenodo.json
|
|
28
|
+
!CITATION.cff
|
|
29
|
+
!CHANGELOG.md
|
|
30
|
+
!MANIFEST.in
|
|
22
31
|
|
|
23
32
|
# But ignore docs/build inside docs and code
|
|
24
33
|
docs/build/
|
|
@@ -29,3 +38,4 @@ docs/source/gallery/
|
|
|
29
38
|
*.DS_Store*
|
|
30
39
|
*.so*
|
|
31
40
|
*.a*
|
|
41
|
+
!Makefile
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "PyFiberModes: guided-mode analysis and design for optical fibers",
|
|
3
|
+
"description": "PyFiberModes solves guided modes in circularly symmetric step-index and multilayer optical fibers, including field analysis, modal sweeps, inverse design, and coupled-mode propagation.",
|
|
4
|
+
"creators": [
|
|
5
|
+
{
|
|
6
|
+
"name": "Poinsinet de Sivry-Houle, Martin"
|
|
7
|
+
}
|
|
8
|
+
],
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"upload_type": "software",
|
|
11
|
+
"access_right": "open",
|
|
12
|
+
"version": "0.11.0",
|
|
13
|
+
"publication_date": "2026-09-22",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"optical fibers",
|
|
16
|
+
"guided modes",
|
|
17
|
+
"effective index",
|
|
18
|
+
"dispersion",
|
|
19
|
+
"coupled-mode theory"
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to PyFiberModes are documented in this file. The format is
|
|
4
|
+
based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and releases
|
|
5
|
+
use [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [0.11.0] - 2026-09-22
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Automatic guided-mode discovery and structured parameter sweeps.
|
|
14
|
+
- Constrained inverse design for layer radii, refractive indices, and custom parameters.
|
|
15
|
+
- Mode-overlap, coupling-matrix, and coupled-mode propagation utilities.
|
|
16
|
+
- Vectorized field mapping, Poynting vectors, guided power, and confinement factors.
|
|
17
|
+
- Citation metadata for Citation File Format and Zenodo.
|
|
18
|
+
- Release-metadata consistency checks and expanded behavioral unit tests.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- Field maps reuse cached radial solutions rather than solving independently at every pixel.
|
|
23
|
+
- Effective-area integration now includes the physical grid-cell area consistently.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- Field intensity and normalization now use the current `Fiber.get_effective_index` API.
|
|
28
|
+
- Radial-field caches are cleared when the fiber wavelength changes.
|
|
29
|
+
|
|
30
|
+
## [0.10.0] - 2026-02-13
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- Established the current tagged baseline for subsequent documented releases.
|
|
35
|
+
|
|
36
|
+
[Unreleased]: https://github.com/MartinPdeS/PyFiberModes/compare/v0.11.0...HEAD
|
|
37
|
+
[0.11.0]: https://github.com/MartinPdeS/PyFiberModes/releases/tag/v0.11.0
|
|
38
|
+
[0.10.0]: https://github.com/MartinPdeS/PyFiberModes/releases/tag/v0.10.0
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use PyFiberModes in your research, please cite this software."
|
|
3
|
+
title: "PyFiberModes"
|
|
4
|
+
type: software
|
|
5
|
+
authors:
|
|
6
|
+
- family-names: "Poinsinet de Sivry-Houle"
|
|
7
|
+
given-names: "Martin"
|
|
8
|
+
abstract: >
|
|
9
|
+
PyFiberModes is a Python package for solving and analysing guided modes in
|
|
10
|
+
circularly symmetric step-index and multilayer optical fibers.
|
|
11
|
+
license: "MIT"
|
|
12
|
+
repository-code: "https://github.com/MartinPdeS/PyFiberModes"
|
|
13
|
+
url: "https://martinpdes.github.io/PyFiberModes/"
|
|
14
|
+
keywords:
|
|
15
|
+
- optical fibers
|
|
16
|
+
- guided modes
|
|
17
|
+
- effective index
|
|
18
|
+
- dispersion
|
|
19
|
+
- coupled-mode theory
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Contributing to PyFiberModes
|
|
2
|
+
|
|
3
|
+
Use Python 3.10 or newer. Install development dependencies with `python -m pip install -e ".[testing,documentation]"`, then run `python -m pytest`.
|
|
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 generated documentation, virtual environments, build artefacts, or caches.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
.DEFAULT_GOAL := help
|
|
2
|
+
|
|
3
|
+
PYTHON ?= python3
|
|
4
|
+
TAG_VERSION ?= $(or $(VERSION),$(filter v%,$(MAKECMDGOALS)))
|
|
5
|
+
RELEASE_KIND := $(filter major minor patch,$(MAKECMDGOALS))
|
|
6
|
+
|
|
7
|
+
.PHONY: help test quality check release-check tag release major minor patch
|
|
8
|
+
|
|
9
|
+
help:
|
|
10
|
+
@echo "PyFiberModes development commands"
|
|
11
|
+
@echo ""
|
|
12
|
+
@echo " make test Run the test suite"
|
|
13
|
+
@echo " make quality Run static quality checks"
|
|
14
|
+
@echo " make check Run tests, quality, and release checks"
|
|
15
|
+
@echo " make release-check Check version metadata consistency"
|
|
16
|
+
@echo " make tag VERSION=vX.Y.Z Create a release commit and annotated tag"
|
|
17
|
+
@echo " make release patch Create and push the next patch release"
|
|
18
|
+
@echo " make release minor Create and push the next minor release"
|
|
19
|
+
@echo " make release major Create and push the next major release"
|
|
20
|
+
|
|
21
|
+
ifneq ($(filter tag,$(MAKECMDGOALS)),)
|
|
22
|
+
ifneq ($(strip $(TAG_VERSION)),)
|
|
23
|
+
.PHONY: $(TAG_VERSION)
|
|
24
|
+
$(TAG_VERSION):
|
|
25
|
+
@:
|
|
26
|
+
endif
|
|
27
|
+
endif
|
|
28
|
+
|
|
29
|
+
test:
|
|
30
|
+
MPLBACKEND=Agg $(PYTHON) -m pytest
|
|
31
|
+
|
|
32
|
+
quality:
|
|
33
|
+
$(PYTHON) -m ruff check PyFiberModes tests tools
|
|
34
|
+
|
|
35
|
+
release-check:
|
|
36
|
+
$(PYTHON) tools/check_release.py $(if $(VERSION),--version $(VERSION),)
|
|
37
|
+
|
|
38
|
+
check: quality test release-check
|
|
39
|
+
|
|
40
|
+
tag:
|
|
41
|
+
$(PYTHON) tools/release_tag.py "$(TAG_VERSION)"
|
|
42
|
+
|
|
43
|
+
release:
|
|
44
|
+
@test "$(words $(RELEASE_KIND))" -eq 1 || { echo "usage: make release [patch|minor|major]" >&2; exit 2; }
|
|
45
|
+
@set -eu; release_tag="$$($(PYTHON) tools/next_release_version.py $(RELEASE_KIND))"; \
|
|
46
|
+
$(PYTHON) tools/release_tag.py "$$release_tag"; \
|
|
47
|
+
git push origin HEAD "refs/tags/$$release_tag"
|
|
48
|
+
|
|
49
|
+
major minor patch:
|
|
50
|
+
@:
|