scientific-computing-system 2.2.3__tar.gz → 2.2.5__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 (425) hide show
  1. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/.github/workflows/changelog.yml +1 -1
  2. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/.github/workflows/codeql.yml +3 -3
  3. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/.github/workflows/npm-publish.yml +20 -22
  4. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/.github/workflows/tests.yml +1 -1
  5. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/CHANGELOG.md +17 -0
  6. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/CITATION.cff +2 -2
  7. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/PKG-INFO +12 -9
  8. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/README.md +11 -8
  9. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/SECURITY.md +41 -33
  10. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/benchmarks/run_benchmarks.py +3 -4
  11. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/codemeta.json +1 -1
  12. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/benchmarks.md +17 -3
  13. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/getting-started.md +22 -0
  14. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/index.md +19 -0
  15. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tour_of_numerical_methods.md +1 -1
  16. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/npm.test.js +28 -13
  17. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/package.json +1 -1
  18. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/pyproject.toml +1 -1
  19. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/__init__.py +34 -0
  20. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/_version.py +1 -1
  21. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/cli/__init__.py +34 -3
  22. scientific_computing_system-2.2.5/src/cds/cli/_exit_codes.py +81 -0
  23. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/cli/_handlers.py +63 -31
  24. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/math_utils/linalg.py +132 -6
  25. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/montecarlo/methods.py +67 -27
  26. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/probability/distributions.py +77 -7
  27. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_audit_guard_coverage.py +3 -3
  28. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_audit_hardening.py +1 -1
  29. scientific_computing_system-2.2.5/tests/test_audit_hardening_c1.py +162 -0
  30. scientific_computing_system-2.2.5/tests/test_audit_hardening_c2.py +148 -0
  31. scientific_computing_system-2.2.5/tests/test_audit_hardening_c3.py +168 -0
  32. scientific_computing_system-2.2.5/tests/test_audit_hardening_c4.py +168 -0
  33. scientific_computing_system-2.2.5/tests/test_audit_hardening_h1.py +175 -0
  34. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_benchmarks.py +1 -1
  35. scientific_computing_system-2.2.5/tests/test_cli_exit_codes.py +239 -0
  36. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_edge_misc_numerical.py +5 -0
  37. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_edge_nlp.py +1 -1
  38. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_edge_quantum_evaluator_cli.py +24 -2
  39. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_fractals.py +26 -20
  40. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_markov.py +1 -1
  41. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_clustering.py +2 -2
  42. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_montecarlo.py +17 -17
  43. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_multi_qubit.py +2 -2
  44. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_nlp_attention.py +4 -4
  45. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_probability.py +2 -2
  46. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_provenance_claims.py +12 -8
  47. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_quantum.py +1 -1
  48. scientific_computing_system-2.2.5/tests/test_seed_hygiene.py +149 -0
  49. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/.github/workflows/benchmarks.yml +0 -0
  50. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/.github/workflows/bot-reviewer.yml +0 -0
  51. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/.github/workflows/cli-package-smoke.yml +0 -0
  52. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/.github/workflows/pr-automation.yml +0 -0
  53. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/.github/workflows/pypi-registry-smoke.yml +0 -0
  54. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/.github/workflows/release.yml +0 -0
  55. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/.gitignore +0 -0
  56. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/CONTRIBUTING.md +0 -0
  57. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/LICENSE +0 -0
  58. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/benchmarks/results.json +0 -0
  59. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/benchmarks/robust_runner.py +0 -0
  60. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/bin/scs.js +0 -0
  61. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/dashboard/app.py +0 -0
  62. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/ARCHITECTURE.md +0 -0
  63. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/CASE_STUDY_HUBBLE.md +0 -0
  64. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/CASE_STUDY_QUANTUM_ML.md +0 -0
  65. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/api.md +0 -0
  66. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/assets/icon.svg +0 -0
  67. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/assets/logo.svg +0 -0
  68. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/checks/verify_provenance_claims.py +0 -0
  69. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/cookbook.md +0 -0
  70. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/maintenance.md +0 -0
  71. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/ml_reference.md +0 -0
  72. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/related.md +0 -0
  73. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/research-workflows.md +0 -0
  74. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/stylesheets/extra.css +0 -0
  75. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/core_demo.md +0 -0
  76. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/data_analysis_demo.md +0 -0
  77. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/diffeq_demo.md +0 -0
  78. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/fft2_demo.md +0 -0
  79. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/graph_demo.md +0 -0
  80. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/hypothesis_demo.md +0 -0
  81. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/hypothesis_tests_demo.md +0 -0
  82. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/hypothesis_with_stats_demo.md +0 -0
  83. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/knowledge_demo.md +0 -0
  84. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/linalg_demo.md +0 -0
  85. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/math_utils_demo.md +0 -0
  86. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/ml_advanced_demo.md +0 -0
  87. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/ml_and_viz_demo.md +0 -0
  88. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/ml_demo.md +0 -0
  89. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/modeling_demo.md +0 -0
  90. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/montecarlo_demo.md +0 -0
  91. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/nlp_attention_demo.md +0 -0
  92. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/nlp_bpe_demo.md +0 -0
  93. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/nlp_mini_gpt_demo.md +0 -0
  94. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/nlp_viz.md +0 -0
  95. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/numerical_integration_demo.md +0 -0
  96. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/optimization_demo.md +0 -0
  97. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/pandas_io_demo.md +0 -0
  98. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/pca_demo.md +0 -0
  99. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/probability_demo.md +0 -0
  100. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/quantum_demo.md +0 -0
  101. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/quick_start.md +0 -0
  102. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/scientific_demo.md +0 -0
  103. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/signals_demo.md +0 -0
  104. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/stats_demo.md +0 -0
  105. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/stiff_ode_demo.md +0 -0
  106. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/tutorials/time_series_demo.md +0 -0
  107. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/docs/why-pure-python.md +0 -0
  108. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/core_demo.py +0 -0
  109. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/data_analysis_demo.py +0 -0
  110. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/diffeq_demo.py +0 -0
  111. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/discovery_pipeline_demo.py +0 -0
  112. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/ensemble_showcase.py +0 -0
  113. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/fft2_demo.py +0 -0
  114. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/graph_demo.py +0 -0
  115. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/hypothesis_custom_generator.py +0 -0
  116. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/hypothesis_demo.py +0 -0
  117. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/hypothesis_tests_demo.py +0 -0
  118. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/hypothesis_with_stats_demo.py +0 -0
  119. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/interpolate_demo.py +0 -0
  120. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/knowledge_demo.py +0 -0
  121. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/linalg_demo.py +0 -0
  122. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/math_utils_demo.py +0 -0
  123. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/ml_and_viz_demo.py +0 -0
  124. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/modeling_demo.py +0 -0
  125. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/montecarlo_demo.py +0 -0
  126. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/nlp_attention_demo.py +0 -0
  127. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/nlp_bpe_demo.py +0 -0
  128. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/nlp_mini_gpt_demo.py +0 -0
  129. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/nlp_viz_demo.py +0 -0
  130. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/numerical_integration_demo.py +0 -0
  131. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/optimization_demo.py +0 -0
  132. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/pca_demo.py +0 -0
  133. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/pde_demo.py +0 -0
  134. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/plot_demo.py +0 -0
  135. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/plotting_notebook.ipynb +0 -0
  136. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/probability_demo.py +0 -0
  137. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/quantum_demo.py +0 -0
  138. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/scientific_demo.py +0 -0
  139. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/signals_demo.py +0 -0
  140. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/stats_demo.py +0 -0
  141. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/examples/tour_of_numerical_methods.ipynb +0 -0
  142. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/index.js +0 -0
  143. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/mkdocs.yml +0 -0
  144. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/paper.bib +0 -0
  145. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/paper.md +0 -0
  146. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/requirements-build.lock +0 -0
  147. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/requirements-dev.lock +0 -0
  148. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/requirements.lock +0 -0
  149. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/scripts/check_release_toolchain.py +0 -0
  150. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/scripts/check_version_discipline.py +0 -0
  151. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/scripts/check_version_lockstep.py +0 -0
  152. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/scripts/publish.py +0 -0
  153. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/scripts/verify_cli_install.py +0 -0
  154. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/scripts/verify_cookbook.py +0 -0
  155. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/scripts/verify_ml_reference.py +0 -0
  156. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/scripts/verify_pypi_release.py +0 -0
  157. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/scripts/verify_release_integrity.py +0 -0
  158. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/__main__.py +0 -0
  159. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/_paths.py +0 -0
  160. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/bayes/__init__.py +0 -0
  161. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/bayes/conjugate.py +0 -0
  162. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/causal.py +0 -0
  163. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/cli/__main__.py +0 -0
  164. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/cli/_parser.py +0 -0
  165. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/cli/_style.py +0 -0
  166. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/cli/_system_info.py +0 -0
  167. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/core/__init__.py +0 -0
  168. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/core/_numeric.py +0 -0
  169. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/core/models.py +0 -0
  170. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/data_analysis/__init__.py +0 -0
  171. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/data_analysis/dataset.py +0 -0
  172. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/data_analysis/loader.py +0 -0
  173. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/data_analysis/pandas_io.py +0 -0
  174. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/data_analysis/transform.py +0 -0
  175. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/data_analysis/viz.py +0 -0
  176. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/data_io/__init__.py +0 -0
  177. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/data_io/scientific.py +0 -0
  178. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/data_io/streaming.py +0 -0
  179. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/diffeq/__init__.py +0 -0
  180. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/diffeq/_implicit.py +0 -0
  181. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/diffeq/solvers.py +0 -0
  182. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/diffeq/symplectic.py +0 -0
  183. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/fractals/__init__.py +0 -0
  184. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/fractals/sets.py +0 -0
  185. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/genetics/__init__.py +0 -0
  186. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/genetics/sequence.py +0 -0
  187. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/graph/__init__.py +0 -0
  188. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/graph/algorithms.py +0 -0
  189. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/hypothesis/__init__.py +0 -0
  190. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/hypothesis/evaluator.py +0 -0
  191. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/hypothesis/generator.py +0 -0
  192. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/hypothesis/mining.py +0 -0
  193. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/infotheory/__init__.py +0 -0
  194. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/infotheory/measures.py +0 -0
  195. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/interpolate/__init__.py +0 -0
  196. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/knowledge/__init__.py +0 -0
  197. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/knowledge/graph.py +0 -0
  198. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/knowledge/notes.py +0 -0
  199. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/knowledge/retrieval.py +0 -0
  200. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/math_utils/__init__.py +0 -0
  201. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/math_utils/calculus.py +0 -0
  202. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/math_utils/special.py +0 -0
  203. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/math_utils/svd.py +0 -0
  204. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/__init__.py +0 -0
  205. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/boosting.py +0 -0
  206. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/clustering.py +0 -0
  207. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/decomposition.py +0 -0
  208. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/ensemble.py +0 -0
  209. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/linear_models.py +0 -0
  210. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/metrics.py +0 -0
  211. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/model_selection.py +0 -0
  212. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/naive_bayes.py +0 -0
  213. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/neighbors.py +0 -0
  214. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/neural.py +0 -0
  215. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/preprocessing.py +0 -0
  216. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/tree.py +0 -0
  217. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/ml/voting.py +0 -0
  218. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/modeling/__init__.py +0 -0
  219. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/modeling/_base.py +0 -0
  220. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/modeling/_nodes.py +0 -0
  221. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/modeling/expression.py +0 -0
  222. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/modeling/fitting.py +0 -0
  223. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/modeling/model.py +0 -0
  224. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/modeling/solver.py +0 -0
  225. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/montecarlo/__init__.py +0 -0
  226. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/montecarlo/markov.py +0 -0
  227. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/__init__.py +0 -0
  228. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/attention.py +0 -0
  229. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/autograd/__init__.py +0 -0
  230. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/autograd/_grad.py +0 -0
  231. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/autograd/ops.py +0 -0
  232. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/autograd/tensor.py +0 -0
  233. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/bpe.py +0 -0
  234. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/data.py +0 -0
  235. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/embed.py +0 -0
  236. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/layers.py +0 -0
  237. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/model.py +0 -0
  238. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/optim.py +0 -0
  239. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/training.py +0 -0
  240. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/nlp/viz.py +0 -0
  241. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/numerical_integration/__init__.py +0 -0
  242. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/numerical_integration/quadrature.py +0 -0
  243. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/optimization/__init__.py +0 -0
  244. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/optimization/_metaheuristics.py +0 -0
  245. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/optimization/constrained.py +0 -0
  246. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/optimization/minimize.py +0 -0
  247. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/pde/__init__.py +0 -0
  248. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/plot/__init__.py +0 -0
  249. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/plot/_backend.py +0 -0
  250. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/plot/charts.py +0 -0
  251. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/probability/__init__.py +0 -0
  252. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/probability/_advanced.py +0 -0
  253. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/probability/extra_distributions.py +0 -0
  254. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/provenance/__init__.py +0 -0
  255. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/provenance/manifest.py +0 -0
  256. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/py.typed +0 -0
  257. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/quantum/__init__.py +0 -0
  258. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/quantum/circuit.py +0 -0
  259. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/quantum/multi_qubit.py +0 -0
  260. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/quantum/simulator.py +0 -0
  261. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/scientific/__init__.py +0 -0
  262. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/scientific/constants.py +0 -0
  263. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/scientific/formulas.py +0 -0
  264. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/sensitivity.py +0 -0
  265. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/signals/__init__.py +0 -0
  266. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/signals/filters.py +0 -0
  267. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/signals/processing.py +0 -0
  268. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/signals/stft.py +0 -0
  269. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/signals/wavelet.py +0 -0
  270. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/stats/__init__.py +0 -0
  271. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/stats/_distributions.py +0 -0
  272. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/stats/bootstrap.py +0 -0
  273. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/stats/descriptive.py +0 -0
  274. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/stats/hypothesis_tests.py +0 -0
  275. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/stats/multiple_testing.py +0 -0
  276. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/stats/nonparametric.py +0 -0
  277. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/stats/power.py +0 -0
  278. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/stats/regression.py +0 -0
  279. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/stats/time_series.py +0 -0
  280. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/tools/__init__.py +0 -0
  281. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/tools/adapters.py +0 -0
  282. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/tools/registry.py +0 -0
  283. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/uncertainty/__init__.py +0 -0
  284. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/uncertainty/propagation.py +0 -0
  285. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/units/__init__.py +0 -0
  286. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/units/core.py +0 -0
  287. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/validation/__init__.py +0 -0
  288. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/validation/adequacy.py +0 -0
  289. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/validation/checks.py +0 -0
  290. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/validation/drift.py +0 -0
  291. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/validation/report.py +0 -0
  292. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/wavelets/__init__.py +0 -0
  293. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/wavelets/haar.py +0 -0
  294. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/workflow/__init__.py +0 -0
  295. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/workflow/engine.py +0 -0
  296. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/workflow/gates.py +0 -0
  297. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/workflow/orchestrator.py +0 -0
  298. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/workflow/selection.py +0 -0
  299. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/workflow/tooling.py +0 -0
  300. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/src/cds/workflow/types.py +0 -0
  301. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/__init__.py +0 -0
  302. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/conftest.py +0 -0
  303. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_advanced_fitting.py +0 -0
  304. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_audit_completion_coverage.py +0 -0
  305. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_audit_hardening_coverage.py +0 -0
  306. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_bayes_v2.py +0 -0
  307. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_bootstrap.py +0 -0
  308. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_causal.py +0 -0
  309. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_cli.py +0 -0
  310. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_cli_color.py +0 -0
  311. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_cli_extended.py +0 -0
  312. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_cli_system_info.py +0 -0
  313. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_codemeta_version_lockstep.py +0 -0
  314. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_constrained_opt.py +0 -0
  315. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_core.py +0 -0
  316. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_data_analysis.py +0 -0
  317. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_data_analysis_lazy_bridge.py +0 -0
  318. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_data_analysis_pandas_io.py +0 -0
  319. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_data_io.py +0 -0
  320. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_data_io_optional_backends.py +0 -0
  321. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_data_io_scientific.py +0 -0
  322. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_dataset.py +0 -0
  323. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_dev_numpy_pin_contract.py +0 -0
  324. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_diffeq.py +0 -0
  325. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_diffeq_implicit.py +0 -0
  326. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_domain_validation.py +0 -0
  327. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_edge_ml_quantum_linalg.py +0 -0
  328. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_edge_stats_optimization_signals.py +0 -0
  329. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_extra_distributions.py +0 -0
  330. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_fft2.py +0 -0
  331. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_fitting_bootstrap.py +0 -0
  332. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_genetics.py +0 -0
  333. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_graph.py +0 -0
  334. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_hardening_privacy_provenance.py +0 -0
  335. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_hypothesis.py +0 -0
  336. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_hypothesis_engine.py +0 -0
  337. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_hypothesis_mining.py +0 -0
  338. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_hypothesis_tests.py +0 -0
  339. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_infotheory.py +0 -0
  340. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_interpolate.py +0 -0
  341. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_knowledge.py +0 -0
  342. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_layering.py +0 -0
  343. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_linalg_extended.py +0 -0
  344. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_linalg_qr_cholesky.py +0 -0
  345. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_math_utils.py +0 -0
  346. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_boosting.py +0 -0
  347. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_ensemble.py +0 -0
  348. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_knn.py +0 -0
  349. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_linreg.py +0 -0
  350. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_logreg.py +0 -0
  351. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_metrics.py +0 -0
  352. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_model_selection.py +0 -0
  353. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_naive_bayes.py +0 -0
  354. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_pca.py +0 -0
  355. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_preprocessing.py +0 -0
  356. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_tree.py +0 -0
  357. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_viz.py +0 -0
  358. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_ml_voting.py +0 -0
  359. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_modeling.py +0 -0
  360. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_modeling_fit_validation.py +0 -0
  361. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_nlp_autograd.py +0 -0
  362. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_nlp_bpe.py +0 -0
  363. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_nlp_embed.py +0 -0
  364. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_nlp_layers.py +0 -0
  365. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_nlp_model.py +0 -0
  366. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_nlp_training.py +0 -0
  367. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_nlp_viz.py +0 -0
  368. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_numerical_integration.py +0 -0
  369. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_numerical_invariants.py +0 -0
  370. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_numerical_oracles.py +0 -0
  371. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_optimization.py +0 -0
  372. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_optimization_metaheuristics.py +0 -0
  373. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_path_confinement.py +0 -0
  374. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_pde.py +0 -0
  375. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_plot_charts.py +0 -0
  376. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_plot_lazy.py +0 -0
  377. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_power.py +0 -0
  378. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_probability_advanced.py +0 -0
  379. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_property_invariants.py +0 -0
  380. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_protocol_placeholders.py +0 -0
  381. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_provenance.py +0 -0
  382. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_provenance_audit_hardening.py +0 -0
  383. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_public_api.py +0 -0
  384. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_readme_badges.py +0 -0
  385. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_readme_surface.py +0 -0
  386. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_release_contract.py +0 -0
  387. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_release_toolchain.py +0 -0
  388. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_retrieval.py +0 -0
  389. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_runtime_dependency_graph.py +0 -0
  390. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_scientific.py +0 -0
  391. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_selection_audit_hardening.py +0 -0
  392. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_sensitivity.py +0 -0
  393. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_sensitivity_global.py +0 -0
  394. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_signals.py +0 -0
  395. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_signals_filters.py +0 -0
  396. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_special_invariants.py +0 -0
  397. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_special_numerics.py +0 -0
  398. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_statistical_audit.py +0 -0
  399. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_stats.py +0 -0
  400. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_stats_audit_coverage.py +0 -0
  401. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_stats_multiple_testing.py +0 -0
  402. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_stats_nonparametric.py +0 -0
  403. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_stats_time_series.py +0 -0
  404. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_stft.py +0 -0
  405. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_streaming_analytics.py +0 -0
  406. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_svd.py +0 -0
  407. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_symplectic.py +0 -0
  408. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_tool_adapters.py +0 -0
  409. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_tools_registry.py +0 -0
  410. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_uncertainty.py +0 -0
  411. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_units.py +0 -0
  412. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_validation.py +0 -0
  413. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_validation_adequacy.py +0 -0
  414. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_validation_advanced.py +0 -0
  415. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_validation_drift.py +0 -0
  416. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_verify_release_integrity.py +0 -0
  417. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_wavelet.py +0 -0
  418. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_wavelets_v2.py +0 -0
  419. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_workflow.py +0 -0
  420. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_workflow_gates.py +0 -0
  421. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_workflow_orchestrator.py +0 -0
  422. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_workflow_orchestrator_blocked_review.py +0 -0
  423. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_workflow_selection.py +0 -0
  424. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/tests/test_workflow_selection_coverage.py +0 -0
  425. {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.5}/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"
@@ -325,14 +317,20 @@ jobs:
325
317
  NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
326
318
  run: |
327
319
  set -euo pipefail
328
- 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
329
327
  if [ -z "${NPM_TOKEN:-}" ]; then
330
- echo "::error::token mode was requested (use_token_fallback=true) but the NPM_TOKEN secret is empty or unset"
331
- 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"
332
330
  exit 1
333
331
  fi
334
332
  echo "mode=token via NPM_TOKEN (no provenance: a long-lived token cannot mint a Sigstore attestation)"
335
- 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."
336
334
  else
337
335
  if [ -z "${ACTIONS_ID_TOKEN_REQUEST_URL:-}" ] || [ -z "${ACTIONS_ID_TOKEN_REQUEST_TOKEN:-}" ]; then
338
336
  echo "::error::OIDC mode was requested but this job cannot mint an OIDC token"
@@ -386,7 +384,7 @@ jobs:
386
384
  # trusted publisher is the cause, and "bump the version" would not have
387
385
  # helped.
388
386
  - name: Publish to npm (OIDC trusted publishing, with provenance)
389
- if: ${{ !inputs.use_token_fallback }}
387
+ if: ${{ github.event_name == 'workflow_dispatch' && !inputs.use_token_fallback }}
390
388
  run: |
391
389
  # `-e` is on by default in this shell, so it is explicitly suspended
392
390
  # around npm to capture the exit code instead of aborting before the
@@ -432,7 +430,7 @@ jobs:
432
430
  echo "PASS: npm publish returned 0"
433
431
 
434
432
  - name: Publish to npm (token mode, no provenance)
435
- if: ${{ inputs.use_token_fallback }}
433
+ if: ${{ github.event_name != 'workflow_dispatch' || inputs.use_token_fallback }}
436
434
  env:
437
435
  NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
438
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`
@@ -5,6 +5,15 @@ All notable changes to **scientific-computing-system** will be documented in thi
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [v2.2.5] - 2026-10-12
9
+ ### Housekeeping — audit hardening
10
+
11
+ - Closes the findings of the full-repository audit: patched the concrete
12
+ defects (correctness, fail-closed behaviour, platform independence),
13
+ wired every standalone guard into CI, removed dead or duplicated code
14
+ paths, and pinned every doc claim to a test so it cannot silently
15
+ drift again. Regression tests fail without the corresponding fix.
16
+
8
17
  ## [Unreleased]
9
18
 
10
19
  ### Distribution status of 2.2.2 — read this before assuming npm has it
@@ -104,6 +113,14 @@ tarball built, provenance was signed and submitted to the Sigstore transparency
104
113
  log, and only the `PUT` failed. So both runs did prove the authentication failure,
105
114
  and the fix is the registration above — not a version bump.
106
115
 
116
+ ## [v2.2.4] - 2026-10-12
117
+
118
+ ### Housekeeping — release alignment
119
+
120
+ - Publishes the post-2.2.3 repository state (single-shot automatic npm
121
+ publishing, #165) to PyPI and npm: the 2.2.3 upload predates that commit, so
122
+ both registries were one commit behind `main`. No behavioural change.
123
+
107
124
  ## [v2.2.3] - 2026-10-05
108
125
 
109
126
  This release exists to exercise the OIDC trusted-publish path, now that the
@@ -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.3
8
+ version: 2.2.5
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.3
53
+ version: 2.2.5
54
54
  url: "https://github.com/Furox-Art/scientific-computing-system"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: scientific-computing-system
3
- Version: 2.2.3
3
+ Version: 2.2.5
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.
@@ -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.
@@ -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,28 +120,29 @@ 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
- Register it under **Settings → Trusted Publisher → GitHub Actions** and enable
134
- the **`npm publish`** allowed action. That last field is not optional here: npm's
135
- current UI allows `npm stage publish` by default on new configurations and makes
136
- direct `npm publish` opt-in, while this repository's workflow publishes
137
- directly. A publisher registered without it still fails, with a permission error
138
- rather than a 404.
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.
139
146
 
140
147
  **A missing registration looks like a missing version.** npm will not disclose
141
148
  whether a package exists to an unauthenticated caller, so an unrecognised
@@ -150,10 +157,11 @@ attestation yet:
150
157
  differently — `401`, or `ENEEDAUTH` — so `E404` on a PUT for a package that is
151
158
  known to exist means the registration, not the version.
152
159
 
153
- **Practical consequence:** for anything security-sensitive, install from PyPI and
154
- check the PEP 740 bundle against the digests PyPI publishes. Do not rely on the
155
- npm channel for supply-chain assurance today; treat its `dist.integrity` as an
156
- integrity pin only.
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.
157
165
 
158
166
  ### Optional Backend Boundary
159
167
 
@@ -18,7 +18,6 @@ report stays deterministic.
18
18
 
19
19
  import json
20
20
  import math
21
- import multiprocessing
22
21
  import subprocess
23
22
  import time
24
23
  import timeit
@@ -199,12 +198,12 @@ def bench_montecarlo() -> OrderedDict[str, str]:
199
198
 
200
199
  start = time.perf_counter()
201
200
  result = estimate_pi(samples, seed=42)
202
- t_parallel = time.perf_counter() - start
201
+ elapsed = time.perf_counter() - start
203
202
 
204
203
  return OrderedDict(
205
204
  [
206
- ("Parallel Pi (100k samples)", f"{t_parallel:.4f}s"),
207
- ("CPU Cores Saturated", str(multiprocessing.cpu_count())),
205
+ ("Pi (100k samples)", f"{elapsed:.4f}s"),
206
+ ("Sampling mode", "single in-process random.Random stream"),
208
207
  ("Estimate error vs π", f"{abs(result.estimate - math.pi):.5f}"),
209
208
  ]
210
209
  )
@@ -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.3",
5
+ "version": "2.2.5",
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",
@@ -59,7 +59,9 @@ number from this page.**
59
59
  of why O(1) sampling is the right design, not as a benchmark result.
60
60
  - **"CPU Cores Saturated" is a core count, not a saturation measurement.** It
61
61
  reports `multiprocessing.cpu_count()`. Nothing here verifies that every core
62
- stayed busy or that the workload actually scaled.
62
+ stayed busy or that the workload actually scaled. The Monte Carlo table no
63
+ longer carries that row: `estimate_pi` samples on one in-process stream, so
64
+ a core count would be meaningless there.
63
65
  - **The generated section headers describe algorithms, not outcomes.** Strings
64
66
  like "Algorithmic Intelligence", "Approaching C-Speed" and "Hardware
65
67
  Saturation" come from the generator, not from the data. The first table's
@@ -109,10 +111,22 @@ This report measures both raw speed and algorithmic scaling. Pure Python is slow
109
111
 
110
112
  | Metric | Value |
111
113
  |--------|-------|
112
- | Parallel Pi (100k samples) | 0.0388s |
113
- | CPU Cores Saturated | 4 |
114
+ | Pi (100k samples) | 0.0388s |
114
115
  | Estimate error vs π | 0.00791 |
115
116
 
117
+ The timing above is the committed pre-change measurement and is kept
118
+ unchanged rather than re-measured, because re-running the generator would
119
+ overwrite the hand-written analysis on this page. `estimate_pi` no longer fans
120
+ its samples out to a process pool: on the pooled path, Windows `spawn` cost
121
+ ≈1.4 s of interpreter start-up and module re-import per default call against
122
+ ≈0.014 s of actual sampling — about 100× the work it was meant to accelerate.
123
+ The estimator now draws its whole sample from one `random.Random(seed)`
124
+ stream in a single in-process pass, which also makes a *seeded* call
125
+ machine-independent (the old chunk boundaries were derived from
126
+ `cpu_count()`, so the result differed between hosts). The row the generator
127
+ emits is now `Sampling mode | single in-process random.Random stream` in
128
+ place of `CPU Cores Saturated`.
129
+
116
130
  #### Quantum sampling (estimated)
117
131
 
118
132
  | Metric | Value |
@@ -69,6 +69,28 @@ cds hypothesis "what causes the Hubble tension?" --domain cosmology
69
69
  cds modules
70
70
  ```
71
71
 
72
+ #### Exit codes
73
+
74
+ `cds` exits with one of four documented statuses. They are named constants in
75
+ `cds.cli._exit_codes`, re-exported from `cds.cli`, so a wrapper can compare
76
+ statuses instead of comparing against bare integers.
77
+
78
+ | Code | Name | Meaning |
79
+ |------|------|---------|
80
+ | `0` | `EXIT_OK` | The command completed and produced its output. Also returned by `--help`. |
81
+ | `1` | `EXIT_ERROR` | The command was understood but could not be carried out: malformed values, an out-of-domain parameter, or a missing local resource such as the dashboard script. |
82
+ | `2` | `EXIT_USAGE` | The command line was rejected by `argparse` — an unknown subcommand, a missing required argument, a bad `choices=` value, an unparseable number. (This is `argparse`'s own usage-error code.) |
83
+ | `3` | `EXIT_MISSING_DEPENDENCY` | The command needs an optional extra that is not installed: `[plot]`/matplotlib for `plot --file`, `streamlit` for `dashboard`. The remedy is an install, not a corrected invocation. |
84
+
85
+ ```python
86
+ from cds.cli import EXIT_ERROR, EXIT_MISSING_DEPENDENCY, describe, main
87
+
88
+ describe(1) # 'command was understood but could not be carried out'
89
+ main(["stats", "1,x,3"]) # 1 — bad values
90
+ main(["sample", "no-such-dist"]) # 2 — argparse rejected it
91
+ main(["dashboard"]) # 3 — streamlit absent
92
+ ```
93
+
72
94
  ### Python API
73
95
 
74
96
  ```python
@@ -135,6 +135,25 @@ public feature modules. This table summarises them and the
135
135
  | `cds.nlp` | Educational NLP from scratch (BPE, embeddings, attention, MiniGPT) |
136
136
  | `cds.cli` | The `cds` console script (pure-stdlib `argparse`) |
137
137
 
138
+ ## Import behaviour
139
+
140
+ Every module in the table is reachable as `cds.<name>`:
141
+
142
+ ```python
143
+ import cds
144
+
145
+ cds.pde # attribute access works
146
+ cds.interpolate # so does this
147
+ from cds.pde import solve_heat # and the direct import
148
+ ```
149
+
150
+ `cds.pde` and `cds.interpolate` are **lazily** imported by the package root
151
+ (PEP 562 module `__getattr__`). Accessing `cds.pde` imports the subpackage on
152
+ first touch and caches it, so `cds.pde` and `import cds.pde` yield the very
153
+ same module object while never putting a PDE solver on the import path of code
154
+ that does not use one. Everything else in the table is imported eagerly by
155
+ `cds/__init__.py`.
156
+
138
157
  ## Quick Navigation
139
158
 
140
159
  - [Getting Started](getting-started.md)
@@ -64,7 +64,7 @@ n= 10,000 π≈3.1372 err=-4.39e-03 σ=1.65e-02
64
64
  n=100,000 π≈3.1292 err=-1.24e-02 σ=5.22e-03
65
65
  ```
66
66
 
67
- **The lesson.** Halving the standard error takes a **4×** larger sample, slow convergence. But notice the *standard error* tracks the actual error, and crucially the same recipe works in 100 dimensions where grid rules would need $100^{N}$ points. Monte Carlo trades speed for **generality**. CDS also parallelizes the sampling across CPU cores ([`montecarlo/methods.py`](https://github.com/Furox-Art/scientific-computing-system/blob/main/src/cds/montecarlo/methods.py)).
67
+ **The lesson.** Halving the standard error takes a **4×** larger sample, slow convergence. But notice the *standard error* tracks the actual error, and crucially the same recipe works in 100 dimensions where grid rules would need $100^{N}$ points. Monte Carlo trades speed for **generality**. `estimate_pi` draws its whole sample from one `random.Random(seed)` stream in a single in-process pass ([`montecarlo/methods.py`](https://github.com/Furox-Art/scientific-computing-system/blob/main/src/cds/montecarlo/methods.py)), so a seeded call returns the same number on every machine and core count instead of a pool-schedule-dependent one.
68
68
 
69
69
  ---
70
70
 
@@ -278,6 +278,16 @@ test('the npm publish path is armed', () => {
278
278
  );
279
279
  });
280
280
 
281
+ test('automatic npm publishing is single-shot from release tags', () => {
282
+ const workflow = workflowBody('npm-publish.yml');
283
+ assert.ok(/tags:\s*\n\s*- "v\*"/.test(workflow), 'v* tags must trigger npm publishing');
284
+ assert.ok(!/branches:\s*\[main\]/.test(workflow), 'main branch pushes must not duplicate the tag release');
285
+ assert.ok(
286
+ /github\.event_name != 'workflow_dispatch' \|\| inputs\.use_token_fallback/.test(workflow),
287
+ 'automatic tag runs must select the verified token path',
288
+ );
289
+ });
290
+
281
291
  test('both publish modes exist and are selected by one input', () => {
282
292
  const workflow = workflowBody('npm-publish.yml');
283
293
 
@@ -296,19 +306,18 @@ test('both publish modes exist and are selected by one input', () => {
296
306
  'use_token_fallback must default to false so OIDC remains the default mode',
297
307
  );
298
308
 
299
- // Both modes must be present and mutually exclusive.
309
+ // Both modes must be present and mutually exclusive. Automatic tag releases
310
+ // use the verified token path; manual dispatches remain available for OIDC.
300
311
  const publishSteps = workflow.split('- name: ').filter((block) => /^Publish to npm/.test(block));
301
312
  assert.strictEqual(publishSteps.length, 2, 'there must be exactly two publish steps');
302
- // Exactly one step runs per mode. The token gate is matched with the `!`
303
- // prefix excluded explicitly: `/inputs\.use_token_fallback/` on its own also
304
- // matches the OIDC step's `!inputs.use_token_fallback`, which would let both
305
- // modes pass a loose assertion while being mutually exclusive in reality.
306
- const oidcStep = publishSteps.find((s) => /if:.*!inputs\.use_token_fallback/.test(s));
313
+ const oidcStep = publishSteps.find(
314
+ (s) => /github\.event_name == 'workflow_dispatch'/.test(s) && /!inputs\.use_token_fallback/.test(s),
315
+ );
307
316
  const tokenStep = publishSteps.find(
308
- (s) => /if:.*inputs\.use_token_fallback/.test(s) && !/!inputs\.use_token_fallback/.test(s),
317
+ (s) => /github\.event_name != 'workflow_dispatch'/.test(s) && /inputs\.use_token_fallback/.test(s),
309
318
  );
310
- assert.ok(oidcStep, 'the OIDC publish step must be gated on !inputs.use_token_fallback');
311
- assert.ok(tokenStep, 'the token publish step must be gated on inputs.use_token_fallback');
319
+ assert.ok(oidcStep, 'manual OIDC publish must remain available');
320
+ assert.ok(tokenStep, 'automatic tag publishing must use the token path');
312
321
  assert.notStrictEqual(oidcStep, tokenStep, 'the two modes must be distinct steps');
313
322
 
314
323
  // The token step must read the repository's existing NPM_TOKEN secret.
@@ -333,8 +342,12 @@ test('the token mode does not request provenance', () => {
333
342
  .split('- name: ')
334
343
  .filter((block) => /^Publish to npm/.test(block));
335
344
 
336
- const oidc = publishSteps.find((s) => /!inputs\.use_token_fallback/.test(s));
337
- const token = publishSteps.find((s) => /inputs\.use_token_fallback/.test(s) && !/!inputs/.test(s));
345
+ const oidc = publishSteps.find(
346
+ (s) => /github\.event_name == 'workflow_dispatch'/.test(s) && /!inputs\.use_token_fallback/.test(s),
347
+ );
348
+ const token = publishSteps.find(
349
+ (s) => /github\.event_name != 'workflow_dispatch'/.test(s) && /inputs\.use_token_fallback/.test(s),
350
+ );
338
351
  assert.ok(oidc, 'OIDC publish step not found');
339
352
  assert.ok(token, 'token publish step not found');
340
353
 
@@ -550,8 +563,10 @@ test('a missing credential exits before any publish step can run', () => {
550
563
  'the preflight must check OIDC availability for OIDC mode',
551
564
  );
552
565
  assert.ok(
553
- /if \[ "\$\{\{ inputs\.use_token_fallback \}\}" = "true" \]; then/.test(preflightBlock),
554
- 'the preflight must branch on the use_token_fallback input',
566
+ /github\.event_name/.test(preflightBlock) &&
567
+ /requested_token/.test(preflightBlock) &&
568
+ /inputs\.use_token_fallback/.test(preflightBlock),
569
+ 'the preflight must select token mode automatically for tag pushes and honor the manual input',
555
570
  );
556
571
 
557
572
  // Exactly two `exit 1`s: one per mode. Each failing branch must terminate
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scientific-computing-system",
3
- "version": "2.2.3",
3
+ "version": "2.2.5",
4
4
  "description": "Scientific Computing System launcher - a thin Node wrapper that forwards to the pure-Python `cds` CLI. This npm package ships NO Python code: it requires the Python distribution to be installed (`pip install scientific-computing-system`), otherwise `scs` exits non-zero with an actionable message.",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -2,7 +2,7 @@
2
2
  # Distribution name. Formerly published as "cognitive-discovery-system";
3
3
  # the import name stays `cds`. Keep the old PyPI project alive as an alias.
4
4
  name = "scientific-computing-system"
5
- version = "2.2.3"
5
+ version = "2.2.5"
6
6
  description = "A pure-Python computational science platform for numerical methods, modeling, validation, uncertainty, scientific workflows, dimensional analysis, and optional research-data backends. Zero runtime dependencies."
7
7
  readme = "README.md"
8
8
  license = "MIT"