scientific-computing-system 2.2.2__tar.gz → 2.2.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 (417) hide show
  1. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/changelog.yml +1 -1
  2. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/codeql.yml +3 -3
  3. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/npm-publish.yml +93 -23
  4. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/tests.yml +1 -1
  5. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/CHANGELOG.md +114 -0
  6. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/CITATION.cff +2 -2
  7. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/PKG-INFO +14 -11
  8. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/README.md +12 -9
  9. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/SECURITY.md +55 -27
  10. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/codemeta.json +1 -1
  11. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/npm.test.js +47 -14
  12. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/package.json +1 -1
  13. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/pyproject.toml +2 -2
  14. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/requirements-build.lock +6 -3
  15. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/_version.py +1 -1
  16. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_provenance_claims.py +12 -8
  17. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/benchmarks.yml +0 -0
  18. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/bot-reviewer.yml +0 -0
  19. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/cli-package-smoke.yml +0 -0
  20. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/pr-automation.yml +0 -0
  21. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/pypi-registry-smoke.yml +0 -0
  22. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/release.yml +0 -0
  23. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.gitignore +0 -0
  24. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/CONTRIBUTING.md +0 -0
  25. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/LICENSE +0 -0
  26. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/benchmarks/results.json +0 -0
  27. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/benchmarks/robust_runner.py +0 -0
  28. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/benchmarks/run_benchmarks.py +0 -0
  29. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/bin/scs.js +0 -0
  30. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/dashboard/app.py +0 -0
  31. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/ARCHITECTURE.md +0 -0
  32. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/CASE_STUDY_HUBBLE.md +0 -0
  33. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/CASE_STUDY_QUANTUM_ML.md +0 -0
  34. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/api.md +0 -0
  35. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/assets/icon.svg +0 -0
  36. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/assets/logo.svg +0 -0
  37. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/benchmarks.md +0 -0
  38. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/checks/verify_provenance_claims.py +0 -0
  39. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/cookbook.md +0 -0
  40. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/getting-started.md +0 -0
  41. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/index.md +0 -0
  42. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/maintenance.md +0 -0
  43. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/ml_reference.md +0 -0
  44. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/related.md +0 -0
  45. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/research-workflows.md +0 -0
  46. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/stylesheets/extra.css +0 -0
  47. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tour_of_numerical_methods.md +0 -0
  48. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/core_demo.md +0 -0
  49. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/data_analysis_demo.md +0 -0
  50. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/diffeq_demo.md +0 -0
  51. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/fft2_demo.md +0 -0
  52. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/graph_demo.md +0 -0
  53. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/hypothesis_demo.md +0 -0
  54. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/hypothesis_tests_demo.md +0 -0
  55. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/hypothesis_with_stats_demo.md +0 -0
  56. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/knowledge_demo.md +0 -0
  57. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/linalg_demo.md +0 -0
  58. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/math_utils_demo.md +0 -0
  59. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/ml_advanced_demo.md +0 -0
  60. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/ml_and_viz_demo.md +0 -0
  61. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/ml_demo.md +0 -0
  62. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/modeling_demo.md +0 -0
  63. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/montecarlo_demo.md +0 -0
  64. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/nlp_attention_demo.md +0 -0
  65. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/nlp_bpe_demo.md +0 -0
  66. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/nlp_mini_gpt_demo.md +0 -0
  67. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/nlp_viz.md +0 -0
  68. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/numerical_integration_demo.md +0 -0
  69. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/optimization_demo.md +0 -0
  70. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/pandas_io_demo.md +0 -0
  71. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/pca_demo.md +0 -0
  72. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/probability_demo.md +0 -0
  73. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/quantum_demo.md +0 -0
  74. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/quick_start.md +0 -0
  75. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/scientific_demo.md +0 -0
  76. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/signals_demo.md +0 -0
  77. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/stats_demo.md +0 -0
  78. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/stiff_ode_demo.md +0 -0
  79. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/time_series_demo.md +0 -0
  80. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/why-pure-python.md +0 -0
  81. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/core_demo.py +0 -0
  82. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/data_analysis_demo.py +0 -0
  83. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/diffeq_demo.py +0 -0
  84. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/discovery_pipeline_demo.py +0 -0
  85. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/ensemble_showcase.py +0 -0
  86. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/fft2_demo.py +0 -0
  87. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/graph_demo.py +0 -0
  88. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/hypothesis_custom_generator.py +0 -0
  89. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/hypothesis_demo.py +0 -0
  90. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/hypothesis_tests_demo.py +0 -0
  91. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/hypothesis_with_stats_demo.py +0 -0
  92. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/interpolate_demo.py +0 -0
  93. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/knowledge_demo.py +0 -0
  94. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/linalg_demo.py +0 -0
  95. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/math_utils_demo.py +0 -0
  96. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/ml_and_viz_demo.py +0 -0
  97. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/modeling_demo.py +0 -0
  98. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/montecarlo_demo.py +0 -0
  99. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/nlp_attention_demo.py +0 -0
  100. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/nlp_bpe_demo.py +0 -0
  101. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/nlp_mini_gpt_demo.py +0 -0
  102. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/nlp_viz_demo.py +0 -0
  103. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/numerical_integration_demo.py +0 -0
  104. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/optimization_demo.py +0 -0
  105. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/pca_demo.py +0 -0
  106. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/pde_demo.py +0 -0
  107. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/plot_demo.py +0 -0
  108. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/plotting_notebook.ipynb +0 -0
  109. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/probability_demo.py +0 -0
  110. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/quantum_demo.py +0 -0
  111. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/scientific_demo.py +0 -0
  112. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/signals_demo.py +0 -0
  113. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/stats_demo.py +0 -0
  114. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/tour_of_numerical_methods.ipynb +0 -0
  115. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/index.js +0 -0
  116. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/mkdocs.yml +0 -0
  117. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/paper.bib +0 -0
  118. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/paper.md +0 -0
  119. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/requirements-dev.lock +0 -0
  120. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/requirements.lock +0 -0
  121. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/check_release_toolchain.py +0 -0
  122. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/check_version_discipline.py +0 -0
  123. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/check_version_lockstep.py +0 -0
  124. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/publish.py +0 -0
  125. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/verify_cli_install.py +0 -0
  126. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/verify_cookbook.py +0 -0
  127. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/verify_ml_reference.py +0 -0
  128. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/verify_pypi_release.py +0 -0
  129. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/verify_release_integrity.py +0 -0
  130. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/__init__.py +0 -0
  131. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/__main__.py +0 -0
  132. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/_paths.py +0 -0
  133. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/bayes/__init__.py +0 -0
  134. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/bayes/conjugate.py +0 -0
  135. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/causal.py +0 -0
  136. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/cli/__init__.py +0 -0
  137. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/cli/__main__.py +0 -0
  138. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/cli/_handlers.py +0 -0
  139. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/cli/_parser.py +0 -0
  140. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/cli/_style.py +0 -0
  141. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/cli/_system_info.py +0 -0
  142. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/core/__init__.py +0 -0
  143. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/core/_numeric.py +0 -0
  144. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/core/models.py +0 -0
  145. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_analysis/__init__.py +0 -0
  146. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_analysis/dataset.py +0 -0
  147. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_analysis/loader.py +0 -0
  148. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_analysis/pandas_io.py +0 -0
  149. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_analysis/transform.py +0 -0
  150. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_analysis/viz.py +0 -0
  151. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_io/__init__.py +0 -0
  152. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_io/scientific.py +0 -0
  153. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_io/streaming.py +0 -0
  154. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/diffeq/__init__.py +0 -0
  155. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/diffeq/_implicit.py +0 -0
  156. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/diffeq/solvers.py +0 -0
  157. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/diffeq/symplectic.py +0 -0
  158. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/fractals/__init__.py +0 -0
  159. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/fractals/sets.py +0 -0
  160. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/genetics/__init__.py +0 -0
  161. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/genetics/sequence.py +0 -0
  162. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/graph/__init__.py +0 -0
  163. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/graph/algorithms.py +0 -0
  164. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/hypothesis/__init__.py +0 -0
  165. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/hypothesis/evaluator.py +0 -0
  166. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/hypothesis/generator.py +0 -0
  167. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/hypothesis/mining.py +0 -0
  168. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/infotheory/__init__.py +0 -0
  169. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/infotheory/measures.py +0 -0
  170. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/interpolate/__init__.py +0 -0
  171. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/knowledge/__init__.py +0 -0
  172. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/knowledge/graph.py +0 -0
  173. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/knowledge/notes.py +0 -0
  174. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/knowledge/retrieval.py +0 -0
  175. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/math_utils/__init__.py +0 -0
  176. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/math_utils/calculus.py +0 -0
  177. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/math_utils/linalg.py +0 -0
  178. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/math_utils/special.py +0 -0
  179. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/math_utils/svd.py +0 -0
  180. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/__init__.py +0 -0
  181. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/boosting.py +0 -0
  182. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/clustering.py +0 -0
  183. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/decomposition.py +0 -0
  184. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/ensemble.py +0 -0
  185. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/linear_models.py +0 -0
  186. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/metrics.py +0 -0
  187. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/model_selection.py +0 -0
  188. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/naive_bayes.py +0 -0
  189. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/neighbors.py +0 -0
  190. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/neural.py +0 -0
  191. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/preprocessing.py +0 -0
  192. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/tree.py +0 -0
  193. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/voting.py +0 -0
  194. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/__init__.py +0 -0
  195. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/_base.py +0 -0
  196. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/_nodes.py +0 -0
  197. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/expression.py +0 -0
  198. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/fitting.py +0 -0
  199. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/model.py +0 -0
  200. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/solver.py +0 -0
  201. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/montecarlo/__init__.py +0 -0
  202. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/montecarlo/markov.py +0 -0
  203. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/montecarlo/methods.py +0 -0
  204. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/__init__.py +0 -0
  205. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/attention.py +0 -0
  206. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/autograd/__init__.py +0 -0
  207. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/autograd/_grad.py +0 -0
  208. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/autograd/ops.py +0 -0
  209. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/autograd/tensor.py +0 -0
  210. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/bpe.py +0 -0
  211. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/data.py +0 -0
  212. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/embed.py +0 -0
  213. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/layers.py +0 -0
  214. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/model.py +0 -0
  215. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/optim.py +0 -0
  216. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/training.py +0 -0
  217. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/viz.py +0 -0
  218. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/numerical_integration/__init__.py +0 -0
  219. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/numerical_integration/quadrature.py +0 -0
  220. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/optimization/__init__.py +0 -0
  221. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/optimization/_metaheuristics.py +0 -0
  222. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/optimization/constrained.py +0 -0
  223. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/optimization/minimize.py +0 -0
  224. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/pde/__init__.py +0 -0
  225. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/plot/__init__.py +0 -0
  226. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/plot/_backend.py +0 -0
  227. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/plot/charts.py +0 -0
  228. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/probability/__init__.py +0 -0
  229. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/probability/_advanced.py +0 -0
  230. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/probability/distributions.py +0 -0
  231. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/probability/extra_distributions.py +0 -0
  232. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/provenance/__init__.py +0 -0
  233. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/provenance/manifest.py +0 -0
  234. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/py.typed +0 -0
  235. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/quantum/__init__.py +0 -0
  236. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/quantum/circuit.py +0 -0
  237. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/quantum/multi_qubit.py +0 -0
  238. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/quantum/simulator.py +0 -0
  239. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/scientific/__init__.py +0 -0
  240. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/scientific/constants.py +0 -0
  241. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/scientific/formulas.py +0 -0
  242. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/sensitivity.py +0 -0
  243. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/signals/__init__.py +0 -0
  244. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/signals/filters.py +0 -0
  245. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/signals/processing.py +0 -0
  246. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/signals/stft.py +0 -0
  247. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/signals/wavelet.py +0 -0
  248. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/__init__.py +0 -0
  249. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/_distributions.py +0 -0
  250. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/bootstrap.py +0 -0
  251. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/descriptive.py +0 -0
  252. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/hypothesis_tests.py +0 -0
  253. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/multiple_testing.py +0 -0
  254. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/nonparametric.py +0 -0
  255. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/power.py +0 -0
  256. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/regression.py +0 -0
  257. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/time_series.py +0 -0
  258. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/tools/__init__.py +0 -0
  259. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/tools/adapters.py +0 -0
  260. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/tools/registry.py +0 -0
  261. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/uncertainty/__init__.py +0 -0
  262. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/uncertainty/propagation.py +0 -0
  263. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/units/__init__.py +0 -0
  264. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/units/core.py +0 -0
  265. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/validation/__init__.py +0 -0
  266. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/validation/adequacy.py +0 -0
  267. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/validation/checks.py +0 -0
  268. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/validation/drift.py +0 -0
  269. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/validation/report.py +0 -0
  270. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/wavelets/__init__.py +0 -0
  271. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/wavelets/haar.py +0 -0
  272. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/__init__.py +0 -0
  273. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/engine.py +0 -0
  274. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/gates.py +0 -0
  275. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/orchestrator.py +0 -0
  276. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/selection.py +0 -0
  277. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/tooling.py +0 -0
  278. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/types.py +0 -0
  279. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/__init__.py +0 -0
  280. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/conftest.py +0 -0
  281. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_advanced_fitting.py +0 -0
  282. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_audit_completion_coverage.py +0 -0
  283. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_audit_guard_coverage.py +0 -0
  284. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_audit_hardening.py +0 -0
  285. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_audit_hardening_coverage.py +0 -0
  286. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_bayes_v2.py +0 -0
  287. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_benchmarks.py +0 -0
  288. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_bootstrap.py +0 -0
  289. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_causal.py +0 -0
  290. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_cli.py +0 -0
  291. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_cli_color.py +0 -0
  292. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_cli_extended.py +0 -0
  293. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_cli_system_info.py +0 -0
  294. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_codemeta_version_lockstep.py +0 -0
  295. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_constrained_opt.py +0 -0
  296. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_core.py +0 -0
  297. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_data_analysis.py +0 -0
  298. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_data_analysis_lazy_bridge.py +0 -0
  299. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_data_analysis_pandas_io.py +0 -0
  300. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_data_io.py +0 -0
  301. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_data_io_optional_backends.py +0 -0
  302. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_data_io_scientific.py +0 -0
  303. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_dataset.py +0 -0
  304. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_dev_numpy_pin_contract.py +0 -0
  305. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_diffeq.py +0 -0
  306. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_diffeq_implicit.py +0 -0
  307. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_domain_validation.py +0 -0
  308. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_edge_misc_numerical.py +0 -0
  309. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_edge_ml_quantum_linalg.py +0 -0
  310. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_edge_nlp.py +0 -0
  311. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_edge_quantum_evaluator_cli.py +0 -0
  312. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_edge_stats_optimization_signals.py +0 -0
  313. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_extra_distributions.py +0 -0
  314. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_fft2.py +0 -0
  315. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_fitting_bootstrap.py +0 -0
  316. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_fractals.py +0 -0
  317. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_genetics.py +0 -0
  318. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_graph.py +0 -0
  319. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_hardening_privacy_provenance.py +0 -0
  320. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_hypothesis.py +0 -0
  321. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_hypothesis_engine.py +0 -0
  322. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_hypothesis_mining.py +0 -0
  323. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_hypothesis_tests.py +0 -0
  324. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_infotheory.py +0 -0
  325. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_interpolate.py +0 -0
  326. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_knowledge.py +0 -0
  327. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_layering.py +0 -0
  328. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_linalg_extended.py +0 -0
  329. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_linalg_qr_cholesky.py +0 -0
  330. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_markov.py +0 -0
  331. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_math_utils.py +0 -0
  332. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_boosting.py +0 -0
  333. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_clustering.py +0 -0
  334. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_ensemble.py +0 -0
  335. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_knn.py +0 -0
  336. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_linreg.py +0 -0
  337. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_logreg.py +0 -0
  338. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_metrics.py +0 -0
  339. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_model_selection.py +0 -0
  340. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_naive_bayes.py +0 -0
  341. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_pca.py +0 -0
  342. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_preprocessing.py +0 -0
  343. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_tree.py +0 -0
  344. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_viz.py +0 -0
  345. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_voting.py +0 -0
  346. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_modeling.py +0 -0
  347. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_modeling_fit_validation.py +0 -0
  348. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_montecarlo.py +0 -0
  349. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_multi_qubit.py +0 -0
  350. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_attention.py +0 -0
  351. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_autograd.py +0 -0
  352. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_bpe.py +0 -0
  353. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_embed.py +0 -0
  354. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_layers.py +0 -0
  355. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_model.py +0 -0
  356. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_training.py +0 -0
  357. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_viz.py +0 -0
  358. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_numerical_integration.py +0 -0
  359. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_numerical_invariants.py +0 -0
  360. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_numerical_oracles.py +0 -0
  361. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_optimization.py +0 -0
  362. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_optimization_metaheuristics.py +0 -0
  363. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_path_confinement.py +0 -0
  364. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_pde.py +0 -0
  365. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_plot_charts.py +0 -0
  366. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_plot_lazy.py +0 -0
  367. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_power.py +0 -0
  368. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_probability.py +0 -0
  369. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_probability_advanced.py +0 -0
  370. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_property_invariants.py +0 -0
  371. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_protocol_placeholders.py +0 -0
  372. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_provenance.py +0 -0
  373. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_provenance_audit_hardening.py +0 -0
  374. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_public_api.py +0 -0
  375. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_quantum.py +0 -0
  376. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_readme_badges.py +0 -0
  377. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_readme_surface.py +0 -0
  378. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_release_contract.py +0 -0
  379. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_release_toolchain.py +0 -0
  380. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_retrieval.py +0 -0
  381. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_runtime_dependency_graph.py +0 -0
  382. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_scientific.py +0 -0
  383. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_selection_audit_hardening.py +0 -0
  384. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_sensitivity.py +0 -0
  385. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_sensitivity_global.py +0 -0
  386. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_signals.py +0 -0
  387. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_signals_filters.py +0 -0
  388. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_special_invariants.py +0 -0
  389. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_special_numerics.py +0 -0
  390. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_statistical_audit.py +0 -0
  391. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_stats.py +0 -0
  392. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_stats_audit_coverage.py +0 -0
  393. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_stats_multiple_testing.py +0 -0
  394. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_stats_nonparametric.py +0 -0
  395. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_stats_time_series.py +0 -0
  396. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_stft.py +0 -0
  397. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_streaming_analytics.py +0 -0
  398. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_svd.py +0 -0
  399. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_symplectic.py +0 -0
  400. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_tool_adapters.py +0 -0
  401. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_tools_registry.py +0 -0
  402. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_uncertainty.py +0 -0
  403. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_units.py +0 -0
  404. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_validation.py +0 -0
  405. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_validation_adequacy.py +0 -0
  406. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_validation_advanced.py +0 -0
  407. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_validation_drift.py +0 -0
  408. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_verify_release_integrity.py +0 -0
  409. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_wavelet.py +0 -0
  410. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_wavelets_v2.py +0 -0
  411. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow.py +0 -0
  412. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow_gates.py +0 -0
  413. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow_orchestrator.py +0 -0
  414. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow_orchestrator_blocked_review.py +0 -0
  415. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow_selection.py +0 -0
  416. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow_selection_coverage.py +0 -0
  417. {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow_tooling.py +0 -0
@@ -53,7 +53,7 @@ jobs:
53
53
  fetch-depth: 0
54
54
 
55
55
  - name: Install git-cliff
56
- uses: orhun/git-cliff-action@3d96a18cc4ec17e9dc69ddcc424ccafaf1f78ce2 # v4
56
+ uses: orhun/git-cliff-action@a9a95522b26fe6403f7bb24031f21fb573d0f5ff # v4
57
57
  with:
58
58
  config: cliff.toml
59
59
  args: --verbose --tag ${{ inputs.tag }} --output CHANGELOG.md
@@ -43,13 +43,13 @@ jobs:
43
43
  with:
44
44
  persist-credentials: false
45
45
  - name: Initialize CodeQL
46
- uses: github/codeql-action/init@1c5b675653bb5c22dbe9b12b556ec555138e09fd # v4
46
+ uses: github/codeql-action/init@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4
47
47
  with:
48
48
  languages: ${{ matrix.language }}
49
49
  queries: security-and-quality
50
50
  - name: Autobuild
51
- uses: github/codeql-action/autobuild@1c5b675653bb5c22dbe9b12b556ec555138e09fd # v4
51
+ uses: github/codeql-action/autobuild@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4
52
52
  - name: Perform CodeQL Analysis
53
- uses: github/codeql-action/analyze@1c5b675653bb5c22dbe9b12b556ec555138e09fd # v4
53
+ uses: github/codeql-action/analyze@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4
54
54
  with:
55
55
  category: "/language:${{ matrix.language }}"
@@ -37,8 +37,10 @@ name: npm Publish
37
37
  # cannot work or pretending an attestation was produced.
38
38
  #
39
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.
40
+ # with an actionable message. The automatic release-tag path deliberately uses
41
+ # the repository's verified NPM_TOKEN until npm Trusted Publishing is registered.
42
+ # Manual workflow_dispatch runs still default to OIDC so that path can be tested
43
+ # and adopted later without changing the release topology.
42
44
 
43
45
  on:
44
46
  workflow_dispatch:
@@ -53,21 +55,11 @@ on:
53
55
  type: boolean
54
56
  default: false
55
57
  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]
58
+ # release.yml creates the version tag only after the PyPI release succeeds.
59
+ # Publishing npm from that tag gives one version bump exactly one automatic
60
+ # npm run, avoiding the previous branch-push + tag-push duplicate race.
63
61
  tags:
64
62
  - "v*"
65
- paths:
66
- - "package.json"
67
- - "index.js"
68
- - "bin/**"
69
- - "npm.test.js"
70
- - ".github/workflows/npm-publish.yml"
71
63
 
72
64
  concurrency:
73
65
  group: npm-publish
@@ -120,7 +112,7 @@ jobs:
120
112
  # ENEEDAUTH; with the entry present it reaches the registry and fails
121
113
  # E401 on a deliberately fake token instead.
122
114
  - name: Set up Node
123
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
115
+ uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
124
116
  with:
125
117
  node-version: "24"
126
118
  registry-url: "https://registry.npmjs.org"
@@ -270,9 +262,25 @@ jobs:
270
262
  if npm view "scientific-computing-system@${version}" version >/dev/null 2>&1; then
271
263
  echo "::error::scientific-computing-system@${version} is already on npm"
272
264
  echo "::error::nothing to do; bump package.json (and the locked version surfaces) to publish again"
265
+ echo "::error::: read this BEFORE bumping anything ---"
266
+ echo "::error::npm uses the SAME 404 to mean two different things: a version that is not"
267
+ echo "::error::published yet, and a caller whose credential is not authorized to see it. An"
268
+ echo "::error::unregistered trusted publisher is a 404, not a 401/403, because npm will not"
269
+ echo "::error::tell an unauthenticated caller whether a package exists."
270
+ echo "::error::A red publish step therefore does NOT by itself mean 'already published'. Do not"
271
+ echo "::error::burn a release number bumping the version to 'fix' a 404: if the trusted publisher"
272
+ echo "::error::is unregistered the next version will fail identically, and you will have consumed"
273
+ echo "::error::a version on both registries for nothing."
273
274
  exit 1
274
275
  fi
275
276
  echo "PASS: scientific-computing-system@${version} is unpublished"
277
+ # This gate only proves absence. Say so, so its PASS cannot be read as
278
+ # "and we are authorized to publish it" -- the two are independent and
279
+ # only the first is tested here.
280
+ echo "NOTE: absence is all this gate proves. It says nothing about whether this job is"
281
+ echo "NOTE: authorized to publish: an unregistered trusted publisher also reads as 404. If"
282
+ echo "NOTE: 'npm publish' below fails with E404, the cause is the publisher registration,"
283
+ echo "NOTE: not the version."
276
284
 
277
285
  # Two supported modes, selected by the `use_token_fallback` dispatch input.
278
286
  #
@@ -309,14 +317,20 @@ jobs:
309
317
  NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
310
318
  run: |
311
319
  set -euo pipefail
312
- if [ "${{ inputs.use_token_fallback }}" = "true" ]; then
320
+ if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
321
+ requested_token="${{ inputs.use_token_fallback }}"
322
+ else
323
+ requested_token="true"
324
+ fi
325
+
326
+ if [ "$requested_token" = "true" ]; then
313
327
  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"
328
+ echo "::error::token mode was requested but the NPM_TOKEN secret is empty or unset"
329
+ echo "::error::add an npm automation token as the NPM_TOKEN secret, or use a manual OIDC dispatch after registering the npm trusted publisher"
316
330
  exit 1
317
331
  fi
318
332
  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."
333
+ echo "::warning::Automatic release-tag publishing uses NPM_TOKEN until npm Trusted Publishing is registered."
320
334
  else
321
335
  if [ -z "${ACTIONS_ID_TOKEN_REQUEST_URL:-}" ] || [ -z "${ACTIONS_ID_TOKEN_REQUEST_TOKEN:-}" ]; then
322
336
  echo "::error::OIDC mode was requested but this job cannot mint an OIDC token"
@@ -355,12 +369,68 @@ jobs:
355
369
  echo "PASS: npm registry auth entry present (value not shown)"
356
370
  echo "PASS: the entry references NODE_AUTH_TOKEN by name, not a literal secret"
357
371
 
372
+ # The publish command is unchanged and the step is still fail-closed: a
373
+ # non-zero npm exit still ends the job with that same exit code. All that is
374
+ # added is the diagnosis, because npm's bare E404 was ambiguous enough to be
375
+ # read as a version problem:
376
+ #
377
+ # npm error 404 The requested resource 'scientific-computing-system@2.2.2'
378
+ # could not be found or you do not have permission to access it.
379
+ #
380
+ # Nothing in that line says which half is true. Observed on runs 37268729425
381
+ # and 37269325567: the version was genuinely unpublished (the gate above
382
+ # passed), the tarball built, provenance was signed and submitted to the
383
+ # Sigstore transparency log, and only then did the PUT 404. An unregistered
384
+ # trusted publisher is the cause, and "bump the version" would not have
385
+ # helped.
358
386
  - name: Publish to npm (OIDC trusted publishing, with provenance)
359
- if: ${{ !inputs.use_token_fallback }}
360
- run: npm publish --provenance --access public
387
+ if: ${{ github.event_name == 'workflow_dispatch' && !inputs.use_token_fallback }}
388
+ run: |
389
+ # `-e` is on by default in this shell, so it is explicitly suspended
390
+ # around npm to capture the exit code instead of aborting before the
391
+ # log can be inspected.
392
+ set +e
393
+ log="${RUNNER_TEMP}/npm-publish.log"
394
+ npm publish --provenance --access public >"$log" 2>&1
395
+ status=$?
396
+ set -e
397
+ cat "$log"
398
+
399
+ if [ "$status" -ne 0 ]; then
400
+ echo "::error::npm publish failed (exit $status)"
401
+ if grep -qE 'E404|404 Not Found' "$log"; then
402
+ echo "::error::: this 404 is NOT a missing package and NOT a wrong version number ---"
403
+ echo "::error::scientific-computing-system exists on npm, and the gate above just proved"
404
+ echo "::error::this exact version is absent from it. npm reports an UNAUTHORIZED caller with"
405
+ echo "::error::the same 404 it uses for 'no such version', so the message cannot tell you"
406
+ echo "::error::which one you hit. Reading it as a version problem sends you to bump a version"
407
+ echo "::error::that still cannot publish."
408
+ echo "::error::If npm signed and submitted provenance above, the OIDC identity was accepted and"
409
+ echo "::error::the registry rejected the PUT for want of a matching trusted publisher."
410
+ echo "::error::A rejected or absent TOKEN looks different: 401, or ENEEDAUTH."
411
+ echo "::error::One-time maintainer fix, not automatable from CI:"
412
+ echo "::error:: npmjs.com -> package 'scientific-computing-system' -> Settings -> Trusted Publisher"
413
+ echo "::error:: Organization or user : Furox-Art"
414
+ echo "::error:: Package : scientific-computing-system"
415
+ echo "::error:: Workflow filename : npm-publish.yml"
416
+ echo "::error:: Environment name : npm"
417
+ echo "::error:: Allowed actions : npm publish <-- must be enabled, see below"
418
+ echo "::error::npm's current UI allows 'npm stage publish' by default for newly created"
419
+ echo "::error::configurations and makes direct 'npm publish' opt-in. This workflow calls"
420
+ echo "::error::'npm publish' directly, so registering the publisher WITHOUT also allowing"
421
+ echo "::error::'npm publish' will still fail -- with a permission error rather than a 404."
422
+ echo "::error::CLI equivalent, using your own npm login and 2FA:"
423
+ echo "::error:: npm trust github --file npm-publish.yml \\"
424
+ echo "::error:: --repo Furox-Art/scientific-computing-system --env npm --allow-publish"
425
+ else
426
+ echo "::error::not a 404; see the npm output above for the real cause"
427
+ fi
428
+ exit "$status"
429
+ fi
430
+ echo "PASS: npm publish returned 0"
361
431
 
362
432
  - name: Publish to npm (token mode, no provenance)
363
- if: ${{ inputs.use_token_fallback }}
433
+ if: ${{ github.event_name != 'workflow_dispatch' || inputs.use_token_fallback }}
364
434
  env:
365
435
  NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
366
436
  run: |
@@ -416,7 +416,7 @@ jobs:
416
416
  with:
417
417
  persist-credentials: false
418
418
  - name: Set up Node
419
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
419
+ uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
420
420
  with:
421
421
  node-version: "24"
422
422
  # `node --check` runs standalone here as well as via the npm `pretest`
@@ -7,6 +7,120 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Distribution status of 2.2.2 — read this before assuming npm has it
11
+
12
+ The two registries are **not** in the same state for 2.2.2.
13
+
14
+ | Registry | `2.2.2` | Build attestation |
15
+ |---|---|---|
16
+ | **PyPI** `scientific-computing-system` | **published** | **PEP 740 provenance present** |
17
+ | **npm** `scientific-computing-system` | **NOT published** | none — the version does not exist on npm |
18
+
19
+ PyPI 2.2.2 is live and carries a PEP 740 attestation. Verified against the live
20
+ registries on 2026-10-05: the PEP 740 per-file provenance endpoint returns
21
+ **HTTP 200** for both files.
22
+
23
+ ```
24
+ curl -sS -o /dev/null -w '%{http_code}\n' \
25
+ https://pypi.org/integrity/scientific-computing-system/2.2.2/scientific_computing_system-2.2.2-py3-none-any.whl/provenance # 200
26
+ curl -sS -o /dev/null -w '%{http_code}\n' \
27
+ https://pypi.org/integrity/scientific-computing-system/2.2.2/scientific_computing_system-2.2.2.tar.gz/provenance # 200
28
+ ```
29
+
30
+ npm 2.2.2 does not exist. The published npm versions remain `1.0.0`, `2.2.0` and
31
+ `2.2.1`. Nothing about the npm launcher is broken — the publish is blocked on a
32
+ one-time npmjs.com registration, described next.
33
+
34
+ ### Pending: register the npm trusted publisher (one-time, maintainer, in a browser)
35
+
36
+ npmjs.com has **no trusted publisher** configured for the package
37
+ `scientific-computing-system`. Until one exists, the OIDC path cannot complete a
38
+ publish, and npm publishes no provenance for this package.
39
+
40
+ The coordinates to enter on npmjs.com → package `scientific-computing-system` →
41
+ **Settings → Trusted Publisher → GitHub Actions**:
42
+
43
+ | Field | Value |
44
+ |---|---|
45
+ | Organization or user | `Furox-Art` |
46
+ | Package | `scientific-computing-system` |
47
+ | Workflow filename | `npm-publish.yml` |
48
+ | Environment name | `npm` |
49
+ | Allowed actions | **`npm publish`** — must be enabled, see the warning below |
50
+
51
+ **The allowed-actions field is not optional in practice.** npm's current UI grants
52
+ `npm stage publish` by default on newly created configurations and makes direct
53
+ `npm publish` **opt-in**. This repository's workflow calls `npm publish` directly,
54
+ so registering the publisher *without* also allowing `npm publish` will leave the
55
+ publish failing — with a permission error this time rather than a 404.
56
+
57
+ The same registration from the CLI, using the maintainer's own npm login and 2FA:
58
+
59
+ ```
60
+ npm trust github --file npm-publish.yml \
61
+ --repo Furox-Art/scientific-computing-system --env npm --allow-publish
62
+ ```
63
+
64
+ ### The publish mode default is unchanged, and was never set to token
65
+
66
+ The mode is the `workflow_dispatch` input `use_token_fallback`, whose default is
67
+ `false` — that is **OIDC**. There is no `npm_publish_mode` variable; the repository
68
+ has **no Actions variables at all** (none at repository or organization scope), and
69
+ `npm_publish_mode` appears nowhere in the tree. Nothing needs to be switched back:
70
+ OIDC is already the default, and token mode remains an explicit per-run opt-in.
71
+
72
+ `NPM_TOKEN` does still exist as a repository secret. It is what token mode would
73
+ use, and it should be deleted once the trusted publisher is registered and the
74
+ first OIDC publish has succeeded.
75
+
76
+ ### Fixed: a 404 from npm no longer reads as "already published"
77
+
78
+ `npm publish` answered
79
+
80
+ ```
81
+ npm error 404 The requested resource 'scientific-computing-system@2.2.2' could not
82
+ be found or you do not have permission to access it.
83
+ ```
84
+
85
+ on runs 37268729425 and 37269325567, and that single line cannot distinguish the
86
+ two real causes. npm deliberately does not tell an unauthenticated caller whether a
87
+ package exists, so **an unregistered trusted publisher is reported as 404, not as
88
+ 401 or 403.**
89
+
90
+ Two failure surfaces were making that expensive to diagnose, and both now say so
91
+ out loud. Neither changes what the workflow does; both only change what it prints.
92
+
93
+ - **The publish step** now names the real cause when npm returns 404, states that
94
+ the package exists and the version is absent, prints the npmjs.com fields above,
95
+ and calls out the `npm publish` allowed-action requirement. A rejected or absent
96
+ token looks different (401, or `ENEEDAUTH`), and the step says that too.
97
+ - **The version-existence gate** now warns, at the point where it would otherwise
98
+ tell someone to bump the version, that a 404 also means "unauthorized". Bumping
99
+ to escape a 404 consumes a release number on both registries and still will not
100
+ publish while the publisher is unregistered.
101
+
102
+ Worth recording precisely: in **both** runs the version gate **passed**. The
103
+ tarball built, provenance was signed and submitted to the Sigstore transparency
104
+ log, and only the `PUT` failed. So both runs did prove the authentication failure,
105
+ and the fix is the registration above — not a version bump.
106
+
107
+ ## [v2.2.4] - 2026-10-12
108
+
109
+ ### Housekeeping — release alignment
110
+
111
+ - Publishes the post-2.2.3 repository state (single-shot automatic npm
112
+ publishing, #165) to PyPI and npm: the 2.2.3 upload predates that commit, so
113
+ both registries were one commit behind `main`. No behavioural change.
114
+
115
+ ## [v2.2.3] - 2026-10-05
116
+
117
+ This release exists to exercise the OIDC trusted-publish path, now that the
118
+ npmjs.com trusted publisher for `scientific-computing-system` is registered.
119
+
120
+ The previous npm 2.2.2 was published in token mode and therefore carries no
121
+ attestation. Nothing about the launcher changed: `src/` is untouched since
122
+ 2.2.2, and the only source change in this release is the version string itself.
123
+
10
124
  ## [v2.2.2] - 2026-10-05
11
125
 
12
126
  Clears the last 17 open CodeQL alerts in this repository. None of them was a
@@ -5,7 +5,7 @@ title: "scientific-computing-system"
5
5
  # Keep `version` in lockstep with pyproject.toml [project].version and
6
6
  # src/cds/_version.py. scripts/check_version_discipline.py and
7
7
  # scripts/check_version_lockstep.py enforce this.
8
- version: 2.2.2
8
+ version: 2.2.4
9
9
  authors:
10
10
  - name: "Furox-Art"
11
11
  email: "furkanarkn1451@gmail.com"
@@ -50,5 +50,5 @@ preferred-citation:
50
50
  authors:
51
51
  - name: "Furox-Art"
52
52
  year: 2026
53
- version: 2.2.2
53
+ version: 2.2.4
54
54
  url: "https://github.com/Furox-Art/scientific-computing-system"
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: scientific-computing-system
3
- Version: 2.2.2
3
+ Version: 2.2.4
4
4
  Summary: A pure-Python computational science platform for numerical methods, modeling, validation, uncertainty, scientific workflows, dimensional analysis, and optional research-data backends. Zero runtime dependencies.
5
5
  Project-URL: Homepage, https://github.com/Furox-Art/scientific-computing-system
6
6
  Project-URL: Repository, https://github.com/Furox-Art/scientific-computing-system
@@ -149,14 +149,17 @@ Both channels are published at the same version. They are **not** equally
149
149
  verifiable:
150
150
 
151
151
  - **PyPI** — carries a **PEP 740 provenance attestation** (Sigstore-signed,
152
- binding the file digest to the publishing workflow). Verified on 2.2.1.
153
- - **npm** — carries **no** attestation; the npmjs.com trusted publisher is not
154
- registered yet, so its publish path cannot mint one. npm does expose
155
- `dist.integrity` (sha512), which is a content pin, not proof of origin, and
156
- `dist.signatures`, which is npm's registry transport signature, not build
157
- provenance.
158
-
159
- Prefer PyPI for anything security-sensitive.
152
+ binding the file digest to the publishing workflow). Verified on 2.2.3, and
153
+ on every release since attestations were enabled.
154
+ - **npm** — carries a **Sigstore attestation as of 2.2.3**, minted by npm's
155
+ OIDC trusted publisher (the registry serves both an npm publish attestation
156
+ and a SLSA provenance v1 bundle for that tarball). 1.0.0 through 2.2.2
157
+ predate the publisher registration and have none, so pin 2.2.3 or newer. npm
158
+ also exposes `dist.integrity` (sha512), which is a content pin, not proof of
159
+ origin, and `dist.signatures`, which is npm's registry transport signature,
160
+ not build provenance.
161
+
162
+ Prefer PyPI if you need an attestation for a version older than 2.2.3.
160
163
  [SECURITY.md](SECURITY.md#distribution-channels-and-provenance) has the
161
164
  per-channel table, the published digests to pin, the commands to verify them,
162
165
  and what to register to close the npm gap.
@@ -269,7 +272,7 @@ The package installs a `cds` command with 13 subcommands:
269
272
 
270
273
  ```console
271
274
  $ cds --version
272
- System version 2.2.2
275
+ System version 2.2.3
273
276
  $ cds constants # physical constants table
274
277
  ```
275
278
 
@@ -53,14 +53,17 @@ Both channels are published at the same version. They are **not** equally
53
53
  verifiable:
54
54
 
55
55
  - **PyPI** — carries a **PEP 740 provenance attestation** (Sigstore-signed,
56
- binding the file digest to the publishing workflow). Verified on 2.2.1.
57
- - **npm** — carries **no** attestation; the npmjs.com trusted publisher is not
58
- registered yet, so its publish path cannot mint one. npm does expose
59
- `dist.integrity` (sha512), which is a content pin, not proof of origin, and
60
- `dist.signatures`, which is npm's registry transport signature, not build
61
- provenance.
62
-
63
- Prefer PyPI for anything security-sensitive.
56
+ binding the file digest to the publishing workflow). Verified on 2.2.3, and
57
+ on every release since attestations were enabled.
58
+ - **npm** — carries a **Sigstore attestation as of 2.2.3**, minted by npm's
59
+ OIDC trusted publisher (the registry serves both an npm publish attestation
60
+ and a SLSA provenance v1 bundle for that tarball). 1.0.0 through 2.2.2
61
+ predate the publisher registration and have none, so pin 2.2.3 or newer. npm
62
+ also exposes `dist.integrity` (sha512), which is a content pin, not proof of
63
+ origin, and `dist.signatures`, which is npm's registry transport signature,
64
+ not build provenance.
65
+
66
+ Prefer PyPI if you need an attestation for a version older than 2.2.3.
64
67
  [SECURITY.md](SECURITY.md#distribution-channels-and-provenance) has the
65
68
  per-channel table, the published digests to pin, the commands to verify them,
66
69
  and what to register to close the npm gap.
@@ -173,7 +176,7 @@ The package installs a `cds` command with 13 subcommands:
173
176
 
174
177
  ```console
175
178
  $ cds --version
176
- System version 2.2.2
179
+ System version 2.2.3
177
180
  $ cds constants # physical constants table
178
181
  ```
179
182
 
@@ -29,8 +29,8 @@ It is also published to npm as `scientific-computing-system`, but that package i
29
29
 
30
30
  | Threat | Mitigation |
31
31
  |---|---|
32
- | **Supply chain: malicious or substituted PyPI artifact** | The release workflow is the sole PyPI publish authority. It builds wheel + sdist on a GitHub-hosted runner from a hash-pinned toolchain, verifies package metadata/version, installs the built wheel, smoke-tests the installed CLI, and publishes through PyPI Trusted Publishing (OIDC). PyPI serves a PEP 740 provenance bundle for 2.2.1 whose subject digest matches the published `sha256`. |
33
- | **Supply chain: malicious or substituted npm artifact** | The npm workflow is the sole npm publish authority and gates on the registry version-existence check, a `npm pack --dry-run` tarball allowlist, and npm/Python version lockstep. **No attestation is possible yet:** the npmjs.com trusted publisher is not registered, so the token fallback is the working mode and npm's `--provenance` cannot be honoured. Consumers can only pin `dist.integrity` until that is registered. See below. |
32
+ | **Supply chain: malicious or substituted PyPI artifact** | The release workflow is the sole PyPI publish authority. It builds wheel + sdist on a GitHub-hosted runner from a hash-pinned toolchain, verifies package metadata/version, installs the built wheel, smoke-tests the installed CLI, and publishes through PyPI Trusted Publishing (OIDC). PyPI serves a PEP 740 provenance bundle for 2.2.3 whose subject digest matches the published `sha256`. |
33
+ | **Supply chain: malicious or substituted npm artifact** | The npm workflow is the sole npm publish authority and gates on the registry version-existence check, a `npm pack --dry-run` tarball allowlist, and npm/Python version lockstep. **2.2.3 onward is attested:** the npmjs.com trusted publisher is registered, the workflow publishes in `mode=oidc`, and npm's `--provenance` is honoured, so the registry serves an npm publish attestation plus a SLSA provenance v1 bundle for the released tarball. **1.0.0–2.2.2 are not:** they were published through the token fallback, which cannot mint an attestation, so for those versions the only consumer-side control is `dist.integrity`, which is a content pin rather than proof of origin. See below. |
34
34
  | **Registry drift** | Public PyPI is treated as the distribution registry for the library. The release integrity check requires exactly one wheel and one sdist on PyPI and requires the matching GitHub Release to contain no wheel/sdist assets. A registry-policy workflow rechecks the public PyPI package and removes accidental distribution assets from GitHub Releases. |
35
35
  | **Dependency vulnerabilities** | The core has no required runtime dependencies. Development/test/docs lock files are audited in CI with `pip-audit`; optional backends are isolated behind extras and lazy loading. |
36
36
  | **Code execution from package install** | The build backend is `hatchling`; there is no `setup.py` execution and package versioning is static in `pyproject.toml` plus `src/cds/_version.py`. |
@@ -48,8 +48,8 @@ version-specific; re-check it rather than trusting it indefinitely.
48
48
  |---|---|---|
49
49
  | Contents | the library (wheel + sdist) | `index.js`, `bin/scs.js`, `LICENSE`, `README.md`, `CHANGELOG.md`, `SECURITY.md` — **no Python** |
50
50
  | Requires the other channel | no | yes; `scs` runs `python -m cds`, so the Python distribution must be installed. It resolves `python`/`python3`/`py` and does **not** look for a `cds` console script on `PATH` |
51
- | Publish authentication | Trusted Publishing (OIDC) | OIDC trusted publishing implemented and default; token fallback exists |
52
- | **PEP 740 provenance attestation** | **yes on 2.2.1** (verified; see below) | **none** — attestations endpoint returns 404 |
51
+ | Publish authentication | Trusted Publishing (OIDC) | Trusted Publishing (OIDC) since 2.2.3; token fallback still exists in the workflow |
52
+ | **PEP 740 provenance attestation** | **yes on 2.2.3** (verified; see below) | **yes on 2.2.3** (verified; see below) |
53
53
  | **npm `dist.signatures`** | n/a | present — registry transport signature, **not** build provenance |
54
54
  | **Content digest a consumer can pin** | `sha256` per file on the PyPI file page | `dist.integrity` (sha512) and `dist.shasum` (sha1) |
55
55
 
@@ -69,34 +69,40 @@ version-specific; re-check it rather than trusting it indefinitely.
69
69
 
70
70
  #### What is published today, and how to check it
71
71
 
72
- Verified against the live registries for **PyPI 2.2.1**:
72
+ Verified against the live registries for **2.2.3** on 2026-10-05:
73
73
 
74
74
  ```bash
75
75
  # PEP 740 attestation exists (HTTP 200). Note the per-FILE path; a bare
76
76
  # /integrity/<project>/<version>/ directory is not an endpoint and 404s.
77
77
  curl -sS -H "Accept: application/vnd.pypi.integrity.v1+json" \
78
- https://pypi.org/integrity/scientific-computing-system/2.2.1/scientific_computing_system-2.2.1-py3-none-any.whl/provenance
78
+ https://pypi.org/integrity/scientific-computing-system/2.2.3/scientific_computing_system-2.2.3-py3-none-any.whl/provenance
79
79
 
80
80
  # The digest PyPI publishes for that file, to compare against the attestation
81
81
  # subject (predicateType https://docs.pypi.org/attestations/publish/v1):
82
- curl -sS https://pypi.org/pypi/scientific-computing-system/2.2.1/json | python -c \
82
+ curl -sS https://pypi.org/pypi/scientific-computing-system/2.2.3/json | python -c \
83
83
  "import json,sys; [print(f['filename'], f['digests']['sha256']) for f in json.load(sys.stdin)['urls']]"
84
84
 
85
- # npm: no attestation; there IS a transport signature and an integrity digest.
85
+ # npm: attested from 2.2.3 onward (HTTP 200, two bundles: the npm publish
86
+ # attestation and a SLSA provenance v1 one). Earlier versions 404 -- 1.0.0,
87
+ # 2.2.0, 2.2.1 and 2.2.2 were published through the token fallback, which
88
+ # cannot mint an attestation.
86
89
  curl -sS -o /dev/null -w '%{http_code}\n' \
87
- https://registry.npmjs.org/-/npm/v1/attestations/scientific-computing-system@2.2.1 # -> 404
88
- npm view scientific-computing-system@2.2.1 dist.integrity dist.shasum
90
+ https://registry.npmjs.org/-/npm/v1/attestations/scientific-computing-system@2.2.3 # -> 200
91
+ curl -sS -o /dev/null -w '%{http_code}\n' \
92
+ https://registry.npmjs.org/-/npm/v1/attestations/scientific-computing-system@2.2.2 # -> 404
93
+ npm view scientific-computing-system@2.2.3 dist.integrity dist.shasum
89
94
  ```
90
95
 
91
- The published PyPI 2.2.1 digests, useful for pinning:
96
+ The published PyPI 2.2.3 digests, useful for pinning:
92
97
 
93
98
  | File | sha256 |
94
99
  |---|---|
95
- | `scientific_computing_system-2.2.1-py3-none-any.whl` | `b14b89478fdc8b11482ffd556bb6eb59c6b21887f2a09418edec7029d4569bb9` |
96
- | `scientific_computing_system-2.2.1.tar.gz` | `6ba4ad4c2ebb6bef86356bcbcd251e12978737945e58d9e75b9c68860efa77f6` |
100
+ | `scientific_computing_system-2.2.3-py3-none-any.whl` | `57408c812ac153e6f2dca6345d715084032fc67c5a8d9df127f257c6bfe31a3c` |
101
+ | `scientific_computing_system-2.2.3.tar.gz` | `86af9fa7295d7c026f1b417a48eda4b6a696e9e9605ca459e48ad125a1ab962b` |
97
102
 
98
103
  Both were confirmed to equal the `subject` digest inside their attestation
99
104
  bundles, so the attested bytes and the published bytes are the same bytes.
105
+ The 2.2.1 digests remain pinned in the release notes for that version.
100
106
 
101
107
  #### Reproducible builds: what is and is not claimed
102
108
 
@@ -114,26 +120,48 @@ deterministic for a fixed toolchain, and this repository does not currently
114
120
  claim that the published artifacts are bit-for-bit reproducible from source.*
115
121
  Treat the published digests above as the pin to use, not a rebuild target.
116
122
 
117
- #### When provenance will appear
123
+ #### How the npm attestation was enabled
118
124
 
119
- The OIDC plumbing is implemented on both sides; the registries-side trusted
120
- publisher records are **not yet in place**, so an npm release cannot carry an
121
- attestation yet:
125
+ Both registries now have their trusted-publisher record, so a release from this
126
+ repository's publish workflows mints an attestation on each channel:
122
127
 
123
128
  - **PyPI** — Trusted Publisher: owner `Furox-Art`, repository
124
129
  `scientific-computing-system`, workflow `release.yml`, environment `pypi`.
125
- Already exercised: 2.2.1 was published through it and is attested.
130
+ Exercised since 2.2.1; every release since is attested.
126
131
  - **npm** — Trusted Publisher: owner `Furox-Art`, repository
127
132
  `scientific-computing-system`, workflow `npm-publish.yml`, environment `npm`.
128
- **Pending registration.** Until it exists, the default OIDC path cannot
129
- complete a publish, and the token fallback — which cannot mint a Sigstore
130
- identity — is the only working mode. That is why the published npm artifacts
131
- have no attestation.
132
-
133
- **Practical consequence:** for anything security-sensitive, install from PyPI and
134
- check the PEP 740 bundle against the digests PyPI publishes. Do not rely on the
135
- npm channel for supply-chain assurance today; treat its `dist.integrity` as an
136
- integrity pin only.
133
+ Registered before 2.2.3, which is the first npm release published through it
134
+ with `--provenance`. Before that registration the default OIDC path could not
135
+ complete a publish, so 1.0.0–2.2.2 went out through the token fallback — a
136
+ long-lived token has no OIDC identity to attest, and those versions carry no
137
+ attestation. They stay in the registry as-is; the fix for a consumer is to
138
+ move to 2.2.3 or newer.
139
+
140
+ The registration step that is easy to miss: under **Settings → Trusted
141
+ Publisher → GitHub Actions**, the **`npm publish`** allowed action must be
142
+ enabled. npm's UI allows `npm stage publish` by default on new configurations
143
+ and makes direct `npm publish` opt-in, while this repository's workflow
144
+ publishes directly. A publisher registered without it still fails, with a
145
+ permission error rather than a 404.
146
+
147
+ **A missing registration looks like a missing version.** npm will not disclose
148
+ whether a package exists to an unauthenticated caller, so an unrecognised
149
+ trusted publisher produces the same `E404` as an unpublished version:
150
+
151
+ ```
152
+ npm error 404 The requested resource 'scientific-computing-system@2.2.2' could
153
+ not be found or you do not have permission to access it.
154
+ ```
155
+
156
+ Do not bump the version in response to that line. A bad or missing *token* fails
157
+ differently — `401`, or `ENEEDAUTH` — so `E404` on a PUT for a package that is
158
+ known to exist means the registration, not the version.
159
+
160
+ **Practical consequence:** install 2.2.3 or newer from either channel and verify
161
+ its attestation bundle — PEP 740 on PyPI (per-file endpoint), the npm publish and
162
+ SLSA provenance bundles on npm. For a pinned older version the npm channel only
163
+ offers `dist.integrity`, which is an integrity pin and not proof of origin; use
164
+ PyPI's PEP 740 bundle there instead.
137
165
 
138
166
  ### Optional Backend Boundary
139
167
 
@@ -2,7 +2,7 @@
2
2
  "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
3
3
  "@type": "SoftwareSourceCode",
4
4
  "name": "scientific-computing-system",
5
- "version": "2.2.2",
5
+ "version": "2.2.4",
6
6
  "description": "Pure-Python computational science platform for numerical methods, modeling, validation, uncertainty, and scientific workflows. Zero runtime dependencies. This is the front door; scientific-computing-system-2.0 is the NumPy build of the same work.",
7
7
  "license": "https://spdx.org/licenses/MIT",
8
8
  "codeRepository": "https://github.com/Furox-Art/scientific-computing-system",