scientific-computing-system 2.2.0__tar.gz → 2.2.1__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 (427) hide show
  1. scientific_computing_system-2.2.1/.github/workflows/npm-publish.yml +403 -0
  2. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/CHANGELOG.md +271 -0
  3. scientific_computing_system-2.2.1/CITATION.cff +54 -0
  4. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/CONTRIBUTING.md +1 -1
  5. scientific_computing_system-2.2.1/PKG-INFO +306 -0
  6. scientific_computing_system-2.2.1/README.md +210 -0
  7. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/SECURITY.md +32 -6
  8. scientific_computing_system-2.2.1/codemeta.json +28 -0
  9. scientific_computing_system-2.2.1/docs/ARCHITECTURE.md +375 -0
  10. scientific_computing_system-2.2.1/docs/api.md +350 -0
  11. scientific_computing_system-2.2.1/docs/benchmarks.md +177 -0
  12. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/cookbook.md +18 -3
  13. scientific_computing_system-2.2.1/docs/getting-started.md +260 -0
  14. scientific_computing_system-2.2.1/docs/index.md +153 -0
  15. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/ml_reference.md +30 -11
  16. scientific_computing_system-2.2.1/docs/related.md +22 -0
  17. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/research-workflows.md +41 -9
  18. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/core_demo.md +6 -2
  19. scientific_computing_system-2.2.1/docs/tutorials/data_analysis_demo.md +85 -0
  20. scientific_computing_system-2.2.1/docs/tutorials/diffeq_demo.md +66 -0
  21. scientific_computing_system-2.2.1/docs/tutorials/graph_demo.md +61 -0
  22. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/math_utils_demo.md +7 -3
  23. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/ml_advanced_demo.md +3 -1
  24. scientific_computing_system-2.2.1/docs/tutorials/montecarlo_demo.md +64 -0
  25. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/nlp_attention_demo.md +48 -14
  26. scientific_computing_system-2.2.1/docs/why-pure-python.md +67 -0
  27. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/mkdocs.yml +1 -0
  28. scientific_computing_system-2.2.1/npm.test.js +984 -0
  29. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/package.json +2 -3
  30. scientific_computing_system-2.2.1/paper.bib +20 -0
  31. scientific_computing_system-2.2.1/paper.md +55 -0
  32. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/pyproject.toml +8 -1
  33. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/scripts/check_version_lockstep.py +26 -0
  34. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/_version.py +1 -1
  35. scientific_computing_system-2.2.1/tests/test_codemeta_version_lockstep.py +239 -0
  36. scientific_computing_system-2.2.1/tests/test_readme_surface.py +142 -0
  37. scientific_computing_system-2.2.0/.github/workflows/npm-publish.yml +0 -27
  38. scientific_computing_system-2.2.0/CITATION.cff +0 -29
  39. scientific_computing_system-2.2.0/PKG-INFO +0 -175
  40. scientific_computing_system-2.2.0/README.md +0 -79
  41. scientific_computing_system-2.2.0/docs/ARCHITECTURE.md +0 -252
  42. scientific_computing_system-2.2.0/docs/api.md +0 -133
  43. scientific_computing_system-2.2.0/docs/benchmarks.md +0 -62
  44. scientific_computing_system-2.2.0/docs/getting-started.md +0 -185
  45. scientific_computing_system-2.2.0/docs/index.md +0 -119
  46. scientific_computing_system-2.2.0/docs/related.md +0 -14
  47. scientific_computing_system-2.2.0/docs/tutorials/data_analysis_demo.md +0 -43
  48. scientific_computing_system-2.2.0/docs/tutorials/diffeq_demo.md +0 -48
  49. scientific_computing_system-2.2.0/docs/tutorials/graph_demo.md +0 -45
  50. scientific_computing_system-2.2.0/docs/tutorials/montecarlo_demo.md +0 -42
  51. scientific_computing_system-2.2.0/docs/why-pure-python.md +0 -19
  52. scientific_computing_system-2.2.0/npm.test.js +0 -169
  53. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/.github/workflows/benchmarks.yml +0 -0
  54. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/.github/workflows/bot-reviewer.yml +0 -0
  55. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/.github/workflows/changelog.yml +0 -0
  56. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/.github/workflows/cli-package-smoke.yml +0 -0
  57. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/.github/workflows/codeql.yml +0 -0
  58. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/.github/workflows/pr-automation.yml +0 -0
  59. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/.github/workflows/pypi-registry-smoke.yml +0 -0
  60. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/.github/workflows/release.yml +0 -0
  61. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/.github/workflows/tests.yml +0 -0
  62. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/.gitignore +0 -0
  63. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/LICENSE +0 -0
  64. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/benchmarks/results.json +0 -0
  65. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/benchmarks/robust_runner.py +0 -0
  66. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/benchmarks/run_benchmarks.py +0 -0
  67. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/bin/scs.js +0 -0
  68. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/dashboard/app.py +0 -0
  69. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/CASE_STUDY_HUBBLE.md +0 -0
  70. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/CASE_STUDY_QUANTUM_ML.md +0 -0
  71. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/assets/icon.svg +0 -0
  72. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/assets/logo.svg +0 -0
  73. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/maintenance.md +0 -0
  74. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/stylesheets/extra.css +0 -0
  75. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tour_of_numerical_methods.md +0 -0
  76. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/fft2_demo.md +0 -0
  77. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/hypothesis_demo.md +0 -0
  78. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/hypothesis_tests_demo.md +0 -0
  79. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/hypothesis_with_stats_demo.md +0 -0
  80. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/knowledge_demo.md +0 -0
  81. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/linalg_demo.md +0 -0
  82. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/ml_and_viz_demo.md +0 -0
  83. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/ml_demo.md +0 -0
  84. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/modeling_demo.md +0 -0
  85. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/nlp_bpe_demo.md +0 -0
  86. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/nlp_mini_gpt_demo.md +0 -0
  87. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/nlp_viz.md +0 -0
  88. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/numerical_integration_demo.md +0 -0
  89. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/optimization_demo.md +0 -0
  90. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/pandas_io_demo.md +0 -0
  91. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/pca_demo.md +0 -0
  92. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/probability_demo.md +0 -0
  93. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/quantum_demo.md +0 -0
  94. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/quick_start.md +0 -0
  95. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/scientific_demo.md +0 -0
  96. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/signals_demo.md +0 -0
  97. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/stats_demo.md +0 -0
  98. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/stiff_ode_demo.md +0 -0
  99. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/docs/tutorials/time_series_demo.md +0 -0
  100. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/core_demo.py +0 -0
  101. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/data_analysis_demo.py +0 -0
  102. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/diffeq_demo.py +0 -0
  103. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/discovery_pipeline_demo.py +0 -0
  104. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/ensemble_showcase.py +0 -0
  105. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/fft2_demo.py +0 -0
  106. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/graph_demo.py +0 -0
  107. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/hypothesis_custom_generator.py +0 -0
  108. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/hypothesis_demo.py +0 -0
  109. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/hypothesis_tests_demo.py +0 -0
  110. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/hypothesis_with_stats_demo.py +0 -0
  111. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/interpolate_demo.py +0 -0
  112. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/knowledge_demo.py +0 -0
  113. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/linalg_demo.py +0 -0
  114. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/math_utils_demo.py +0 -0
  115. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/ml_and_viz_demo.py +0 -0
  116. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/modeling_demo.py +0 -0
  117. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/montecarlo_demo.py +0 -0
  118. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/nlp_attention_demo.py +0 -0
  119. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/nlp_bpe_demo.py +0 -0
  120. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/nlp_mini_gpt_demo.py +0 -0
  121. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/nlp_viz_demo.py +0 -0
  122. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/numerical_integration_demo.py +0 -0
  123. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/optimization_demo.py +0 -0
  124. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/pca_demo.py +0 -0
  125. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/pde_demo.py +0 -0
  126. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/plot_demo.py +0 -0
  127. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/plotting_notebook.ipynb +0 -0
  128. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/probability_demo.py +0 -0
  129. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/quantum_demo.py +0 -0
  130. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/scientific_demo.py +0 -0
  131. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/signals_demo.py +0 -0
  132. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/stats_demo.py +0 -0
  133. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/examples/tour_of_numerical_methods.ipynb +0 -0
  134. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/index.js +0 -0
  135. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/requirements-build.lock +0 -0
  136. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/requirements-dev.lock +0 -0
  137. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/requirements.lock +0 -0
  138. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/scripts/check_version_discipline.py +0 -0
  139. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/scripts/publish.py +0 -0
  140. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/scripts/verify_cli_install.py +0 -0
  141. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/scripts/verify_cookbook.py +0 -0
  142. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/scripts/verify_ml_reference.py +0 -0
  143. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/scripts/verify_pypi_release.py +0 -0
  144. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/scripts/verify_release_integrity.py +0 -0
  145. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/__init__.py +0 -0
  146. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/__main__.py +0 -0
  147. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/_paths.py +0 -0
  148. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/bayes/__init__.py +0 -0
  149. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/bayes/conjugate.py +0 -0
  150. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/causal.py +0 -0
  151. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/cli/__init__.py +0 -0
  152. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/cli/__main__.py +0 -0
  153. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/cli/_handlers.py +0 -0
  154. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/cli/_parser.py +0 -0
  155. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/cli/_style.py +0 -0
  156. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/cli/_system_info.py +0 -0
  157. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/core/__init__.py +0 -0
  158. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/core/_numeric.py +0 -0
  159. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/core/models.py +0 -0
  160. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/data_analysis/__init__.py +0 -0
  161. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/data_analysis/dataset.py +0 -0
  162. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/data_analysis/loader.py +0 -0
  163. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/data_analysis/pandas_io.py +0 -0
  164. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/data_analysis/transform.py +0 -0
  165. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/data_analysis/viz.py +0 -0
  166. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/data_io/__init__.py +0 -0
  167. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/data_io/scientific.py +0 -0
  168. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/data_io/streaming.py +0 -0
  169. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/diffeq/__init__.py +0 -0
  170. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/diffeq/_implicit.py +0 -0
  171. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/diffeq/solvers.py +0 -0
  172. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/diffeq/symplectic.py +0 -0
  173. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/fractals/__init__.py +0 -0
  174. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/fractals/sets.py +0 -0
  175. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/genetics/__init__.py +0 -0
  176. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/genetics/sequence.py +0 -0
  177. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/graph/__init__.py +0 -0
  178. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/graph/algorithms.py +0 -0
  179. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/hypothesis/__init__.py +0 -0
  180. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/hypothesis/evaluator.py +0 -0
  181. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/hypothesis/generator.py +0 -0
  182. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/hypothesis/mining.py +0 -0
  183. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/infotheory/__init__.py +0 -0
  184. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/infotheory/measures.py +0 -0
  185. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/interpolate/__init__.py +0 -0
  186. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/knowledge/__init__.py +0 -0
  187. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/knowledge/graph.py +0 -0
  188. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/knowledge/notes.py +0 -0
  189. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/knowledge/retrieval.py +0 -0
  190. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/math_utils/__init__.py +0 -0
  191. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/math_utils/calculus.py +0 -0
  192. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/math_utils/linalg.py +0 -0
  193. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/math_utils/special.py +0 -0
  194. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/math_utils/svd.py +0 -0
  195. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/__init__.py +0 -0
  196. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/boosting.py +0 -0
  197. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/clustering.py +0 -0
  198. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/decomposition.py +0 -0
  199. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/ensemble.py +0 -0
  200. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/linear_models.py +0 -0
  201. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/metrics.py +0 -0
  202. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/model_selection.py +0 -0
  203. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/naive_bayes.py +0 -0
  204. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/neighbors.py +0 -0
  205. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/neural.py +0 -0
  206. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/preprocessing.py +0 -0
  207. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/tree.py +0 -0
  208. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/ml/voting.py +0 -0
  209. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/modeling/__init__.py +0 -0
  210. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/modeling/_base.py +0 -0
  211. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/modeling/_nodes.py +0 -0
  212. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/modeling/expression.py +0 -0
  213. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/modeling/fitting.py +0 -0
  214. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/modeling/model.py +0 -0
  215. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/modeling/solver.py +0 -0
  216. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/montecarlo/__init__.py +0 -0
  217. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/montecarlo/markov.py +0 -0
  218. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/montecarlo/methods.py +0 -0
  219. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/__init__.py +0 -0
  220. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/attention.py +0 -0
  221. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/autograd/__init__.py +0 -0
  222. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/autograd/_grad.py +0 -0
  223. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/autograd/ops.py +0 -0
  224. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/autograd/tensor.py +0 -0
  225. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/bpe.py +0 -0
  226. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/data.py +0 -0
  227. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/embed.py +0 -0
  228. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/layers.py +0 -0
  229. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/model.py +0 -0
  230. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/optim.py +0 -0
  231. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/training.py +0 -0
  232. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/nlp/viz.py +0 -0
  233. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/numerical_integration/__init__.py +0 -0
  234. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/numerical_integration/quadrature.py +0 -0
  235. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/optimization/__init__.py +0 -0
  236. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/optimization/_metaheuristics.py +0 -0
  237. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/optimization/constrained.py +0 -0
  238. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/optimization/minimize.py +0 -0
  239. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/pde/__init__.py +0 -0
  240. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/plot/__init__.py +0 -0
  241. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/plot/_backend.py +0 -0
  242. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/plot/charts.py +0 -0
  243. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/probability/__init__.py +0 -0
  244. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/probability/_advanced.py +0 -0
  245. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/probability/distributions.py +0 -0
  246. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/probability/extra_distributions.py +0 -0
  247. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/provenance/__init__.py +0 -0
  248. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/provenance/manifest.py +0 -0
  249. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/py.typed +0 -0
  250. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/quantum/__init__.py +0 -0
  251. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/quantum/circuit.py +0 -0
  252. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/quantum/multi_qubit.py +0 -0
  253. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/quantum/simulator.py +0 -0
  254. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/scientific/__init__.py +0 -0
  255. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/scientific/constants.py +0 -0
  256. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/scientific/formulas.py +0 -0
  257. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/sensitivity.py +0 -0
  258. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/signals/__init__.py +0 -0
  259. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/signals/filters.py +0 -0
  260. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/signals/processing.py +0 -0
  261. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/signals/stft.py +0 -0
  262. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/signals/wavelet.py +0 -0
  263. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/stats/__init__.py +0 -0
  264. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/stats/_distributions.py +0 -0
  265. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/stats/bootstrap.py +0 -0
  266. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/stats/descriptive.py +0 -0
  267. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/stats/hypothesis_tests.py +0 -0
  268. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/stats/multiple_testing.py +0 -0
  269. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/stats/nonparametric.py +0 -0
  270. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/stats/power.py +0 -0
  271. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/stats/regression.py +0 -0
  272. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/stats/time_series.py +0 -0
  273. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/tools/__init__.py +0 -0
  274. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/tools/adapters.py +0 -0
  275. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/tools/registry.py +0 -0
  276. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/uncertainty/__init__.py +0 -0
  277. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/uncertainty/propagation.py +0 -0
  278. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/units/__init__.py +0 -0
  279. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/units/core.py +0 -0
  280. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/validation/__init__.py +0 -0
  281. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/validation/adequacy.py +0 -0
  282. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/validation/checks.py +0 -0
  283. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/validation/drift.py +0 -0
  284. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/validation/report.py +0 -0
  285. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/wavelets/__init__.py +0 -0
  286. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/wavelets/haar.py +0 -0
  287. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/workflow/__init__.py +0 -0
  288. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/workflow/engine.py +0 -0
  289. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/workflow/gates.py +0 -0
  290. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/workflow/orchestrator.py +0 -0
  291. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/workflow/selection.py +0 -0
  292. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/workflow/tooling.py +0 -0
  293. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/src/cds/workflow/types.py +0 -0
  294. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/__init__.py +0 -0
  295. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/conftest.py +0 -0
  296. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_advanced_fitting.py +0 -0
  297. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_audit_completion_coverage.py +0 -0
  298. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_audit_guard_coverage.py +0 -0
  299. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_audit_hardening.py +0 -0
  300. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_audit_hardening_coverage.py +0 -0
  301. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_bayes_v2.py +0 -0
  302. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_benchmarks.py +0 -0
  303. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_bootstrap.py +0 -0
  304. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_causal.py +0 -0
  305. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_cli.py +0 -0
  306. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_cli_color.py +0 -0
  307. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_cli_extended.py +0 -0
  308. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_cli_system_info.py +0 -0
  309. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_constrained_opt.py +0 -0
  310. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_core.py +0 -0
  311. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_data_analysis.py +0 -0
  312. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_data_analysis_lazy_bridge.py +0 -0
  313. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_data_analysis_pandas_io.py +0 -0
  314. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_data_io.py +0 -0
  315. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_data_io_optional_backends.py +0 -0
  316. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_data_io_scientific.py +0 -0
  317. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_dataset.py +0 -0
  318. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_dev_numpy_pin_contract.py +0 -0
  319. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_diffeq.py +0 -0
  320. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_diffeq_implicit.py +0 -0
  321. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_domain_validation.py +0 -0
  322. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_edge_misc_numerical.py +0 -0
  323. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_edge_ml_quantum_linalg.py +0 -0
  324. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_edge_nlp.py +0 -0
  325. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_edge_quantum_evaluator_cli.py +0 -0
  326. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_edge_stats_optimization_signals.py +0 -0
  327. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_extra_distributions.py +0 -0
  328. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_fft2.py +0 -0
  329. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_fitting_bootstrap.py +0 -0
  330. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_fractals.py +0 -0
  331. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_genetics.py +0 -0
  332. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_graph.py +0 -0
  333. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_hardening_privacy_provenance.py +0 -0
  334. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_hypothesis.py +0 -0
  335. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_hypothesis_engine.py +0 -0
  336. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_hypothesis_mining.py +0 -0
  337. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_hypothesis_tests.py +0 -0
  338. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_infotheory.py +0 -0
  339. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_interpolate.py +0 -0
  340. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_knowledge.py +0 -0
  341. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_layering.py +0 -0
  342. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_linalg_extended.py +0 -0
  343. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_linalg_qr_cholesky.py +0 -0
  344. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_markov.py +0 -0
  345. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_math_utils.py +0 -0
  346. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_boosting.py +0 -0
  347. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_clustering.py +0 -0
  348. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_ensemble.py +0 -0
  349. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_knn.py +0 -0
  350. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_linreg.py +0 -0
  351. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_logreg.py +0 -0
  352. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_metrics.py +0 -0
  353. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_model_selection.py +0 -0
  354. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_naive_bayes.py +0 -0
  355. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_pca.py +0 -0
  356. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_preprocessing.py +0 -0
  357. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_tree.py +0 -0
  358. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_viz.py +0 -0
  359. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_ml_voting.py +0 -0
  360. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_modeling.py +0 -0
  361. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_modeling_fit_validation.py +0 -0
  362. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_montecarlo.py +0 -0
  363. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_multi_qubit.py +0 -0
  364. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_nlp_attention.py +0 -0
  365. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_nlp_autograd.py +0 -0
  366. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_nlp_bpe.py +0 -0
  367. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_nlp_embed.py +0 -0
  368. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_nlp_layers.py +0 -0
  369. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_nlp_model.py +0 -0
  370. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_nlp_training.py +0 -0
  371. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_nlp_viz.py +0 -0
  372. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_numerical_integration.py +0 -0
  373. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_numerical_invariants.py +0 -0
  374. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_numerical_oracles.py +0 -0
  375. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_optimization.py +0 -0
  376. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_optimization_metaheuristics.py +0 -0
  377. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_path_confinement.py +0 -0
  378. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_pde.py +0 -0
  379. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_plot_charts.py +0 -0
  380. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_plot_lazy.py +0 -0
  381. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_power.py +0 -0
  382. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_probability.py +0 -0
  383. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_probability_advanced.py +0 -0
  384. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_property_invariants.py +0 -0
  385. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_provenance.py +0 -0
  386. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_provenance_audit_hardening.py +0 -0
  387. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_public_api.py +0 -0
  388. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_quantum.py +0 -0
  389. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_readme_badges.py +0 -0
  390. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_release_contract.py +0 -0
  391. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_retrieval.py +0 -0
  392. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_runtime_dependency_graph.py +0 -0
  393. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_scientific.py +0 -0
  394. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_selection_audit_hardening.py +0 -0
  395. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_sensitivity.py +0 -0
  396. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_sensitivity_global.py +0 -0
  397. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_signals.py +0 -0
  398. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_signals_filters.py +0 -0
  399. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_special_invariants.py +0 -0
  400. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_special_numerics.py +0 -0
  401. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_statistical_audit.py +0 -0
  402. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_stats.py +0 -0
  403. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_stats_audit_coverage.py +0 -0
  404. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_stats_multiple_testing.py +0 -0
  405. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_stats_nonparametric.py +0 -0
  406. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_stats_time_series.py +0 -0
  407. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_stft.py +0 -0
  408. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_streaming_analytics.py +0 -0
  409. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_svd.py +0 -0
  410. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_symplectic.py +0 -0
  411. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_tool_adapters.py +0 -0
  412. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_tools_registry.py +0 -0
  413. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_uncertainty.py +0 -0
  414. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_units.py +0 -0
  415. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_validation.py +0 -0
  416. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_validation_adequacy.py +0 -0
  417. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_validation_advanced.py +0 -0
  418. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_validation_drift.py +0 -0
  419. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_wavelet.py +0 -0
  420. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_wavelets_v2.py +0 -0
  421. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_workflow.py +0 -0
  422. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_workflow_gates.py +0 -0
  423. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_workflow_orchestrator.py +0 -0
  424. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_workflow_orchestrator_blocked_review.py +0 -0
  425. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_workflow_selection.py +0 -0
  426. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_workflow_selection_coverage.py +0 -0
  427. {scientific_computing_system-2.2.0 → scientific_computing_system-2.2.1}/tests/test_workflow_tooling.py +0 -0
@@ -0,0 +1,403 @@
1
+ name: npm Publish
2
+
3
+ # Sole npm publish authority for this repository.
4
+ #
5
+ # ## What this package is
6
+ #
7
+ # `scientific-computing-system` on npm is a *launcher shim*: it ships
8
+ # `index.js` and `bin/scs.js` (plus README/CHANGELOG/LICENSE/SECURITY) and
9
+ # nothing else. It contains no Python. `scs` locates a Python interpreter and
10
+ # execs `python -m cds`, which comes from the PyPI distribution. The npm package
11
+ # is therefore only useful alongside `pip install scientific-computing-system`;
12
+ # the launcher exits non-zero with an actionable message when no interpreter or
13
+ # no `cds` package is present. This is stated in package.json's description and
14
+ # asserted by npm.test.js.
15
+ #
16
+ # ## Authentication: two supported modes
17
+ #
18
+ # OIDC trusted publishing (preferred, the default). npm receives this job's
19
+ # OIDC identity token (audience `npm:registry.npmjs.org`) and exchanges it for a
20
+ # short-lived, single-use publish credential scoped to this repository, this
21
+ # workflow file and this environment. No long-lived registry secret is involved,
22
+ # and no `NODE_AUTH_TOKEN` is set on that path: the npm CLI detects the OIDC
23
+ # environment before it ever looks for a token. `--provenance` attaches a
24
+ # Sigstore-signed attestation binding the tarball to this commit. One-time
25
+ # npmjs.com setup: package `scientific-computing-system` -> Settings -> Trusted
26
+ # Publisher -> GitHub Actions -> owner `Furox-Art`, repository
27
+ # `scientific-computing-system`, workflow `npm-publish.yml`, environment `npm`.
28
+ #
29
+ # Token mode (explicit opt-in, `use_token_fallback=true`). Uses the repository's
30
+ # NPM_TOKEN secret through NODE_AUTH_TOKEN. This is the mode in use while the
31
+ # npmjs.com trusted-publisher registration is pending.
32
+ #
33
+ # The token mode deliberately omits `--provenance`. Provenance is an OIDC-only
34
+ # attestation: with a token there is no OIDC identity to attest to, so npm
35
+ # rejects the combination outright. The token mode therefore publishes without
36
+ # provenance and prints a NOTICE saying so, rather than passing a flag that
37
+ # cannot work or pretending an attestation was produced.
38
+ #
39
+ # Both modes are fail-closed. A requested mode with no usable credential exits 1
40
+ # with an actionable message. Token mode never runs automatically, so a broken
41
+ # OIDC configuration cannot silently downgrade to the long-lived credential.
42
+
43
+ on:
44
+ workflow_dispatch:
45
+ inputs:
46
+ use_token_fallback:
47
+ description: >-
48
+ Publish mode. false (default) = OIDC trusted publishing, which mints a
49
+ Sigstore provenance attestation. true = token mode, using the
50
+ repository NPM_TOKEN secret; that mode publishes WITHOUT provenance,
51
+ because a token cannot mint an attestation. Use true while the
52
+ npmjs.com trusted publisher is not yet registered.
53
+ type: boolean
54
+ default: false
55
+ push:
56
+ # `branches` and `tags` in one `push` mapping are OR'd by GitHub.
57
+ #
58
+ # The `v*` tag is the release path: release.yml creates the tag only after
59
+ # the PyPI publish has succeeded, so a single version bump reaches PyPI
60
+ # first and npm second. `paths` narrows *branch* pushes so unrelated merges
61
+ # do not run this job; GitHub does not evaluate `paths` against tag pushes.
62
+ branches: [main]
63
+ tags:
64
+ - "v*"
65
+ paths:
66
+ - "package.json"
67
+ - "index.js"
68
+ - "bin/**"
69
+ - "npm.test.js"
70
+ - ".github/workflows/npm-publish.yml"
71
+
72
+ concurrency:
73
+ group: npm-publish
74
+ cancel-in-progress: false
75
+
76
+ # Default-deny; the publish job below declares exactly what it needs.
77
+ permissions:
78
+ contents: read
79
+
80
+ jobs:
81
+ publish:
82
+ name: Verify and publish to npm with OIDC trusted publishing
83
+ runs-on: ubuntu-latest
84
+ timeout-minutes: 20
85
+ # The `npm` environment is referenced by the trusted-publisher configuration
86
+ # on npmjs.com. Adding a required reviewer here is the other half of that
87
+ # control; it is intentionally left to the maintainer because a required
88
+ # reviewer on a single-maintainer repository would deadlock releases.
89
+ environment: npm
90
+ permissions:
91
+ contents: read
92
+ # Required to mint the OIDC token npm exchanges for a publish credential.
93
+ # This is the entire point of the OIDC path: no long-lived secret.
94
+ id-token: write
95
+ steps:
96
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
97
+ with:
98
+ persist-credentials: false
99
+
100
+ # Node 24 ships npm 11.5.1+, the floor for trusted publishing.
101
+ #
102
+ # `registry-url` is REQUIRED for the token mode and was its missing half.
103
+ # Without it setup-node writes no .npmrc at all, so npm never learns that
104
+ # registry.npmjs.org accepts a token, and NODE_AUTH_TOKEN is exported into
105
+ # the environment but read by nobody. The publish then fails with:
106
+ #
107
+ # npm error code ENEEDAUTH
108
+ # npm error need auth This command requires you to be logged in to
109
+ # https://registry.npmjs.org/
110
+ #
111
+ # ENEEDAUTH means npm did not attempt authentication at all -- as opposed to
112
+ # E401, which means it did and the credential was rejected. Seeing ENEEDAUTH
113
+ # with a populated secret is the signature of "no registry auth entry
114
+ # configured", not "bad token".
115
+ #
116
+ # With registry-url set, setup-node writes a userconfig containing
117
+ # //registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}
118
+ # which is what makes the env var meaningful. Verified locally: with only
119
+ # NODE_AUTH_TOKEN exported and no such entry, npm goes straight to
120
+ # ENEEDAUTH; with the entry present it reaches the registry and fails
121
+ # E401 on a deliberately fake token instead.
122
+ - name: Set up Node
123
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
124
+ with:
125
+ node-version: "24"
126
+ registry-url: "https://registry.npmjs.org"
127
+ # Never cache in a publish job: a warm cache is a way to publish bytes
128
+ # this checkout did not produce.
129
+ package-manager-cache: false
130
+
131
+ # Toolchain floor for trusted publishing: npm 11.5.1 and Node 22.14.0.
132
+ #
133
+ # The comparison is an integer semver compare, not a regex. The previous
134
+ # regex here was wrong and rejected the npm that setup-node actually
135
+ # installs:
136
+ #
137
+ # npm --version | grep -Eq '^11\.(5[1-9]|[6-9][0-9])\.|^1[2-9]\.'
138
+ #
139
+ # `[6-9][0-9]` covers 60-99, so `11.19.0` (what Node 24 ships) never
140
+ # matched and the gate failed on a compliant toolchain. Regex cannot
141
+ # express "greater than or equal to" for a dotted version without
142
+ # enumerating every minor, which is exactly the class of bug that shipped
143
+ # here. Numeric major/minor/patch comparison is total and obvious.
144
+ #
145
+ # The Node check that preceded it had the matching defect: it compared
146
+ # only major and minor, so `22.14.0` and `22.9.0` were both accepted even
147
+ # though only the former meets the documented floor.
148
+ - name: Assert the toolchain supports OIDC trusted publishing
149
+ shell: bash
150
+ run: |
151
+ set -euo pipefail
152
+ npm_version="$(npm --version)"
153
+ node_version="$(node --version)"
154
+ echo "npm=$npm_version node=$node_version"
155
+
156
+ # `$npm_version` and `$node_version` are positional arguments, never
157
+ # interpolated into the JS source, so a malformed or hostile value
158
+ # cannot break out into code.
159
+ node -e '
160
+ const REQUIRED_NPM = [11, 5, 1];
161
+ const REQUIRED_NODE = [22, 14, 0];
162
+
163
+ // Strip an optional leading "v" and any pre-release/build suffix,
164
+ // then take the numeric leading components.
165
+ function parse(raw, label) {
166
+ const match = /^[vV]?(\d+)(?:\.(\d+))?(?:\.(\d+))?/.exec(String(raw).trim());
167
+ if (!match) {
168
+ console.error(`::error::could not parse the ${label} version: ${JSON.stringify(raw)}`);
169
+ process.exit(1);
170
+ }
171
+ return [Number(match[1]), Number(match[2] || 0), Number(match[3] || 0)];
172
+ }
173
+
174
+ // Returns negative if a < b, 0 if equal, positive if a > b.
175
+ function compare(a, b) {
176
+ for (let i = 0; i < 3; i += 1) {
177
+ if (a[i] !== b[i]) return a[i] - b[i];
178
+ }
179
+ return 0;
180
+ }
181
+
182
+ const npmVersion = parse(process.argv[1], "npm");
183
+ const nodeVersion = parse(process.argv[2], "node");
184
+
185
+ if (compare(npmVersion, REQUIRED_NPM) < 0) {
186
+ console.error(
187
+ `::error::npm ${REQUIRED_NPM.join(".")}+ is required for OIDC trusted publishing, got ${npmVersion.join(".")}`,
188
+ );
189
+ process.exit(1);
190
+ }
191
+ if (compare(nodeVersion, REQUIRED_NODE) < 0) {
192
+ console.error(
193
+ `::error::Node ${REQUIRED_NODE.join(".")}+ is required for trusted publishing, got ${nodeVersion.join(".")}`,
194
+ );
195
+ process.exit(1);
196
+ }
197
+ console.log(
198
+ `PASS: npm ${npmVersion.join(".")} >= ${REQUIRED_NPM.join(".")}, ` +
199
+ `node ${nodeVersion.join(".")} >= ${REQUIRED_NODE.join(".")}`,
200
+ );
201
+ ' "$npm_version" "$node_version"
202
+
203
+ # The launcher previously shipped unparseable and pointing at a
204
+ # nonexistent module, and nothing in CI ever invoked Node.
205
+ - name: Syntax-check the launcher and the bin shim
206
+ run: |
207
+ node --check index.js
208
+ node --check bin/scs.js
209
+
210
+ - name: Run the npm entry-point contract suite
211
+ run: npm test
212
+
213
+ # GATE: the published tarball must contain the allowlist and nothing else.
214
+ # Without this, a future edit to package.json could ship the repository
215
+ # (tests, workflows, 10k+ statements of Python) to the public registry.
216
+ - name: Assert the publish tarball contains only the allowlist
217
+ shell: bash
218
+ run: |
219
+ set -euo pipefail
220
+ npm pack --dry-run 2>&1 | tee pack-dry-run.txt
221
+ for forbidden in "src/" "tests/" "docs/" ".github/" "benchmarks/" "assets/"; do
222
+ if grep -q "$forbidden" pack-dry-run.txt; then
223
+ echo "::error::npm tarball would publish $forbidden"
224
+ exit 1
225
+ fi
226
+ done
227
+
228
+ # GATE: package.json must not be private, or `npm publish` refuses to run.
229
+ - name: Assert package.json is publishable
230
+ run: |
231
+ set -euo pipefail
232
+ node -e '
233
+ const pkg = require("./package.json");
234
+ if (pkg.private === true) {
235
+ console.error("::error::package.json sets private:true; npm publish is blocked");
236
+ process.exit(1);
237
+ }
238
+ console.log(`PASS: ${pkg.name}@${pkg.version} is publishable`);
239
+ '
240
+
241
+ # GATE: the repo's own version-lockstep check, which covers package.json.
242
+ # Catches publishing a launcher whose version disagrees with the Python
243
+ # distribution it shells out to.
244
+ - name: Assert npm version tracks the Python distribution
245
+ run: |
246
+ set -euo pipefail
247
+ python3 -m pip install --upgrade pip
248
+ python3 -m pip install .
249
+ node -e '
250
+ const fs = require("node:fs");
251
+ const pkg = JSON.parse(fs.readFileSync("package.json", "utf8"));
252
+ const text = fs.readFileSync("pyproject.toml", "utf8");
253
+ const match = /^version\s*=\s*"([^"]+)"/m.exec(text);
254
+ if (!match) { console.error("::error::pyproject.toml has no static version"); process.exit(1); }
255
+ if (pkg.version !== match[1]) {
256
+ console.error(`::error::npm ${pkg.version} != Python ${match[1]}`);
257
+ process.exit(1);
258
+ }
259
+ console.log(`PASS: npm ${pkg.version} matches Python ${match[1]}`);
260
+ '
261
+
262
+ # GATE: refuse to republish. A version can only be published once, so an
263
+ # already-present version means either a duplicate trigger or a
264
+ # half-finished recovery. Both should stop here rather than fail confusingly
265
+ # inside `npm publish`.
266
+ - name: Assert the version is not already published
267
+ run: |
268
+ set -euo pipefail
269
+ version="$(node -p 'require("./package.json").version')"
270
+ if npm view "scientific-computing-system@${version}" version >/dev/null 2>&1; then
271
+ echo "::error::scientific-computing-system@${version} is already on npm"
272
+ echo "::error::nothing to do; bump package.json (and the locked version surfaces) to publish again"
273
+ exit 1
274
+ fi
275
+ echo "PASS: scientific-computing-system@${version} is unpublished"
276
+
277
+ # Two supported modes, selected by the `use_token_fallback` dispatch input.
278
+ #
279
+ # OIDC (preferred, default): no NODE_AUTH_TOKEN is set. The npm CLI
280
+ # detects the OIDC environment (id-token: write above) and exchanges the
281
+ # runner's identity token for a short-lived publish credential scoped to
282
+ # this repository, workflow and environment. `--provenance` attaches a
283
+ # Sigstore-signed attestation to the tarball binding it to this commit.
284
+ #
285
+ # Token (explicit opt-in): uses the repository's existing NPM_TOKEN secret
286
+ # via NODE_AUTH_TOKEN. This is the mode the maintainer selected while the
287
+ # npmjs.com trusted-publisher registration is still pending.
288
+ #
289
+ # The token mode does NOT pass --provenance, and must not. Provenance is an
290
+ # OIDC-only attestation: without a trusted-publisher configuration npm has
291
+ # no OIDC identity to attest to, so `--provenance` would fail the publish
292
+ # outright. Passing it and catching the error would be worse -- it would
293
+ # print a failure and then publish anyway. The token mode therefore
294
+ # publishes without provenance, and says so, rather than pretending an
295
+ # attestation exists.
296
+ #
297
+ # Both modes are fail-closed: a requested mode with no usable credential
298
+ # exits 1 with an actionable message instead of silently falling through.
299
+ # There is no `continue-on-error` and no `|| true` anywhere in this job.
300
+ #
301
+ # The credential preflight is a SEPARATE STEP, not an inline `if` inside
302
+ # the publish step. Inline, a credential check that prints an error but
303
+ # forgets to exit continues straight into `npm publish` -- which is
304
+ # precisely what the failed run did: the fail-closed branch's own source
305
+ # text appeared in the log and npm was invoked anyway. As its own step, a
306
+ # non-zero exit ends the job before any publish step can run.
307
+ - name: Assert the requested publish mode has a usable credential
308
+ env:
309
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
310
+ run: |
311
+ set -euo pipefail
312
+ if [ "${{ inputs.use_token_fallback }}" = "true" ]; then
313
+ if [ -z "${NPM_TOKEN:-}" ]; then
314
+ echo "::error::token mode was requested (use_token_fallback=true) but the NPM_TOKEN secret is empty or unset"
315
+ echo "::error::add an npm automation token as the NPM_TOKEN secret, or re-run without use_token_fallback once the npmjs.com trusted publisher is registered"
316
+ exit 1
317
+ fi
318
+ echo "mode=token via NPM_TOKEN (no provenance: a long-lived token cannot mint a Sigstore attestation)"
319
+ echo "::warning::Publishing with NPM_TOKEN instead of OIDC. Register the npmjs.com trusted publisher and delete NPM_TOKEN once this release is out."
320
+ else
321
+ if [ -z "${ACTIONS_ID_TOKEN_REQUEST_URL:-}" ] || [ -z "${ACTIONS_ID_TOKEN_REQUEST_TOKEN:-}" ]; then
322
+ echo "::error::OIDC mode was requested but this job cannot mint an OIDC token"
323
+ echo "::error::ACTIONS_ID_TOKEN_REQUEST_URL is unset, so the runner did not grant id-token: write"
324
+ echo "::error::either fix the id-token: write permission, or re-run with use_token_fallback=true to publish with NPM_TOKEN instead"
325
+ exit 1
326
+ fi
327
+ echo "mode=oidc (provenance attestation enabled)"
328
+ fi
329
+
330
+ # GATE: the registry auth entry must actually exist. setup-node's
331
+ # `registry-url` is what writes it; this asserts the outcome rather than
332
+ # trusting the configuration, so a future edit that drops registry-url
333
+ # fails here with a clear cause instead of at `npm publish` with ENEEDAUTH.
334
+ - name: Assert the npm registry auth entry is configured
335
+ shell: bash
336
+ run: |
337
+ set -euo pipefail
338
+ userconfig="$(npm config get userconfig)"
339
+ echo "npm userconfig=$userconfig"
340
+ if [ ! -f "$userconfig" ]; then
341
+ echo "::error::no npm userconfig at $userconfig"
342
+ echo "::error::setup-node writes this file from its registry-url input; without it npm has no registry auth entry"
343
+ exit 1
344
+ fi
345
+ if ! grep -q '_authToken' "$userconfig"; then
346
+ echo "::error::$userconfig has no _authToken entry"
347
+ echo "::error::npm would fail with ENEEDAUTH: NODE_AUTH_TOKEN alone is inert without a registry auth entry"
348
+ exit 1
349
+ fi
350
+ if ! grep -q 'registry.npmjs.org' "$userconfig"; then
351
+ echo "::error::$userconfig does not reference registry.npmjs.org"
352
+ exit 1
353
+ fi
354
+ # The token value itself must never be echoed.
355
+ echo "PASS: npm registry auth entry present (value not shown)"
356
+ echo "PASS: the entry references NODE_AUTH_TOKEN by name, not a literal secret"
357
+
358
+ - name: Publish to npm (OIDC trusted publishing, with provenance)
359
+ if: ${{ !inputs.use_token_fallback }}
360
+ run: npm publish --provenance --access public
361
+
362
+ - name: Publish to npm (token mode, no provenance)
363
+ if: ${{ inputs.use_token_fallback }}
364
+ env:
365
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
366
+ run: |
367
+ set -euo pipefail
368
+ # Deliberately no --provenance: a token-authenticated publish cannot
369
+ # produce a Sigstore attestation. npm will reject the combination.
370
+ echo "NOTICE: publishing with NPM_TOKEN; this release carries no provenance attestation"
371
+ npm publish --access public
372
+
373
+ # Post-publish confirmation that the version is actually readable.
374
+ #
375
+ # This was a single immediate `npm view`, and it produced a false failure
376
+ # on run 37136131220: the upload succeeded and the registry recorded 2.2.0
377
+ # ninety seconds later, but the probe ran within a second of `npm publish`
378
+ # returning and got E404, turning a successful release into a red job.
379
+ # Three sibling repositories hit the same thing.
380
+ #
381
+ # The probe now polls the registry's JSON API with backoff, over a budget
382
+ # of several minutes -- deliberately generous, because npm's propagation
383
+ # gap is not bounded and shortening it to make a test fast would recreate
384
+ # the original false failure. It succeeds on the first match and fails
385
+ # closed if the version never appears, emitting a `::warning::` first so a
386
+ # slow-but-successful publish is never read as a hard failure.
387
+ #
388
+ # `npm view` was dropped as the probe: it reports "absent" and "denied"
389
+ # with the same E404, and it resolves against the userconfig this job
390
+ # created for writing, so a read-only confirmation had no reason to touch
391
+ # publish credentials at all.
392
+ - name: Verify the published version (polling for registry propagation)
393
+ run: |
394
+ set -euo pipefail
395
+ version="$(node -p 'require("./package.json").version')"
396
+ python3 scripts/verify_npm_publication.py \
397
+ --package scientific-computing-system \
398
+ --version "$version" \
399
+ --registry https://registry.npmjs.org \
400
+ --attempts 12 \
401
+ --initial-delay 5 \
402
+ --growth 1.5 \
403
+ --max-delay 30