PyFiberModes 0.15.0__tar.gz → 0.17.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.
Files changed (169) hide show
  1. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/.github/dependabot.yml +1 -2
  2. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/.github/workflows/deploy_anaconda.yml +3 -2
  3. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/.github/workflows/quality.yml +4 -3
  4. pyfibermodes-0.17.0/.github/workflows/tests.yml +29 -0
  5. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/.zenodo.json +2 -2
  6. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/CHANGELOG.md +13 -1
  7. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PKG-INFO +8 -7
  8. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/_version.py +2 -2
  9. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes.egg-info/PKG-INFO +8 -7
  10. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes.egg-info/requires.txt +5 -5
  11. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/README.rst +1 -1
  12. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/conda.recipe/meta.yaml +2 -2
  13. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/basic/plot_dispersion.py +7 -2
  14. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/basic/plot_fiber_LP_modes.py +10 -5
  15. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/basic/plot_group_index.py +10 -5
  16. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/pyproject.toml +11 -6
  17. pyfibermodes-0.15.0/.github/workflows/tests.yml +0 -28
  18. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/.coveragerc +0 -0
  19. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/.github/workflows/deploy_PyPi.yml +0 -0
  20. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/.github/workflows/deploy_coverage.yml +0 -0
  21. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/.github/workflows/deploy_documentation.yml +0 -0
  22. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/.gitignore +0 -0
  23. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/CITATION.cff +0 -0
  24. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/CONTRIBUTING.md +0 -0
  25. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/LICENSE +0 -0
  26. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/MANIFEST.in +0 -0
  27. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/Makefile +0 -0
  28. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/__init__.py +0 -0
  29. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/analysis.py +0 -0
  30. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/coordinates.py +0 -0
  31. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/directories.py +0 -0
  32. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/exceptions.py +0 -0
  33. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/factory.py +0 -0
  34. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber.py +0 -0
  35. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/1550BHP.yaml +0 -0
  36. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/DCF13.yaml +0 -0
  37. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/DCF1300S_20.yaml +0 -0
  38. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/DCF1300S_26.yaml +0 -0
  39. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/DCF1300S_33.yaml +0 -0
  40. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/DCF1300S_42.yaml +0 -0
  41. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/F2028M12.yaml +0 -0
  42. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/F2028M21.yaml +0 -0
  43. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/F2028M24.yaml +0 -0
  44. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/F2058G1.yaml +0 -0
  45. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/F2058L1.yaml +0 -0
  46. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/HI1060.yaml +0 -0
  47. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/HP630.yaml +0 -0
  48. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/SM1950.yaml +0 -0
  49. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/SMF28.yaml +0 -0
  50. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/fluorine_doped_1%_capillary.yaml +0 -0
  51. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/fluorine_doped_2%_capillary.yaml +0 -0
  52. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/test_fiber.yaml +0 -0
  53. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fiber_files/test_multimode_fiber.yaml +0 -0
  54. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/field.py +0 -0
  55. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/fundamentals.py +0 -0
  56. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/loader.py +0 -0
  57. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/materials.py +0 -0
  58. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/mode.py +0 -0
  59. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/mode_instances.py +0 -0
  60. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/models.py +0 -0
  61. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/optimization.py +0 -0
  62. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/plotting.py +0 -0
  63. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/propagation.py +0 -0
  64. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/services.py +0 -0
  65. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/solver/__init__.py +0 -0
  66. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/solver/base_solver.py +0 -0
  67. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/solver/multilayer/__init__.py +0 -0
  68. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/solver/multilayer/effective_index.py +0 -0
  69. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/solver/protocols.py +0 -0
  70. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/solver/results.py +0 -0
  71. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/solver/three_layer/__init__.py +0 -0
  72. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/solver/three_layer/cutoff.py +0 -0
  73. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/solver/two_layer/__init__.py +0 -0
  74. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/solver/two_layer/cutoff.py +0 -0
  75. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/solver/two_layer/effective_index.py +0 -0
  76. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/source.py +0 -0
  77. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes/stepindex.py +0 -0
  78. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes.egg-info/SOURCES.txt +0 -0
  79. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes.egg-info/dependency_links.txt +0 -0
  80. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/PyFiberModes.egg-info/top_level.txt +0 -0
  81. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/benchmarks/README.md +0 -0
  82. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/benchmarks/test_field_performance.py +0 -0
  83. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/Makefile +0 -0
  84. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/README.rst +0 -0
  85. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/SMF28/README.rst +0 -0
  86. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/SMF28/plot_smf28.py +0 -0
  87. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/SMF28/plot_smf28_dispersion_vs_wavelength.py +0 -0
  88. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/SMF28/plot_smf28_group_index_vs_wavelength.py +0 -0
  89. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/analysis/README.rst +0 -0
  90. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/analysis/plot_coupled_mode_exchange.py +0 -0
  91. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/analysis/plot_guided_mode_discovery.py +0 -0
  92. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/analysis/plot_structured_wavelength_sweep.py +0 -0
  93. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/basic/README.rst +0 -0
  94. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/basic/plot_U_vs_V.py +0 -0
  95. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/basic/plot_comparison_solvers.py +0 -0
  96. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/basic/plot_effective_index.py +0 -0
  97. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/basic/plot_mode_field.py +0 -0
  98. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/basic/plot_mode_field_1.py +0 -0
  99. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/basic/plot_mode_field_2.py +0 -0
  100. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/basic/plot_neff_tapered_fiber.py +0 -0
  101. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/benchmarks/README.rst +0 -0
  102. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/benchmarks/plot_component_batching_speedup.py +0 -0
  103. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/benchmarks/plot_field_grid_scaling.py +0 -0
  104. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/benchmarks/plot_modal_cache_speedup.py +0 -0
  105. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/fields/README.rst +0 -0
  106. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/fields/plot_confinement_by_radius.py +0 -0
  107. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/fields/plot_polarization_rotation.py +0 -0
  108. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/fields/plot_vector_components.py +0 -0
  109. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/specialty_fibers/README.rst +0 -0
  110. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/specialty_fibers/plot_refractive_index_profile.py +0 -0
  111. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/specialty_fibers/plot_specialty_fiber_catalog.py +0 -0
  112. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/specialty_fibers/plot_specialty_mode_indices.py +0 -0
  113. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/validation/README.rst +0 -0
  114. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/validation/plot_effective_index_bounds.py +0 -0
  115. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/validation/plot_field_area_convergence.py +0 -0
  116. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/examples/validation/plot_normalized_effective_index.py +0 -0
  117. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/make.bat +0 -0
  118. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/_static/default.css +0 -0
  119. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/_static/favicon.png +0 -0
  120. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/_static/logo.png +0 -0
  121. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/_static/thumbnail.png +0 -0
  122. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/api_policy.rst +0 -0
  123. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/architecture.rst +0 -0
  124. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/code/analysis.rst +0 -0
  125. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/code/fibers.rst +0 -0
  126. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/code/fields.rst +0 -0
  127. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/code/fundamentals.rst +0 -0
  128. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/code.rst +0 -0
  129. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/conf.py +0 -0
  130. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/examples.rst +0 -0
  131. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/getting_started.rst +0 -0
  132. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/index.rst +0 -0
  133. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/migration_guide.rst +0 -0
  134. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/performance.rst +0 -0
  135. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/public_api_contract.rst +0 -0
  136. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/references.rst +0 -0
  137. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/theory.rst +0 -0
  138. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/troubleshooting.rst +0 -0
  139. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/user_guide/fibers.rst +0 -0
  140. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/user_guide/fields.rst +0 -0
  141. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/user_guide/index.rst +0 -0
  142. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/user_guide/modes.rst +0 -0
  143. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/user_guide/reproducibility.rst +0 -0
  144. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/user_guide/sweeps.rst +0 -0
  145. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/user_guide/units.rst +0 -0
  146. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/docs/source/workflows.rst +0 -0
  147. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/pytest.ini +0 -0
  148. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/setup.cfg +0 -0
  149. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/__init__.py +0 -0
  150. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/api_snapshot.json +0 -0
  151. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/helpers.py +0 -0
  152. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_advanced_features.py +0 -0
  153. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_api.py +0 -0
  154. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_architecture.py +0 -0
  155. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_architecture_enhancements.py +0 -0
  156. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_coordinates.py +0 -0
  157. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_docstrings.py +0 -0
  158. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_fiber.py +0 -0
  159. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_field.py +0 -0
  160. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_file_loading.py +0 -0
  161. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_physics_regression.py +0 -0
  162. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_public_api.py +0 -0
  163. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_release_tools.py +0 -0
  164. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_three_layer_solver.py +0 -0
  165. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_two_layer_solver.py +0 -0
  166. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tests/test_validation.py +0 -0
  167. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tools/check_release.py +0 -0
  168. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tools/next_release_version.py +0 -0
  169. {pyfibermodes-0.15.0 → pyfibermodes-0.17.0}/tools/release_tag.py +0 -0
@@ -6,6 +6,5 @@ updates:
6
6
  directory: "/"
7
7
  target-branch: "master"
8
8
  schedule:
9
- interval: "monthly"
10
- day: "sunday"
9
+ interval: "quarterly"
11
10
  time: "09:00"
@@ -21,12 +21,13 @@ jobs:
21
21
 
22
22
  publish:
23
23
  needs: validate-release
24
- uses: MartinPdeS/MPSActions/.github/workflows/publish_compiled_package_to_anaconda.yml@v5
24
+ uses: MartinPdeS/MPSActions/.github/workflows/publish_compiled_package_to_anaconda.yml@v6
25
25
  with:
26
26
  # The recipe is ``noarch: python``. Building it in a platform/version
27
27
  # matrix creates several artifacts with the same archive path, which
28
28
  # collide when the reusable workflow merges them before upload.
29
- python_versions: '["3.11"]'
29
+ # One noarch archive supports all declared Python versions; test it on 3.14.
30
+ python_versions: '["3.14"]'
30
31
  os_list: '["ubuntu-latest"]'
31
32
  package_name: pyfibermodes
32
33
  recipe_path: conda.recipe
@@ -13,11 +13,12 @@ jobs:
13
13
  quality:
14
14
  runs-on: ubuntu-latest
15
15
  steps:
16
- - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
17
- - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
16
+ - name: Set up Python and CI dependencies
17
+ uses: MartinPdeS/MPSActions/actions/setup-python@0f5927acf88b25b5d253421e508387897096a2cc
18
18
  with:
19
19
  python-version: "3.11"
20
- - run: python -m pip install --upgrade pip && python -m pip install -e ".[dev]"
20
+ install-command: >-
21
+ python -m pip install --upgrade pip && python -m pip install -e ".[dev]"
21
22
  - run: python -m ruff check PyFiberModes tests tools
22
23
  - run: python -m mypy
23
24
  - run: python tools/check_release.py
@@ -0,0 +1,29 @@
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.11", "3.12", "3.13", "3.14"]
20
+ steps:
21
+ - name: Set up Python and CI dependencies
22
+ uses: MartinPdeS/MPSActions/actions/setup-python@0f5927acf88b25b5d253421e508387897096a2cc
23
+ with:
24
+ python-version: "${{ matrix.python-version }}"
25
+ install-command: >-
26
+ python -m pip install --upgrade pip && python -m pip install -e ".[testing]"
27
+ - run: python -m pytest -q
28
+ env:
29
+ MPLBACKEND: Agg
@@ -9,8 +9,8 @@
9
9
  "license": "MIT",
10
10
  "upload_type": "software",
11
11
  "access_right": "open",
12
- "version": "0.15.0",
13
- "publication_date": "2026-09-23",
12
+ "version": "0.17.0",
13
+ "publication_date": "2026-10-13",
14
14
  "keywords": [
15
15
  "optical fibers",
16
16
  "guided modes",
@@ -6,6 +6,16 @@ use [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.17.0] - 2026-10-13
10
+
11
+ ## [0.16.0] - 2026-09-23
12
+
13
+ ### Fixed
14
+
15
+ - Handle expected higher-order mode cutoff in derivative gallery examples by
16
+ plotting unavailable values as gaps instead of failing the documentation
17
+ build.
18
+
9
19
  ## [0.15.0] - 2026-09-23
10
20
 
11
21
  ### Added
@@ -141,7 +151,9 @@ use [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
141
151
 
142
152
  - Established the current tagged baseline for subsequent documented releases.
143
153
 
144
- [Unreleased]: https://github.com/MartinPdeS/PyFiberModes/compare/v0.15.0...HEAD
154
+ [Unreleased]: https://github.com/MartinPdeS/PyFiberModes/compare/v0.17.0...HEAD
155
+ [0.17.0]: https://github.com/MartinPdeS/PyFiberModes/releases/tag/v0.17.0
156
+ [0.16.0]: https://github.com/MartinPdeS/PyFiberModes/releases/tag/v0.16.0
145
157
  [0.15.0]: https://github.com/MartinPdeS/PyFiberModes/releases/tag/v0.15.0
146
158
  [0.14.3]: https://github.com/MartinPdeS/PyFiberModes/releases/tag/v0.14.3
147
159
  [0.14.2]: https://github.com/MartinPdeS/PyFiberModes/releases/tag/v0.14.2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyFiberModes
3
- Version: 0.15.0
3
+ Version: 0.17.0
4
4
  Summary: Guided-mode analysis and design for circular optical fibers.
5
5
  Author-email: Martin Poinsinet de Sivry-Houle <martin.poinsinet.de.sivry@gmail.com>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -689,6 +689,7 @@ Classifier: Programming Language :: Python :: 3 :: Only
689
689
  Classifier: Programming Language :: Python :: 3.11
690
690
  Classifier: Programming Language :: Python :: 3.12
691
691
  Classifier: Programming Language :: Python :: 3.13
692
+ Classifier: Programming Language :: Python :: 3.14
692
693
  Classifier: Programming Language :: Python :: Implementation :: CPython
693
694
  Classifier: Development Status :: 4 - Beta
694
695
  Classifier: Topic :: Scientific/Engineering :: Physics
@@ -708,22 +709,22 @@ Requires-Dist: pytest-json-report~=1.5; extra == "testing"
708
709
  Requires-Dist: coverage~=7.6; extra == "testing"
709
710
  Requires-Dist: ruff<1,>=0.8; extra == "testing"
710
711
  Requires-Dist: matplotlib>=3.8; extra == "testing"
711
- Requires-Dist: mypy<2,>=1.15; extra == "testing"
712
+ Requires-Dist: mypy<3,>=1.15; extra == "testing"
712
713
  Provides-Extra: plotting
713
714
  Requires-Dist: matplotlib>=3.8; extra == "plotting"
714
715
  Provides-Extra: benchmarking
715
716
  Requires-Dist: pytest-benchmark<6,>=5; extra == "benchmarking"
716
717
  Provides-Extra: documentation
717
718
  Requires-Dist: matplotlib>=3.8; extra == "documentation"
718
- Requires-Dist: numpydoc==1.10.0; extra == "documentation"
719
+ Requires-Dist: numpydoc==1.11.0; extra == "documentation"
719
720
  Requires-Dist: sphinx>=5.1.1; extra == "documentation"
720
- Requires-Dist: sphinx-gallery==0.21.0; extra == "documentation"
721
+ Requires-Dist: sphinx-gallery==0.22.1; extra == "documentation"
721
722
  Requires-Dist: sphinx-design<1,>=0.6; extra == "documentation"
722
723
  Requires-Dist: sphinx-rtd-theme==3.1.0; extra == "documentation"
723
- Requires-Dist: pydata-sphinx-theme==0.17.1; extra == "documentation"
724
+ Requires-Dist: pydata-sphinx-theme==0.22.0; extra == "documentation"
724
725
  Provides-Extra: dev
725
726
  Requires-Dist: ruff<1,>=0.8; extra == "dev"
726
- Requires-Dist: mypy<2,>=1.15; extra == "dev"
727
+ Requires-Dist: mypy<3,>=1.15; extra == "dev"
727
728
  Dynamic: license-file
728
729
 
729
730
  .. image:: https://raw.githubusercontent.com/MartinPdeS/PyFiberModes/master/docs/source/_static/logo.png
@@ -1049,7 +1050,7 @@ Or run the complete local check target:
1049
1050
 
1050
1051
  make check
1051
1052
 
1052
- Tests run on Python 3.11 through 3.13 in GitHub Actions. Bug reports and
1053
+ Tests run on Python 3.11 through 3.14 in GitHub Actions. Bug reports and
1053
1054
  feature proposals are welcome through the
1054
1055
  `issue tracker <https://github.com/MartinPdeS/PyFiberModes/issues>`_.
1055
1056
 
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.15.0'
22
- __version_tuple__ = version_tuple = (0, 15, 0)
21
+ __version__ = version = '0.17.0'
22
+ __version_tuple__ = version_tuple = (0, 17, 0)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyFiberModes
3
- Version: 0.15.0
3
+ Version: 0.17.0
4
4
  Summary: Guided-mode analysis and design for circular optical fibers.
5
5
  Author-email: Martin Poinsinet de Sivry-Houle <martin.poinsinet.de.sivry@gmail.com>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -689,6 +689,7 @@ Classifier: Programming Language :: Python :: 3 :: Only
689
689
  Classifier: Programming Language :: Python :: 3.11
690
690
  Classifier: Programming Language :: Python :: 3.12
691
691
  Classifier: Programming Language :: Python :: 3.13
692
+ Classifier: Programming Language :: Python :: 3.14
692
693
  Classifier: Programming Language :: Python :: Implementation :: CPython
693
694
  Classifier: Development Status :: 4 - Beta
694
695
  Classifier: Topic :: Scientific/Engineering :: Physics
@@ -708,22 +709,22 @@ Requires-Dist: pytest-json-report~=1.5; extra == "testing"
708
709
  Requires-Dist: coverage~=7.6; extra == "testing"
709
710
  Requires-Dist: ruff<1,>=0.8; extra == "testing"
710
711
  Requires-Dist: matplotlib>=3.8; extra == "testing"
711
- Requires-Dist: mypy<2,>=1.15; extra == "testing"
712
+ Requires-Dist: mypy<3,>=1.15; extra == "testing"
712
713
  Provides-Extra: plotting
713
714
  Requires-Dist: matplotlib>=3.8; extra == "plotting"
714
715
  Provides-Extra: benchmarking
715
716
  Requires-Dist: pytest-benchmark<6,>=5; extra == "benchmarking"
716
717
  Provides-Extra: documentation
717
718
  Requires-Dist: matplotlib>=3.8; extra == "documentation"
718
- Requires-Dist: numpydoc==1.10.0; extra == "documentation"
719
+ Requires-Dist: numpydoc==1.11.0; extra == "documentation"
719
720
  Requires-Dist: sphinx>=5.1.1; extra == "documentation"
720
- Requires-Dist: sphinx-gallery==0.21.0; extra == "documentation"
721
+ Requires-Dist: sphinx-gallery==0.22.1; extra == "documentation"
721
722
  Requires-Dist: sphinx-design<1,>=0.6; extra == "documentation"
722
723
  Requires-Dist: sphinx-rtd-theme==3.1.0; extra == "documentation"
723
- Requires-Dist: pydata-sphinx-theme==0.17.1; extra == "documentation"
724
+ Requires-Dist: pydata-sphinx-theme==0.22.0; extra == "documentation"
724
725
  Provides-Extra: dev
725
726
  Requires-Dist: ruff<1,>=0.8; extra == "dev"
726
- Requires-Dist: mypy<2,>=1.15; extra == "dev"
727
+ Requires-Dist: mypy<3,>=1.15; extra == "dev"
727
728
  Dynamic: license-file
728
729
 
729
730
  .. image:: https://raw.githubusercontent.com/MartinPdeS/PyFiberModes/master/docs/source/_static/logo.png
@@ -1049,7 +1050,7 @@ Or run the complete local check target:
1049
1050
 
1050
1051
  make check
1051
1052
 
1052
- Tests run on Python 3.11 through 3.13 in GitHub Actions. Bug reports and
1053
+ Tests run on Python 3.11 through 3.14 in GitHub Actions. Bug reports and
1053
1054
  feature proposals are welcome through the
1054
1055
  `issue tracker <https://github.com/MartinPdeS/PyFiberModes/issues>`_.
1055
1056
 
@@ -8,16 +8,16 @@ pytest-benchmark<6,>=5
8
8
 
9
9
  [dev]
10
10
  ruff<1,>=0.8
11
- mypy<2,>=1.15
11
+ mypy<3,>=1.15
12
12
 
13
13
  [documentation]
14
14
  matplotlib>=3.8
15
- numpydoc==1.10.0
15
+ numpydoc==1.11.0
16
16
  sphinx>=5.1.1
17
- sphinx-gallery==0.21.0
17
+ sphinx-gallery==0.22.1
18
18
  sphinx-design<1,>=0.6
19
19
  sphinx-rtd-theme==3.1.0
20
- pydata-sphinx-theme==0.17.1
20
+ pydata-sphinx-theme==0.22.0
21
21
 
22
22
  [plotting]
23
23
  matplotlib>=3.8
@@ -29,4 +29,4 @@ pytest-json-report~=1.5
29
29
  coverage~=7.6
30
30
  ruff<1,>=0.8
31
31
  matplotlib>=3.8
32
- mypy<2,>=1.15
32
+ mypy<3,>=1.15
@@ -321,7 +321,7 @@ Or run the complete local check target:
321
321
 
322
322
  make check
323
323
 
324
- Tests run on Python 3.11 through 3.13 in GitHub Actions. Bug reports and
324
+ Tests run on Python 3.11 through 3.14 in GitHub Actions. Bug reports and
325
325
  feature proposals are welcome through the
326
326
  `issue tracker <https://github.com/MartinPdeS/PyFiberModes/issues>`_.
327
327
 
@@ -1,6 +1,6 @@
1
1
  package:
2
2
  name: pyfibermodes
3
- version: 0.15.0
3
+ version: 0.17.0
4
4
 
5
5
  source:
6
6
  path: ../
@@ -53,7 +53,7 @@ test:
53
53
  - pytest>=0.6
54
54
  - pytest-cov>=2.0
55
55
  - pytest-json-report==1.5.0
56
- - coverage==7.6.1
56
+ - coverage >=7.10,<8
57
57
  commands:
58
58
  - python -m pytest
59
59
  source_files:
@@ -7,7 +7,7 @@ Dispersion VS core index
7
7
  # %%
8
8
  # Imports
9
9
  # ~~~~~~~
10
- from PyFiberModes import FiberFactory, HE11, HE12, HE22
10
+ from PyFiberModes import ConvergenceError, FiberFactory, HE11, HE12, HE22
11
11
  import matplotlib.pyplot as plt
12
12
  import numpy
13
13
 
@@ -34,7 +34,12 @@ ax.set(
34
34
  for mode in [HE11, HE12, HE22]:
35
35
  data = []
36
36
  for fiber in factory:
37
- effective_index = fiber.get_dispersion(mode)
37
+ try:
38
+ effective_index = fiber.get_dispersion(mode)
39
+ except ConvergenceError:
40
+ # Higher-order modes can be unguided below cutoff. Use NaN so the
41
+ # plot shows a gap without obscuring other guided solutions.
42
+ effective_index = numpy.nan
38
43
  data.append(effective_index)
39
44
 
40
45
  ax.plot(core_indexes, data, label=str(mode))
@@ -1,13 +1,13 @@
1
1
  """
2
- Groupe index VS core index
3
- ==========================
2
+ Group index vs core index
3
+ =========================
4
4
  """
5
5
 
6
6
 
7
7
  # %%
8
8
  # Imports
9
9
  # ~~~~~~~
10
- from PyFiberModes import FiberFactory, HE11, HE12, HE22
10
+ from PyFiberModes import ConvergenceError, FiberFactory, HE11, HE12, HE22
11
11
  import matplotlib.pyplot as plt
12
12
  import numpy
13
13
 
@@ -26,7 +26,7 @@ factory.add_layer(name="cladding", index=1.4444)
26
26
  figure, ax = plt.subplots(1, 1)
27
27
 
28
28
  ax.set(
29
- title='Groupe index vs core index',
29
+ title='Group index vs core index',
30
30
  xlabel='Core refractive index',
31
31
  ylabel='Group index'
32
32
  )
@@ -34,7 +34,12 @@ ax.set(
34
34
  for mode in [HE11, HE12, HE22]:
35
35
  neff = []
36
36
  for fiber in factory:
37
- effective_index = fiber.get_group_index(mode)
37
+ try:
38
+ effective_index = fiber.get_group_index(mode)
39
+ except ConvergenceError:
40
+ # Higher-order modes can be unguided below cutoff. Use NaN so the
41
+ # plot shows a gap without obscuring other guided solutions.
42
+ effective_index = numpy.nan
38
43
  neff.append(effective_index)
39
44
 
40
45
  ax.plot(core_indexes, neff, label=str(mode))
@@ -1,13 +1,13 @@
1
1
  """
2
- Dispersion VS core index
3
- ========================
2
+ Group index vs core index
3
+ =========================
4
4
  """
5
5
 
6
6
 
7
7
  # %%
8
8
  # Imports
9
9
  # ~~~~~~~
10
- from PyFiberModes import FiberFactory, HE11, HE12, HE22
10
+ from PyFiberModes import ConvergenceError, FiberFactory, HE11, HE12, HE22
11
11
  import matplotlib.pyplot as plt
12
12
  import numpy
13
13
 
@@ -26,7 +26,7 @@ factory.add_layer(name="cladding", index=1.4444)
26
26
  figure, ax = plt.subplots(1, 1)
27
27
 
28
28
  ax.set(
29
- title='Groupe index vs core index',
29
+ title='Group index vs core index',
30
30
  xlabel='Core refractive index',
31
31
  ylabel='Group index'
32
32
  )
@@ -34,7 +34,12 @@ ax.set(
34
34
  for mode in [HE11, HE12, HE22]:
35
35
  data = []
36
36
  for fiber in factory:
37
- group_index = fiber.get_group_index(mode=mode)
37
+ try:
38
+ group_index = fiber.get_group_index(mode=mode)
39
+ except ConvergenceError:
40
+ # Higher-order modes can be unguided below cutoff. Use NaN so the
41
+ # plot shows a gap without obscuring other guided solutions.
42
+ group_index = numpy.nan
38
43
  data.append(group_index)
39
44
 
40
45
  ax.plot(core_indexes, data, label=str(mode))
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "PyFiberModes"
7
- version = "0.15.0"
7
+ version = "0.17.0"
8
8
  description = "Guided-mode analysis and design for circular optical fibers."
9
9
  license = {file = "LICENSE"}
10
10
  readme = "README.rst"
@@ -17,6 +17,7 @@ classifiers = [
17
17
  'Programming Language :: Python :: 3.11',
18
18
  'Programming Language :: Python :: 3.12',
19
19
  'Programming Language :: Python :: 3.13',
20
+ 'Programming Language :: Python :: 3.14',
20
21
  'Programming Language :: Python :: Implementation :: CPython',
21
22
  'Development Status :: 4 - Beta',
22
23
  'Topic :: Scientific/Engineering :: Physics',
@@ -65,7 +66,7 @@ testing = [
65
66
  "coverage ~=7.6",
66
67
  "ruff>=0.8,<1",
67
68
  "matplotlib>=3.8",
68
- "mypy>=1.15,<2",
69
+ "mypy>=1.15,<3",
69
70
  ]
70
71
 
71
72
  plotting = [
@@ -79,17 +80,17 @@ benchmarking = [
79
80
 
80
81
  documentation = [
81
82
  "matplotlib>=3.8",
82
- "numpydoc ==1.10.0",
83
+ "numpydoc ==1.11.0",
83
84
  "sphinx >=5.1.1",
84
- "sphinx-gallery ==0.21.0",
85
+ "sphinx-gallery ==0.22.1",
85
86
  "sphinx-design >=0.6,<1",
86
87
  "sphinx-rtd-theme ==3.1.0",
87
- "pydata-sphinx-theme ==0.17.1",
88
+ "pydata-sphinx-theme ==0.22.0",
88
89
  ]
89
90
 
90
91
  dev = [
91
92
  "ruff>=0.8,<1",
92
- "mypy>=1.15,<2",
93
+ "mypy>=1.15,<3",
93
94
  ]
94
95
 
95
96
  [tool.ruff]
@@ -110,3 +111,7 @@ files = [
110
111
  "PyFiberModes/solver/protocols.py",
111
112
  "PyFiberModes/solver/results.py",
112
113
  ]
114
+
115
+ # Include runtime resources when building wheels from a source archive without Git.
116
+ [tool.setuptools.package-data]
117
+ PyFiberModes = ["fiber_files/*.yaml"]
@@ -1,28 +0,0 @@
1
- name: Tests
2
-
3
- on:
4
- push:
5
- branches: [master]
6
- pull_request:
7
- branches: [master]
8
-
9
- permissions:
10
- contents: read
11
-
12
- jobs:
13
- tests:
14
- name: Python ${{ matrix.python-version }}
15
- runs-on: ubuntu-latest
16
- strategy:
17
- fail-fast: false
18
- matrix:
19
- python-version: ["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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes