PyFiberModes 0.17.3__tar.gz → 0.17.4__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 (177) hide show
  1. pyfibermodes-0.17.4/.github/workflows/deploy_documentation.yml +40 -0
  2. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/.gitignore +1 -0
  3. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/.zenodo.json +2 -2
  4. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/CHANGELOG.md +4 -1
  5. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/CONTRIBUTING.md +2 -0
  6. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/Makefile +11 -1
  7. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PKG-INFO +3 -8
  8. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/_version.py +2 -2
  9. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes.egg-info/PKG-INFO +3 -8
  10. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes.egg-info/SOURCES.txt +3 -1
  11. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes.egg-info/requires.txt +1 -6
  12. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/README.rst +1 -1
  13. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/conda.recipe/meta.yaml +1 -1
  14. pyfibermodes-0.17.4/docs/redirect.html +12 -0
  15. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/_static/default.css +0 -12
  16. pyfibermodes-0.17.4/docs/source/_static/favicon.png +0 -0
  17. pyfibermodes-0.17.4/docs/source/_static/favicon.svg +1 -0
  18. pyfibermodes-0.17.4/docs/source/_static/logo.svg +1 -0
  19. pyfibermodes-0.17.4/docs/source/conf.py +55 -0
  20. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/index.rst +1 -1
  21. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/pyproject.toml +2 -7
  22. pyfibermodes-0.17.3/.github/workflows/deploy_documentation.yml +0 -19
  23. pyfibermodes-0.17.3/docs/source/_static/favicon.png +0 -0
  24. pyfibermodes-0.17.3/docs/source/_static/layout.css +0 -89
  25. pyfibermodes-0.17.3/docs/source/conf.py +0 -197
  26. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/.coveragerc +0 -0
  27. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/.github/dependabot.yml +0 -0
  28. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/.github/workflows/deploy_PyPi.yml +0 -0
  29. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/.github/workflows/deploy_anaconda.yml +0 -0
  30. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/.github/workflows/deploy_coverage.yml +0 -0
  31. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/.github/workflows/quality.yml +0 -0
  32. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/.github/workflows/tests.yml +0 -0
  33. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/CITATION.cff +0 -0
  34. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/LICENSE +0 -0
  35. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/MANIFEST.in +0 -0
  36. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/__init__.py +0 -0
  37. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/analysis.py +0 -0
  38. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/coordinates.py +0 -0
  39. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/directories.py +0 -0
  40. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/exceptions.py +0 -0
  41. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/factory.py +0 -0
  42. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber.py +0 -0
  43. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/1550BHP.yaml +0 -0
  44. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/DCF13.yaml +0 -0
  45. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/DCF1300S_20.yaml +0 -0
  46. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/DCF1300S_26.yaml +0 -0
  47. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/DCF1300S_33.yaml +0 -0
  48. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/DCF1300S_42.yaml +0 -0
  49. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/F2028M12.yaml +0 -0
  50. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/F2028M21.yaml +0 -0
  51. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/F2028M24.yaml +0 -0
  52. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/F2058G1.yaml +0 -0
  53. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/F2058L1.yaml +0 -0
  54. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/HI1060.yaml +0 -0
  55. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/HP630.yaml +0 -0
  56. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/SM1950.yaml +0 -0
  57. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/SMF28.yaml +0 -0
  58. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/fluorine_doped_1%_capillary.yaml +0 -0
  59. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/fluorine_doped_2%_capillary.yaml +0 -0
  60. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/test_fiber.yaml +0 -0
  61. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fiber_files/test_multimode_fiber.yaml +0 -0
  62. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/field.py +0 -0
  63. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/fundamentals.py +0 -0
  64. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/loader.py +0 -0
  65. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/materials.py +0 -0
  66. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/mode.py +0 -0
  67. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/mode_instances.py +0 -0
  68. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/models.py +0 -0
  69. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/optimization.py +0 -0
  70. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/plotting.py +0 -0
  71. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/propagation.py +0 -0
  72. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/services.py +0 -0
  73. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/solver/__init__.py +0 -0
  74. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/solver/base_solver.py +0 -0
  75. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/solver/multilayer/__init__.py +0 -0
  76. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/solver/multilayer/effective_index.py +0 -0
  77. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/solver/protocols.py +0 -0
  78. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/solver/results.py +0 -0
  79. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/solver/three_layer/__init__.py +0 -0
  80. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/solver/three_layer/cutoff.py +0 -0
  81. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/solver/two_layer/__init__.py +0 -0
  82. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/solver/two_layer/cutoff.py +0 -0
  83. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/solver/two_layer/effective_index.py +0 -0
  84. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/source.py +0 -0
  85. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes/stepindex.py +0 -0
  86. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes.egg-info/dependency_links.txt +0 -0
  87. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/PyFiberModes.egg-info/top_level.txt +0 -0
  88. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/benchmarks/README.md +0 -0
  89. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/benchmarks/test_field_performance.py +0 -0
  90. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/Makefile +0 -0
  91. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/README.rst +0 -0
  92. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/SMF28/README.rst +0 -0
  93. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/SMF28/plot_smf28.py +0 -0
  94. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/SMF28/plot_smf28_dispersion_vs_wavelength.py +0 -0
  95. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/SMF28/plot_smf28_group_index_vs_wavelength.py +0 -0
  96. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/analysis/README.rst +0 -0
  97. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/analysis/plot_coupled_mode_exchange.py +0 -0
  98. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/analysis/plot_guided_mode_discovery.py +0 -0
  99. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/analysis/plot_structured_wavelength_sweep.py +0 -0
  100. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/basic/README.rst +0 -0
  101. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/basic/plot_U_vs_V.py +0 -0
  102. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/basic/plot_comparison_solvers.py +0 -0
  103. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/basic/plot_dispersion.py +0 -0
  104. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/basic/plot_effective_index.py +0 -0
  105. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/basic/plot_fiber_LP_modes.py +0 -0
  106. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/basic/plot_group_index.py +0 -0
  107. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/basic/plot_mode_field.py +0 -0
  108. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/basic/plot_mode_field_1.py +0 -0
  109. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/basic/plot_mode_field_2.py +0 -0
  110. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/basic/plot_neff_tapered_fiber.py +0 -0
  111. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/benchmarks/README.rst +0 -0
  112. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/benchmarks/plot_component_batching_speedup.py +0 -0
  113. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/benchmarks/plot_field_grid_scaling.py +0 -0
  114. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/benchmarks/plot_modal_cache_speedup.py +0 -0
  115. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/fields/README.rst +0 -0
  116. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/fields/plot_confinement_by_radius.py +0 -0
  117. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/fields/plot_polarization_rotation.py +0 -0
  118. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/fields/plot_vector_components.py +0 -0
  119. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/specialty_fibers/README.rst +0 -0
  120. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/specialty_fibers/plot_refractive_index_profile.py +0 -0
  121. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/specialty_fibers/plot_specialty_fiber_catalog.py +0 -0
  122. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/specialty_fibers/plot_specialty_mode_indices.py +0 -0
  123. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/validation/README.rst +0 -0
  124. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/validation/plot_effective_index_bounds.py +0 -0
  125. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/validation/plot_field_area_convergence.py +0 -0
  126. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/examples/validation/plot_normalized_effective_index.py +0 -0
  127. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/make.bat +0 -0
  128. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/_static/logo.png +0 -0
  129. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/_static/thumbnail.png +0 -0
  130. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/api_policy.rst +0 -0
  131. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/architecture.rst +0 -0
  132. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/code/analysis.rst +0 -0
  133. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/code/fibers.rst +0 -0
  134. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/code/fields.rst +0 -0
  135. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/code/fundamentals.rst +0 -0
  136. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/code.rst +0 -0
  137. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/examples.rst +0 -0
  138. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/getting_started.rst +0 -0
  139. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/guide.rst +0 -0
  140. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/migration_guide.rst +0 -0
  141. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/performance.rst +0 -0
  142. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/public_api_contract.rst +0 -0
  143. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/references.rst +0 -0
  144. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/resources.rst +0 -0
  145. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/theory.rst +0 -0
  146. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/troubleshooting.rst +0 -0
  147. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/user_guide/fibers.rst +0 -0
  148. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/user_guide/fields.rst +0 -0
  149. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/user_guide/index.rst +0 -0
  150. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/user_guide/modes.rst +0 -0
  151. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/user_guide/reproducibility.rst +0 -0
  152. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/user_guide/sweeps.rst +0 -0
  153. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/user_guide/units.rst +0 -0
  154. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/docs/source/workflows.rst +0 -0
  155. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/pytest.ini +0 -0
  156. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/setup.cfg +0 -0
  157. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/__init__.py +0 -0
  158. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/api_snapshot.json +0 -0
  159. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/helpers.py +0 -0
  160. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_advanced_features.py +0 -0
  161. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_api.py +0 -0
  162. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_architecture.py +0 -0
  163. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_architecture_enhancements.py +0 -0
  164. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_coordinates.py +0 -0
  165. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_docstrings.py +0 -0
  166. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_fiber.py +0 -0
  167. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_field.py +0 -0
  168. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_file_loading.py +0 -0
  169. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_physics_regression.py +0 -0
  170. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_public_api.py +0 -0
  171. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_release_tools.py +0 -0
  172. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_three_layer_solver.py +0 -0
  173. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_two_layer_solver.py +0 -0
  174. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tests/test_validation.py +0 -0
  175. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tools/check_release.py +0 -0
  176. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tools/next_release_version.py +0 -0
  177. {pyfibermodes-0.17.3 → pyfibermodes-0.17.4}/tools/release_tag.py +0 -0
@@ -0,0 +1,40 @@
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@a01969bc5af90666281f9d37acffdf6a4629763a
16
+ with:
17
+ python-version: "3.11"
18
+ package-name: PyFiberModes
19
+ apt-package: xvfb jq
20
+
21
+ maintain_documentation:
22
+ needs: documentation
23
+ if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v')) }}
24
+ runs-on: ubuntu-latest
25
+ steps:
26
+ - name: Install documentation landing page
27
+ uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
28
+ with:
29
+ ref: documentation_page
30
+ fetch-depth: 0
31
+ - run: |
32
+ set -Eeuo pipefail
33
+ git show "${GITHUB_SHA}:docs/redirect.html" > index.html
34
+ test -s docs/latest/index.html
35
+ git config user.name "github-actions[bot]"
36
+ git config user.email "github-actions[bot]@users.noreply.github.com"
37
+ git add index.html
38
+ if git diff --cached --quiet; then exit 0; fi
39
+ git commit -m "Update documentation landing page [skip ci]"
40
+ git push origin HEAD:documentation_page
@@ -34,6 +34,7 @@
34
34
  # But ignore docs/build inside docs and code
35
35
  docs/build/
36
36
  docs/source/gallery/
37
+ docs/source/sg_execution_times.rst
37
38
 
38
39
  # Compiled files in the project
39
40
  *__pycache__*
@@ -9,8 +9,8 @@
9
9
  "license": "MIT",
10
10
  "upload_type": "software",
11
11
  "access_right": "open",
12
- "version": "0.17.3",
13
- "publication_date": "2026-10-16",
12
+ "version": "0.17.4",
13
+ "publication_date": "2026-10-20",
14
14
  "keywords": [
15
15
  "optical fibers",
16
16
  "guided modes",
@@ -6,6 +6,8 @@ use [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.17.4] - 2026-10-20
10
+
9
11
  ## [0.17.3] - 2026-10-16
10
12
 
11
13
  ## [0.17.2] - 2026-10-13
@@ -167,7 +169,8 @@ use [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
167
169
 
168
170
  - Established the current tagged baseline for subsequent documented releases.
169
171
 
170
- [Unreleased]: https://github.com/MartinPdeS/PyFiberModes/compare/v0.17.3...HEAD
172
+ [Unreleased]: https://github.com/MartinPdeS/PyFiberModes/compare/v0.17.4...HEAD
173
+ [0.17.4]: https://github.com/MartinPdeS/PyFiberModes/releases/tag/v0.17.4
171
174
  [0.17.3]: https://github.com/MartinPdeS/PyFiberModes/releases/tag/v0.17.3
172
175
  [0.17.2]: https://github.com/MartinPdeS/PyFiberModes/releases/tag/v0.17.2
173
176
  [0.17.1]: https://github.com/MartinPdeS/PyFiberModes/releases/tag/v0.17.1
@@ -2,6 +2,8 @@
2
2
 
3
3
  Use Python 3.11 or newer. Install development dependencies with `python -m pip install -e ".[testing,documentation]"`, then run `python -m pytest`.
4
4
 
5
+ Build the documentation with `make docs`. The configuration and layout come from the published `MartinPdeS-docs` package. Run `make docs-install` first if documentation dependencies are missing; use `make docs PYTHON=/path/to/python` to select an environment. Gallery examples execute during the build.
6
+
5
7
  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
8
 
7
9
  The Conda recipe is at `conda.recipe/meta.yaml`. Do not commit generated documentation, virtual environments, build artefacts, or caches.
@@ -1,14 +1,18 @@
1
1
  .DEFAULT_GOAL := help
2
2
 
3
3
  PYTHON ?= python3
4
+ SPHINXOPTS ?=
5
+ DOCS_BUILD_DIR ?= docs/build
4
6
  TAG_VERSION ?= $(or $(VERSION),$(filter v%,$(MAKECMDGOALS)))
5
7
  RELEASE_KIND := $(filter major minor patch,$(MAKECMDGOALS))
6
8
 
7
- .PHONY: help test quality check release-check tag release major minor patch
9
+ .PHONY: help docs docs-install test quality check release-check tag release major minor patch
8
10
 
9
11
  help:
10
12
  @echo "PyFiberModes development commands"
11
13
  @echo ""
14
+ @echo " make docs Build documentation and execute gallery examples"
15
+ @echo " make docs-install Install the documentation dependencies"
12
16
  @echo " make test Run the test suite"
13
17
  @echo " make quality Run static quality checks"
14
18
  @echo " make check Run tests, quality, and release checks"
@@ -26,6 +30,12 @@ $(TAG_VERSION):
26
30
  endif
27
31
  endif
28
32
 
33
+ docs-install:
34
+ $(PYTHON) -m pip install -e ".[documentation]"
35
+
36
+ docs:
37
+ MPLBACKEND=Agg $(PYTHON) -m sphinx -M html docs/source "$(DOCS_BUILD_DIR)" $(SPHINXOPTS)
38
+
29
39
  test:
30
40
  MPLBACKEND=Agg $(PYTHON) -m pytest
31
41
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyFiberModes
3
- Version: 0.17.3
3
+ Version: 0.17.4
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
@@ -715,19 +715,14 @@ Requires-Dist: matplotlib>=3.8; extra == "plotting"
715
715
  Provides-Extra: benchmarking
716
716
  Requires-Dist: pytest-benchmark<6,>=5; extra == "benchmarking"
717
717
  Provides-Extra: documentation
718
+ Requires-Dist: MartinPdeS-docs<0.2,>=0.1.4; extra == "documentation"
718
719
  Requires-Dist: matplotlib>=3.8; extra == "documentation"
719
- Requires-Dist: numpydoc==1.11.0; extra == "documentation"
720
- Requires-Dist: sphinx>=5.1.1; extra == "documentation"
721
- Requires-Dist: sphinx-gallery==0.22.1; extra == "documentation"
722
- Requires-Dist: sphinx-design<1,>=0.6; extra == "documentation"
723
- Requires-Dist: sphinx-rtd-theme==3.1.0; extra == "documentation"
724
- Requires-Dist: pydata-sphinx-theme==0.22.0; extra == "documentation"
725
720
  Provides-Extra: dev
726
721
  Requires-Dist: ruff<1,>=0.8; extra == "dev"
727
722
  Requires-Dist: mypy<3,>=1.15; extra == "dev"
728
723
  Dynamic: license-file
729
724
 
730
- .. image:: https://raw.githubusercontent.com/MartinPdeS/PyFiberModes/master/docs/source/_static/logo.png
725
+ .. image:: https://raw.githubusercontent.com/MartinPdeS/PyFiberModes/master/docs/source/_static/logo.svg
731
726
  :width: 620
732
727
  :align: center
733
728
  :alt: PyFiberModes logo
@@ -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.17.3'
22
- __version_tuple__ = version_tuple = (0, 17, 3)
21
+ __version__ = version = '0.17.4'
22
+ __version_tuple__ = version_tuple = (0, 17, 4)
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.17.3
3
+ Version: 0.17.4
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
@@ -715,19 +715,14 @@ Requires-Dist: matplotlib>=3.8; extra == "plotting"
715
715
  Provides-Extra: benchmarking
716
716
  Requires-Dist: pytest-benchmark<6,>=5; extra == "benchmarking"
717
717
  Provides-Extra: documentation
718
+ Requires-Dist: MartinPdeS-docs<0.2,>=0.1.4; extra == "documentation"
718
719
  Requires-Dist: matplotlib>=3.8; extra == "documentation"
719
- Requires-Dist: numpydoc==1.11.0; extra == "documentation"
720
- Requires-Dist: sphinx>=5.1.1; extra == "documentation"
721
- Requires-Dist: sphinx-gallery==0.22.1; extra == "documentation"
722
- Requires-Dist: sphinx-design<1,>=0.6; extra == "documentation"
723
- Requires-Dist: sphinx-rtd-theme==3.1.0; extra == "documentation"
724
- Requires-Dist: pydata-sphinx-theme==0.22.0; extra == "documentation"
725
720
  Provides-Extra: dev
726
721
  Requires-Dist: ruff<1,>=0.8; extra == "dev"
727
722
  Requires-Dist: mypy<3,>=1.15; extra == "dev"
728
723
  Dynamic: license-file
729
724
 
730
- .. image:: https://raw.githubusercontent.com/MartinPdeS/PyFiberModes/master/docs/source/_static/logo.png
725
+ .. image:: https://raw.githubusercontent.com/MartinPdeS/PyFiberModes/master/docs/source/_static/logo.svg
731
726
  :width: 620
732
727
  :align: center
733
728
  :alt: PyFiberModes logo
@@ -78,6 +78,7 @@ benchmarks/test_field_performance.py
78
78
  conda.recipe/meta.yaml
79
79
  docs/Makefile
80
80
  docs/make.bat
81
+ docs/redirect.html
81
82
  docs/examples/README.rst
82
83
  docs/examples/SMF28/README.rst
83
84
  docs/examples/SMF28/plot_smf28.py
@@ -132,8 +133,9 @@ docs/source/troubleshooting.rst
132
133
  docs/source/workflows.rst
133
134
  docs/source/_static/default.css
134
135
  docs/source/_static/favicon.png
135
- docs/source/_static/layout.css
136
+ docs/source/_static/favicon.svg
136
137
  docs/source/_static/logo.png
138
+ docs/source/_static/logo.svg
137
139
  docs/source/_static/thumbnail.png
138
140
  docs/source/code/analysis.rst
139
141
  docs/source/code/fibers.rst
@@ -11,13 +11,8 @@ ruff<1,>=0.8
11
11
  mypy<3,>=1.15
12
12
 
13
13
  [documentation]
14
+ MartinPdeS-docs<0.2,>=0.1.4
14
15
  matplotlib>=3.8
15
- numpydoc==1.11.0
16
- sphinx>=5.1.1
17
- sphinx-gallery==0.22.1
18
- sphinx-design<1,>=0.6
19
- sphinx-rtd-theme==3.1.0
20
- pydata-sphinx-theme==0.22.0
21
16
 
22
17
  [plotting]
23
18
  matplotlib>=3.8
@@ -1,4 +1,4 @@
1
- .. image:: https://raw.githubusercontent.com/MartinPdeS/PyFiberModes/master/docs/source/_static/logo.png
1
+ .. image:: https://raw.githubusercontent.com/MartinPdeS/PyFiberModes/master/docs/source/_static/logo.svg
2
2
  :width: 620
3
3
  :align: center
4
4
  :alt: PyFiberModes logo
@@ -1,6 +1,6 @@
1
1
  package:
2
2
  name: pyfibermodes
3
- version: 0.17.3
3
+ version: 0.17.4
4
4
 
5
5
  source:
6
6
  path: ../
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="refresh" content="0; url=docs/latest/index.html">
6
+ <link rel="canonical" href="docs/latest/index.html">
7
+ <title>PyFiberModes documentation</title>
8
+ </head>
9
+ <body>
10
+ <p>Opening the <a href="docs/latest/index.html">PyFiberModes documentation</a>.</p>
11
+ </body>
12
+ </html>
@@ -29,18 +29,6 @@ div.highlight a {
29
29
  box-shadow: 0 0.8rem 1.8rem rgb(14 34 90 / 16%);
30
30
  }
31
31
 
32
- .navbar-brand img,
33
- .bd-header .navbar-brand img {
34
- max-height: 3rem;
35
- }
36
-
37
32
  .bd-content img[alt="PyFiberModes logo"] {
38
33
  filter: drop-shadow(0 0.7rem 1rem rgb(20 217 255 / 20%));
39
34
  }
40
-
41
- /* Keep desktop navigation labels compact and on a single line. */
42
- @media (min-width: 960px) {
43
- .bd-header .navbar-nav .nav-link {
44
- white-space: nowrap;
45
- }
46
- }
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><defs><linearGradient id="r" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#8cecff"/><stop offset=".5" stop-color="#16a8d0"/><stop offset="1" stop-color="#172c68"/></linearGradient><radialGradient id="c" cx="35%" cy="32%"><stop stop-color="#d9fbff"/><stop offset="1" stop-color="#08759d"/></radialGradient><radialGradient id="v" cx="35%" cy="32%"><stop stop-color="#f1edff"/><stop offset="1" stop-color="#3c277e"/></radialGradient></defs><rect width="128" height="128" rx="28" fill="#071632"/><circle cx="64" cy="64" r="48" fill="#071632" stroke="url(#r)" stroke-width="10"/><ellipse cx="52" cy="64" rx="23" ry="34" fill="url(#c)"/><ellipse cx="76" cy="64" rx="23" ry="34" fill="url(#v)" opacity=".92"/><circle cx="64" cy="64" r="7" fill="#fff" opacity=".85"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 560 130" role="img" aria-labelledby="t"><title id="t">PyFiberModes</title><defs><linearGradient id="r" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#8cecff"/><stop offset=".5" stop-color="#16a8d0"/><stop offset="1" stop-color="#172c68"/></linearGradient><radialGradient id="c" cx="35%" cy="32%"><stop stop-color="#d9fbff"/><stop offset=".2" stop-color="#31d5ed"/><stop offset="1" stop-color="#08759d"/></radialGradient><radialGradient id="v" cx="35%" cy="32%"><stop stop-color="#f1edff"/><stop offset=".2" stop-color="#a88cff"/><stop offset="1" stop-color="#3c277e"/></radialGradient><filter id="s"><feDropShadow dx="0" dy="7" stdDeviation="5" flood-color="#07152e" flood-opacity=".7"/></filter></defs><g filter="url(#s)"><circle cx="98" cy="65" r="55" fill="#071632" stroke="url(#r)" stroke-width="11"/><ellipse cx="82" cy="65" rx="27" ry="39" fill="url(#c)"/><ellipse cx="113" cy="65" rx="27" ry="39" fill="url(#v)" opacity=".92"/><circle cx="98" cy="65" r="8" fill="#fff" opacity=".8"/><path d="M40 65H20M156 65h20" stroke="#efa31e" stroke-width="10" stroke-linecap="round"/></g><text x="205" y="82" fill="#10244b" font-family="Arial,sans-serif" font-size="42" font-weight="700">PyFiberModes</text></svg>
@@ -0,0 +1,55 @@
1
+ """PyFiberModes documentation, using the shared MartinPdeS-docs theme."""
2
+
3
+ import os
4
+ from pathlib import Path
5
+ import sys
6
+ import tomllib
7
+
8
+ from martinpdes_docs import configure
9
+
10
+
11
+ ROOT = Path(__file__).resolve().parents[2]
12
+ # Gallery examples and autodoc must describe this checkout.
13
+ sys.path.insert(0, str(ROOT))
14
+
15
+ examples_sections = [
16
+ "basic",
17
+ "SMF28",
18
+ "specialty_fibers",
19
+ "fields",
20
+ "analysis",
21
+ "validation",
22
+ "benchmarks",
23
+ ]
24
+
25
+ globals().update(
26
+ configure(
27
+ project="PyFiberModes",
28
+ package="PyFiberModes",
29
+ repository="MartinPdeS/PyFiberModes",
30
+ logo="_static/logo.svg",
31
+ favicon="_static/favicon.svg",
32
+ version=os.getenv("tag", "latest"),
33
+ html_theme_options={
34
+ "logo": {"text": "", "image": "_static/logo.svg"},
35
+ },
36
+ sphinx_gallery_conf={
37
+ "examples_dirs": [f"../examples/{name}" for name in examples_sections],
38
+ "gallery_dirs": [f"gallery/{name}" for name in examples_sections],
39
+ "default_thumb_file": str(
40
+ Path(__file__).resolve().parent / "_static" / "favicon.png"
41
+ ),
42
+ "within_subsection_order": "FileNameSortKey",
43
+ "abort_on_example_error": True,
44
+ },
45
+ )
46
+ )
47
+
48
+ extensions += ["sphinx.ext.mathjax", "sphinx.ext.autosectionlabel"]
49
+ autodoc_default_options["members"] = True
50
+ html_context["doc_path"] = "docs/source"
51
+ html_context["default_mode"] = "dark"
52
+
53
+ # Keep page substitutions independent of importing the numerical package.
54
+ metadata = tomllib.loads((ROOT / "pyproject.toml").read_text(encoding="utf-8"))
55
+ version = release = metadata["project"]["version"]
@@ -1,6 +1,6 @@
1
1
  **Date**: |today|, **Version**: |version|
2
2
 
3
- .. image:: _static/logo.png
3
+ .. image:: _static/logo.svg
4
4
  :width: 620
5
5
  :align: center
6
6
  :alt: PyFiberModes logo
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "PyFiberModes"
7
- version = "0.17.3"
7
+ version = "0.17.4"
8
8
  description = "Guided-mode analysis and design for circular optical fibers."
9
9
  license = {file = "LICENSE"}
10
10
  readme = "README.rst"
@@ -79,13 +79,8 @@ benchmarking = [
79
79
 
80
80
 
81
81
  documentation = [
82
+ "MartinPdeS-docs>=0.1.4,<0.2",
82
83
  "matplotlib>=3.8",
83
- "numpydoc ==1.11.0",
84
- "sphinx >=5.1.1",
85
- "sphinx-gallery ==0.22.1",
86
- "sphinx-design >=0.6,<1",
87
- "sphinx-rtd-theme ==3.1.0",
88
- "pydata-sphinx-theme ==0.22.0",
89
84
  ]
90
85
 
91
86
  dev = [
@@ -1,19 +0,0 @@
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
@@ -1,89 +0,0 @@
1
- html {
2
- --documentation-sidebar-width: 16rem;
3
- --pst-sidebar-secondary: 15rem;
4
- }
5
-
6
- .bd-page-width {
7
- max-width: none;
8
- }
9
-
10
- .bd-container .bd-container__inner {
11
- width: 100%;
12
- }
13
-
14
- .bd-main .bd-content .bd-article-container {
15
- flex: 1 1 0;
16
- min-width: 0;
17
- max-width: none;
18
- padding: clamp(1rem, 2.5vw, 3rem);
19
- }
20
-
21
- .bd-main .bd-content .bd-article-container .bd-article {
22
- max-width: 78rem;
23
- margin-inline: auto;
24
- padding: 0;
25
- font-size: 1.025rem;
26
- line-height: 1.65;
27
- overflow-wrap: break-word;
28
- }
29
-
30
- @media (min-width: 960px) {
31
- .bd-sidebar-primary,
32
- .bd-sidebar-primary.pst-squeeze {
33
- --pst-sidebar-primary-width: var(--documentation-sidebar-width);
34
- flex: 0 0 var(--documentation-sidebar-width);
35
- width: var(--documentation-sidebar-width);
36
- }
37
-
38
- #pst-primary-sidebar .pst-sidebar-collapse {
39
- display: none;
40
- }
41
- }
42
-
43
- @media (min-width: 768px) {
44
- #pst-header .navbar-nav {
45
- gap: 0.3rem;
46
- }
47
-
48
- #pst-header .navbar-nav .nav-item {
49
- position: relative;
50
- }
51
-
52
- #pst-header .navbar-nav > .nav-item:not(:last-child)::after {
53
- position: absolute;
54
- top: 50%;
55
- right: -0.15rem;
56
- height: 1rem;
57
- border-right: 1px solid var(--pst-color-border);
58
- content: "";
59
- transform: translateY(-50%);
60
- pointer-events: none;
61
- }
62
-
63
- #pst-header .navbar-nav .nav-link {
64
- padding: 0.65rem 0.8rem;
65
- border-radius: 0.4rem;
66
- font-size: 1.05rem;
67
- font-weight: 600;
68
- }
69
- }
70
-
71
- @media (min-width: 1200px) {
72
- #pst-header .navbar-brand {
73
- box-sizing: border-box;
74
- flex: 0 0 var(--documentation-sidebar-width);
75
- width: var(--documentation-sidebar-width);
76
- }
77
-
78
- #pst-header .navbar-brand img.logo__image {
79
- width: 4rem;
80
- height: 4rem;
81
- object-fit: contain;
82
- }
83
-
84
- #pst-header .navbar-brand .logo__title {
85
- font-size: 2rem;
86
- line-height: 1;
87
- letter-spacing: -0.035em;
88
- }
89
- }