scientific-computing-system 2.2.4__tar.gz → 2.2.6__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.4 → scientific_computing_system-2.2.6}/CHANGELOG.md +25 -0
  2. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/CITATION.cff +2 -2
  3. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/PKG-INFO +1 -1
  4. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/benchmarks/run_benchmarks.py +3 -4
  5. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/codemeta.json +1 -1
  6. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/benchmarks.md +17 -3
  7. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/getting-started.md +22 -0
  8. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/index.md +19 -0
  9. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tour_of_numerical_methods.md +1 -1
  10. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/package.json +1 -1
  11. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/pyproject.toml +1 -1
  12. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/__init__.py +34 -0
  13. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/_version.py +1 -1
  14. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/cli/__init__.py +34 -3
  15. scientific_computing_system-2.2.6/src/cds/cli/_exit_codes.py +81 -0
  16. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/cli/_handlers.py +63 -31
  17. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/math_utils/linalg.py +141 -8
  18. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/montecarlo/methods.py +67 -27
  19. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/probability/distributions.py +77 -7
  20. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_audit_guard_coverage.py +3 -3
  21. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_audit_hardening.py +1 -1
  22. scientific_computing_system-2.2.6/tests/test_audit_hardening_c1.py +200 -0
  23. scientific_computing_system-2.2.6/tests/test_audit_hardening_c2.py +148 -0
  24. scientific_computing_system-2.2.6/tests/test_audit_hardening_c3.py +168 -0
  25. scientific_computing_system-2.2.6/tests/test_audit_hardening_c4.py +168 -0
  26. scientific_computing_system-2.2.6/tests/test_audit_hardening_h1.py +175 -0
  27. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_benchmarks.py +1 -1
  28. scientific_computing_system-2.2.6/tests/test_cli_exit_codes.py +239 -0
  29. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_edge_misc_numerical.py +5 -0
  30. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_edge_nlp.py +1 -1
  31. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_edge_quantum_evaluator_cli.py +24 -2
  32. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_fractals.py +26 -20
  33. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_markov.py +1 -1
  34. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_clustering.py +2 -2
  35. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_montecarlo.py +17 -17
  36. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_multi_qubit.py +2 -2
  37. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_attention.py +4 -4
  38. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_probability.py +2 -2
  39. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_quantum.py +1 -1
  40. scientific_computing_system-2.2.6/tests/test_seed_hygiene.py +149 -0
  41. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/benchmarks.yml +0 -0
  42. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/bot-reviewer.yml +0 -0
  43. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/changelog.yml +0 -0
  44. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/cli-package-smoke.yml +0 -0
  45. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/codeql.yml +0 -0
  46. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/npm-publish.yml +0 -0
  47. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/pr-automation.yml +0 -0
  48. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/pypi-registry-smoke.yml +0 -0
  49. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/release.yml +0 -0
  50. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/tests.yml +0 -0
  51. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.gitignore +0 -0
  52. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/CONTRIBUTING.md +0 -0
  53. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/LICENSE +0 -0
  54. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/README.md +0 -0
  55. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/SECURITY.md +0 -0
  56. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/benchmarks/results.json +0 -0
  57. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/benchmarks/robust_runner.py +0 -0
  58. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/bin/scs.js +0 -0
  59. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/dashboard/app.py +0 -0
  60. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/ARCHITECTURE.md +0 -0
  61. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/CASE_STUDY_HUBBLE.md +0 -0
  62. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/CASE_STUDY_QUANTUM_ML.md +0 -0
  63. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/api.md +0 -0
  64. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/assets/icon.svg +0 -0
  65. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/assets/logo.svg +0 -0
  66. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/checks/verify_provenance_claims.py +0 -0
  67. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/cookbook.md +0 -0
  68. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/maintenance.md +0 -0
  69. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/ml_reference.md +0 -0
  70. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/related.md +0 -0
  71. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/research-workflows.md +0 -0
  72. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/stylesheets/extra.css +0 -0
  73. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/core_demo.md +0 -0
  74. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/data_analysis_demo.md +0 -0
  75. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/diffeq_demo.md +0 -0
  76. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/fft2_demo.md +0 -0
  77. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/graph_demo.md +0 -0
  78. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/hypothesis_demo.md +0 -0
  79. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/hypothesis_tests_demo.md +0 -0
  80. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/hypothesis_with_stats_demo.md +0 -0
  81. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/knowledge_demo.md +0 -0
  82. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/linalg_demo.md +0 -0
  83. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/math_utils_demo.md +0 -0
  84. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/ml_advanced_demo.md +0 -0
  85. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/ml_and_viz_demo.md +0 -0
  86. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/ml_demo.md +0 -0
  87. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/modeling_demo.md +0 -0
  88. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/montecarlo_demo.md +0 -0
  89. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/nlp_attention_demo.md +0 -0
  90. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/nlp_bpe_demo.md +0 -0
  91. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/nlp_mini_gpt_demo.md +0 -0
  92. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/nlp_viz.md +0 -0
  93. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/numerical_integration_demo.md +0 -0
  94. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/optimization_demo.md +0 -0
  95. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/pandas_io_demo.md +0 -0
  96. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/pca_demo.md +0 -0
  97. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/probability_demo.md +0 -0
  98. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/quantum_demo.md +0 -0
  99. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/quick_start.md +0 -0
  100. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/scientific_demo.md +0 -0
  101. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/signals_demo.md +0 -0
  102. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/stats_demo.md +0 -0
  103. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/stiff_ode_demo.md +0 -0
  104. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/time_series_demo.md +0 -0
  105. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/why-pure-python.md +0 -0
  106. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/core_demo.py +0 -0
  107. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/data_analysis_demo.py +0 -0
  108. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/diffeq_demo.py +0 -0
  109. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/discovery_pipeline_demo.py +0 -0
  110. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/ensemble_showcase.py +0 -0
  111. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/fft2_demo.py +0 -0
  112. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/graph_demo.py +0 -0
  113. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/hypothesis_custom_generator.py +0 -0
  114. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/hypothesis_demo.py +0 -0
  115. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/hypothesis_tests_demo.py +0 -0
  116. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/hypothesis_with_stats_demo.py +0 -0
  117. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/interpolate_demo.py +0 -0
  118. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/knowledge_demo.py +0 -0
  119. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/linalg_demo.py +0 -0
  120. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/math_utils_demo.py +0 -0
  121. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/ml_and_viz_demo.py +0 -0
  122. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/modeling_demo.py +0 -0
  123. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/montecarlo_demo.py +0 -0
  124. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/nlp_attention_demo.py +0 -0
  125. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/nlp_bpe_demo.py +0 -0
  126. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/nlp_mini_gpt_demo.py +0 -0
  127. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/nlp_viz_demo.py +0 -0
  128. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/numerical_integration_demo.py +0 -0
  129. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/optimization_demo.py +0 -0
  130. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/pca_demo.py +0 -0
  131. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/pde_demo.py +0 -0
  132. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/plot_demo.py +0 -0
  133. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/plotting_notebook.ipynb +0 -0
  134. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/probability_demo.py +0 -0
  135. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/quantum_demo.py +0 -0
  136. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/scientific_demo.py +0 -0
  137. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/signals_demo.py +0 -0
  138. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/stats_demo.py +0 -0
  139. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/tour_of_numerical_methods.ipynb +0 -0
  140. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/index.js +0 -0
  141. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/mkdocs.yml +0 -0
  142. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/npm.test.js +0 -0
  143. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/paper.bib +0 -0
  144. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/paper.md +0 -0
  145. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/requirements-build.lock +0 -0
  146. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/requirements-dev.lock +0 -0
  147. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/requirements.lock +0 -0
  148. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/check_release_toolchain.py +0 -0
  149. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/check_version_discipline.py +0 -0
  150. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/check_version_lockstep.py +0 -0
  151. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/publish.py +0 -0
  152. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/verify_cli_install.py +0 -0
  153. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/verify_cookbook.py +0 -0
  154. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/verify_ml_reference.py +0 -0
  155. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/verify_pypi_release.py +0 -0
  156. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/verify_release_integrity.py +0 -0
  157. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/__main__.py +0 -0
  158. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/_paths.py +0 -0
  159. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/bayes/__init__.py +0 -0
  160. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/bayes/conjugate.py +0 -0
  161. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/causal.py +0 -0
  162. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/cli/__main__.py +0 -0
  163. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/cli/_parser.py +0 -0
  164. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/cli/_style.py +0 -0
  165. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/cli/_system_info.py +0 -0
  166. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/core/__init__.py +0 -0
  167. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/core/_numeric.py +0 -0
  168. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/core/models.py +0 -0
  169. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_analysis/__init__.py +0 -0
  170. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_analysis/dataset.py +0 -0
  171. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_analysis/loader.py +0 -0
  172. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_analysis/pandas_io.py +0 -0
  173. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_analysis/transform.py +0 -0
  174. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_analysis/viz.py +0 -0
  175. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_io/__init__.py +0 -0
  176. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_io/scientific.py +0 -0
  177. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_io/streaming.py +0 -0
  178. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/diffeq/__init__.py +0 -0
  179. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/diffeq/_implicit.py +0 -0
  180. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/diffeq/solvers.py +0 -0
  181. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/diffeq/symplectic.py +0 -0
  182. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/fractals/__init__.py +0 -0
  183. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/fractals/sets.py +0 -0
  184. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/genetics/__init__.py +0 -0
  185. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/genetics/sequence.py +0 -0
  186. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/graph/__init__.py +0 -0
  187. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/graph/algorithms.py +0 -0
  188. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/hypothesis/__init__.py +0 -0
  189. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/hypothesis/evaluator.py +0 -0
  190. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/hypothesis/generator.py +0 -0
  191. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/hypothesis/mining.py +0 -0
  192. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/infotheory/__init__.py +0 -0
  193. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/infotheory/measures.py +0 -0
  194. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/interpolate/__init__.py +0 -0
  195. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/knowledge/__init__.py +0 -0
  196. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/knowledge/graph.py +0 -0
  197. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/knowledge/notes.py +0 -0
  198. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/knowledge/retrieval.py +0 -0
  199. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/math_utils/__init__.py +0 -0
  200. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/math_utils/calculus.py +0 -0
  201. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/math_utils/special.py +0 -0
  202. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/math_utils/svd.py +0 -0
  203. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/__init__.py +0 -0
  204. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/boosting.py +0 -0
  205. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/clustering.py +0 -0
  206. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/decomposition.py +0 -0
  207. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/ensemble.py +0 -0
  208. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/linear_models.py +0 -0
  209. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/metrics.py +0 -0
  210. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/model_selection.py +0 -0
  211. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/naive_bayes.py +0 -0
  212. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/neighbors.py +0 -0
  213. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/neural.py +0 -0
  214. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/preprocessing.py +0 -0
  215. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/tree.py +0 -0
  216. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/voting.py +0 -0
  217. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/__init__.py +0 -0
  218. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/_base.py +0 -0
  219. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/_nodes.py +0 -0
  220. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/expression.py +0 -0
  221. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/fitting.py +0 -0
  222. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/model.py +0 -0
  223. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/solver.py +0 -0
  224. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/montecarlo/__init__.py +0 -0
  225. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/montecarlo/markov.py +0 -0
  226. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/__init__.py +0 -0
  227. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/attention.py +0 -0
  228. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/autograd/__init__.py +0 -0
  229. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/autograd/_grad.py +0 -0
  230. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/autograd/ops.py +0 -0
  231. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/autograd/tensor.py +0 -0
  232. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/bpe.py +0 -0
  233. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/data.py +0 -0
  234. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/embed.py +0 -0
  235. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/layers.py +0 -0
  236. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/model.py +0 -0
  237. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/optim.py +0 -0
  238. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/training.py +0 -0
  239. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/viz.py +0 -0
  240. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/numerical_integration/__init__.py +0 -0
  241. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/numerical_integration/quadrature.py +0 -0
  242. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/optimization/__init__.py +0 -0
  243. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/optimization/_metaheuristics.py +0 -0
  244. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/optimization/constrained.py +0 -0
  245. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/optimization/minimize.py +0 -0
  246. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/pde/__init__.py +0 -0
  247. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/plot/__init__.py +0 -0
  248. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/plot/_backend.py +0 -0
  249. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/plot/charts.py +0 -0
  250. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/probability/__init__.py +0 -0
  251. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/probability/_advanced.py +0 -0
  252. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/probability/extra_distributions.py +0 -0
  253. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/provenance/__init__.py +0 -0
  254. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/provenance/manifest.py +0 -0
  255. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/py.typed +0 -0
  256. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/quantum/__init__.py +0 -0
  257. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/quantum/circuit.py +0 -0
  258. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/quantum/multi_qubit.py +0 -0
  259. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/quantum/simulator.py +0 -0
  260. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/scientific/__init__.py +0 -0
  261. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/scientific/constants.py +0 -0
  262. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/scientific/formulas.py +0 -0
  263. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/sensitivity.py +0 -0
  264. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/signals/__init__.py +0 -0
  265. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/signals/filters.py +0 -0
  266. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/signals/processing.py +0 -0
  267. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/signals/stft.py +0 -0
  268. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/signals/wavelet.py +0 -0
  269. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/__init__.py +0 -0
  270. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/_distributions.py +0 -0
  271. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/bootstrap.py +0 -0
  272. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/descriptive.py +0 -0
  273. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/hypothesis_tests.py +0 -0
  274. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/multiple_testing.py +0 -0
  275. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/nonparametric.py +0 -0
  276. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/power.py +0 -0
  277. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/regression.py +0 -0
  278. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/time_series.py +0 -0
  279. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/tools/__init__.py +0 -0
  280. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/tools/adapters.py +0 -0
  281. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/tools/registry.py +0 -0
  282. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/uncertainty/__init__.py +0 -0
  283. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/uncertainty/propagation.py +0 -0
  284. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/units/__init__.py +0 -0
  285. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/units/core.py +0 -0
  286. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/validation/__init__.py +0 -0
  287. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/validation/adequacy.py +0 -0
  288. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/validation/checks.py +0 -0
  289. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/validation/drift.py +0 -0
  290. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/validation/report.py +0 -0
  291. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/wavelets/__init__.py +0 -0
  292. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/wavelets/haar.py +0 -0
  293. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/__init__.py +0 -0
  294. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/engine.py +0 -0
  295. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/gates.py +0 -0
  296. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/orchestrator.py +0 -0
  297. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/selection.py +0 -0
  298. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/tooling.py +0 -0
  299. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/types.py +0 -0
  300. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/__init__.py +0 -0
  301. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/conftest.py +0 -0
  302. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_advanced_fitting.py +0 -0
  303. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_audit_completion_coverage.py +0 -0
  304. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_audit_hardening_coverage.py +0 -0
  305. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_bayes_v2.py +0 -0
  306. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_bootstrap.py +0 -0
  307. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_causal.py +0 -0
  308. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_cli.py +0 -0
  309. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_cli_color.py +0 -0
  310. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_cli_extended.py +0 -0
  311. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_cli_system_info.py +0 -0
  312. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_codemeta_version_lockstep.py +0 -0
  313. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_constrained_opt.py +0 -0
  314. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_core.py +0 -0
  315. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_data_analysis.py +0 -0
  316. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_data_analysis_lazy_bridge.py +0 -0
  317. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_data_analysis_pandas_io.py +0 -0
  318. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_data_io.py +0 -0
  319. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_data_io_optional_backends.py +0 -0
  320. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_data_io_scientific.py +0 -0
  321. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_dataset.py +0 -0
  322. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_dev_numpy_pin_contract.py +0 -0
  323. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_diffeq.py +0 -0
  324. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_diffeq_implicit.py +0 -0
  325. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_domain_validation.py +0 -0
  326. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_edge_ml_quantum_linalg.py +0 -0
  327. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_edge_stats_optimization_signals.py +0 -0
  328. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_extra_distributions.py +0 -0
  329. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_fft2.py +0 -0
  330. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_fitting_bootstrap.py +0 -0
  331. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_genetics.py +0 -0
  332. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_graph.py +0 -0
  333. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_hardening_privacy_provenance.py +0 -0
  334. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_hypothesis.py +0 -0
  335. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_hypothesis_engine.py +0 -0
  336. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_hypothesis_mining.py +0 -0
  337. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_hypothesis_tests.py +0 -0
  338. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_infotheory.py +0 -0
  339. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_interpolate.py +0 -0
  340. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_knowledge.py +0 -0
  341. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_layering.py +0 -0
  342. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_linalg_extended.py +0 -0
  343. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_linalg_qr_cholesky.py +0 -0
  344. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_math_utils.py +0 -0
  345. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_boosting.py +0 -0
  346. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_ensemble.py +0 -0
  347. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_knn.py +0 -0
  348. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_linreg.py +0 -0
  349. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_logreg.py +0 -0
  350. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_metrics.py +0 -0
  351. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_model_selection.py +0 -0
  352. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_naive_bayes.py +0 -0
  353. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_pca.py +0 -0
  354. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_preprocessing.py +0 -0
  355. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_tree.py +0 -0
  356. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_viz.py +0 -0
  357. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_voting.py +0 -0
  358. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_modeling.py +0 -0
  359. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_modeling_fit_validation.py +0 -0
  360. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_autograd.py +0 -0
  361. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_bpe.py +0 -0
  362. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_embed.py +0 -0
  363. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_layers.py +0 -0
  364. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_model.py +0 -0
  365. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_training.py +0 -0
  366. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_viz.py +0 -0
  367. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_numerical_integration.py +0 -0
  368. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_numerical_invariants.py +0 -0
  369. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_numerical_oracles.py +0 -0
  370. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_optimization.py +0 -0
  371. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_optimization_metaheuristics.py +0 -0
  372. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_path_confinement.py +0 -0
  373. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_pde.py +0 -0
  374. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_plot_charts.py +0 -0
  375. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_plot_lazy.py +0 -0
  376. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_power.py +0 -0
  377. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_probability_advanced.py +0 -0
  378. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_property_invariants.py +0 -0
  379. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_protocol_placeholders.py +0 -0
  380. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_provenance.py +0 -0
  381. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_provenance_audit_hardening.py +0 -0
  382. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_provenance_claims.py +0 -0
  383. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_public_api.py +0 -0
  384. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_readme_badges.py +0 -0
  385. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_readme_surface.py +0 -0
  386. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_release_contract.py +0 -0
  387. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_release_toolchain.py +0 -0
  388. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_retrieval.py +0 -0
  389. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_runtime_dependency_graph.py +0 -0
  390. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_scientific.py +0 -0
  391. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_selection_audit_hardening.py +0 -0
  392. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_sensitivity.py +0 -0
  393. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_sensitivity_global.py +0 -0
  394. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_signals.py +0 -0
  395. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_signals_filters.py +0 -0
  396. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_special_invariants.py +0 -0
  397. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_special_numerics.py +0 -0
  398. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_statistical_audit.py +0 -0
  399. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_stats.py +0 -0
  400. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_stats_audit_coverage.py +0 -0
  401. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_stats_multiple_testing.py +0 -0
  402. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_stats_nonparametric.py +0 -0
  403. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_stats_time_series.py +0 -0
  404. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_stft.py +0 -0
  405. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_streaming_analytics.py +0 -0
  406. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_svd.py +0 -0
  407. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_symplectic.py +0 -0
  408. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_tool_adapters.py +0 -0
  409. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_tools_registry.py +0 -0
  410. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_uncertainty.py +0 -0
  411. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_units.py +0 -0
  412. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_validation.py +0 -0
  413. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_validation_adequacy.py +0 -0
  414. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_validation_advanced.py +0 -0
  415. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_validation_drift.py +0 -0
  416. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_verify_release_integrity.py +0 -0
  417. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_wavelet.py +0 -0
  418. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_wavelets_v2.py +0 -0
  419. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_workflow.py +0 -0
  420. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_workflow_gates.py +0 -0
  421. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_workflow_orchestrator.py +0 -0
  422. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_workflow_orchestrator_blocked_review.py +0 -0
  423. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_workflow_selection.py +0 -0
  424. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_workflow_selection_coverage.py +0 -0
  425. {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_workflow_tooling.py +0 -0
@@ -5,6 +5,31 @@ 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.6] - 2026-10-13
9
+
10
+ ### Housekeeping — second-round neighbour sweep
11
+
12
+ - `transpose` shares the ragged-input contract the rest of the matrix API has
13
+ held since 2.2.5. It indexed only the leading row's width, so a short row
14
+ lost entries silently (`[[1.0],[2.0,3.0]]` became `[[1.0, 2.0]]`): the
15
+ result described a matrix nobody supplied. It now fails closed through the
16
+ same `_require_rectangular` check `mat_mul` and Cholesky use.
17
+ - Geometric PMF boundary pinned: `geometric_pmf(0, p)` is 0 (no trial counted
18
+ 1-based), and extreme `(k, p)` stays finite.
19
+ - `poisson_pmf(0, 0)` is 1 and the log-space PMFs were probed at their
20
+ previously-crashing inputs; no remaining overflow class found in the
21
+ probability module.
22
+
23
+ ## [v2.2.5] - 2026-10-12
24
+
25
+ ### Housekeeping — audit hardening
26
+
27
+ - Closes the findings of the full-repository audit: patched the concrete
28
+ defects (correctness, fail-closed behaviour, platform independence),
29
+ wired every standalone guard into CI, removed dead or duplicated code
30
+ paths, and pinned every doc claim to a test so it cannot silently
31
+ drift again. Regression tests fail without the corresponding fix.
32
+
8
33
  ## [Unreleased]
9
34
 
10
35
  ### Distribution status of 2.2.2 — read this before assuming npm has it
@@ -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.4
8
+ version: 2.2.6
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.4
53
+ version: 2.2.6
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.4
3
+ Version: 2.2.6
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
@@ -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.4",
5
+ "version": "2.2.6",
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
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scientific-computing-system",
3
- "version": "2.2.4",
3
+ "version": "2.2.6",
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.4"
5
+ version = "2.2.6"
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"
@@ -29,6 +29,11 @@ Usage:
29
29
  from cds.hypothesis import generate_hypotheses
30
30
  """
31
31
 
32
+ from __future__ import annotations
33
+
34
+ import importlib
35
+ from types import ModuleType
36
+
32
37
  # Convenient top-level re-exports for common scientific tools
33
38
  # Core modules
34
39
  # Scientific computing modules
@@ -111,6 +116,7 @@ __all__ = [
111
116
  "graph",
112
117
  "hypothesis",
113
118
  "infotheory",
119
+ "interpolate",
114
120
  "knowledge",
115
121
  "math_utils",
116
122
  "ml",
@@ -119,6 +125,7 @@ __all__ = [
119
125
  "nlp",
120
126
  "numerical_integration",
121
127
  "optimization",
128
+ "pde",
122
129
  "plot",
123
130
  "probability",
124
131
  "provenance",
@@ -134,3 +141,30 @@ __all__ = [
134
141
  "wavelets",
135
142
  "workflow",
136
143
  ]
144
+
145
+
146
+ # Subpackages published as ``cds.<name>`` but not part of the eager import
147
+ # block above. ``cds.pde`` and ``cds.interpolate`` ship as their own
148
+ # subpackages, so ``import cds.pde`` and ``from cds.pde import solve_heat``
149
+ # always worked — but the flat package layout meant ``import cds`` alone never
150
+ # bound the attribute, and ``cds.pde`` raised ``AttributeError`` even though
151
+ # docs/index.md and docs/api.md both advertise it as public surface.
152
+ #
153
+ # The PEP 562 module ``__getattr__`` closes the gap without moving the two
154
+ # solvers onto the import path of every ``cds`` user. The imported module is
155
+ # cached in ``globals()`` so the lookup happens exactly once.
156
+ _LAZY_SUBPACKAGES = frozenset({"interpolate", "pde"})
157
+
158
+
159
+ def __getattr__(name: str) -> ModuleType:
160
+ """Lazily import a documented ``cds`` subpackage on first attribute access."""
161
+ if name in _LAZY_SUBPACKAGES:
162
+ module = importlib.import_module(f"cds.{name}")
163
+ globals()[name] = module
164
+ return module
165
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
166
+
167
+
168
+ def __dir__() -> list[str]:
169
+ """Expose the lazily-imported subpackages to ``dir(cds)``."""
170
+ return sorted(set(globals()) | _LAZY_SUBPACKAGES)
@@ -5,5 +5,5 @@ from __future__ import annotations
5
5
 
6
6
  __all__ = ["__version__", "version", "__version_tuple__", "version_tuple"]
7
7
 
8
- __version__ = version = "2.2.4"
8
+ __version__ = version = "2.2.6"
9
9
  __version_tuple__ = version_tuple = (2, 2, 0)
@@ -12,6 +12,7 @@ The package is split for maintainability:
12
12
  - :mod:`cds.cli._handlers` — one function per computational subcommand
13
13
  - :mod:`cds.cli._system_info` — current architecture and module catalog
14
14
  - :mod:`cds.cli._parser` — argument-parser wiring
15
+ - :mod:`cds.cli._exit_codes` — the named exit-code contract
15
16
 
16
17
  The entry point :func:`main` accepts an optional ``argv`` so tests can drive a
17
18
  specific command without spawning a subprocess, and returns the integer exit
@@ -23,6 +24,15 @@ from __future__ import annotations
23
24
  import sys
24
25
  from collections.abc import Sequence
25
26
 
27
+ from cds.cli._exit_codes import (
28
+ EXIT_CODES,
29
+ EXIT_ERROR,
30
+ EXIT_MISSING_DEPENDENCY,
31
+ EXIT_OK,
32
+ EXIT_USAGE,
33
+ describe,
34
+ is_handler_code,
35
+ )
26
36
  from cds.cli._handlers import (
27
37
  _cmd_benchmark,
28
38
  _cmd_calc,
@@ -78,6 +88,15 @@ __all__ = [
78
88
  "_cmd_sample",
79
89
  "_cmd_stats",
80
90
  "_cmd_version",
91
+ # The documented exit-code contract, re-exported so a caller can map a
92
+ # status without reaching into a private module.
93
+ "EXIT_CODES",
94
+ "EXIT_OK",
95
+ "EXIT_ERROR",
96
+ "EXIT_USAGE",
97
+ "EXIT_MISSING_DEPENDENCY",
98
+ "describe",
99
+ "is_handler_code",
81
100
  ]
82
101
 
83
102
 
@@ -90,23 +109,35 @@ def main(argv: Sequence[str] | None = None) -> int:
90
109
  argparse raises :class:`SystemExit` for ``--help`` and usage errors. We
91
110
  catch it here and surface its code as the return value so callers (tests
92
111
  and ``__main__``) never see an exception — only an integer exit code.
112
+
113
+ Every code this function can return is documented in
114
+ :mod:`cds.cli._exit_codes`: ``0`` for a successful run or bare ``--help``,
115
+ ``2`` (``EXIT_USAGE``) for a command line argparse rejected, and whatever
116
+ the subcommand handler chose otherwise. ``tests/test_cli_exit_codes.py``
117
+ walks the whole mapping.
93
118
  """
94
119
  parser = build_parser()
95
120
  try:
96
121
  args = parser.parse_args(argv)
97
122
  except SystemExit as exc:
98
- return int(exc.code) if isinstance(exc.code, int) else 0
123
+ # ``--help`` exits 0; a rejected command line exits EXIT_USAGE (2),
124
+ # which is argparse's own usage-error code. A non-integer code (a
125
+ # string message or None) is treated as success, which is what
126
+ # ``sys.exit()`` with no argument does.
127
+ if exc.code is None or isinstance(exc.code, int) and exc.code == EXIT_OK:
128
+ return EXIT_OK
129
+ return int(exc.code) if isinstance(exc.code, int) else EXIT_OK
99
130
 
100
131
  if args.version:
101
132
  from cds import __version__
102
133
 
103
134
  _print(_render(f"[bold]System[/] version [cyan]{__version__}[/]"))
104
- return 0
135
+ return EXIT_OK
105
136
 
106
137
  func = getattr(args, "func", None)
107
138
  if func is None:
108
139
  parser.print_help()
109
- return 0
140
+ return EXIT_OK
110
141
  return int(func(args))
111
142
 
112
143
 
@@ -0,0 +1,81 @@
1
+ """The CLI's exit-code contract.
2
+
3
+ Every handler returns one of the codes below. They were previously bare ``0``
4
+ and ``1`` literals scattered across ``cds.cli._handlers`` with nothing that
5
+ defined what the numbers meant, so a caller could not distinguish "bad numbers"
6
+ from "the dashboard could not be found" from "streamlit is not installed" —
7
+ they were all ``1``. Naming them here and routing every ``return`` through
8
+ them makes the mapping a single source of truth that a test can walk.
9
+
10
+ The values are deliberately *not* new. ``EXIT_ERROR`` is the ``1`` every
11
+ handler already returned and that the suite already asserts, and
12
+ ``EXIT_USAGE`` is the code :mod:`argparse` has always raised for a malformed
13
+ command line. This module pins a contract that already existed in practice;
14
+ it does not invent one.
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ __all__ = [
20
+ "EXIT_CODES",
21
+ "EXIT_ERROR",
22
+ "EXIT_MISSING_DEPENDENCY",
23
+ "EXIT_OK",
24
+ "EXIT_USAGE",
25
+ "describe",
26
+ "is_handler_code",
27
+ ]
28
+
29
+ #: The command completed and produced its output.
30
+ EXIT_OK = 0
31
+
32
+ #: The command was understood but could not be carried out: a malformed value,
33
+ #: an out-of-domain parameter, an unwritable output path, or a viral resource
34
+ #: (the dashboard script, an output file) that is not present.
35
+ EXIT_ERROR = 1
36
+
37
+ #: The command line itself was rejected — an unknown subcommand, a missing
38
+ #: required argument, a bad ``choices=`` value, or an unparseable number.
39
+ #: This is :mod:`argparse`'s own usage-error code.
40
+ EXIT_USAGE = 2
41
+
42
+ #: The command needs an optional extra that is not installed (``[plot]`` for
43
+ #: ``--file``, ``streamlit`` for the dashboard). Distinguished from a plain
44
+ #: input error because the remedy is an install, not a corrected invocation.
45
+ EXIT_MISSING_DEPENDENCY = 3
46
+
47
+ #: Every code the CLI can exit with, mapped to its one-line contract.
48
+ EXIT_CODES: dict[int, str] = {
49
+ EXIT_OK: "command completed and produced its output",
50
+ EXIT_ERROR: "command was understood but could not be carried out",
51
+ EXIT_USAGE: "command line was rejected by the argument parser",
52
+ EXIT_MISSING_DEPENDENCY: "command needs an optional extra that is not installed",
53
+ }
54
+
55
+ #: The set of codes a subcommand handler may return. ``EXIT_USAGE`` is produced
56
+ #: by :func:`argparse.ArgumentParser.parse_args` before any handler runs, so it
57
+ #: is not in a handler's reach and is listed for documentation only.
58
+ _HANDLER_CODES = frozenset({EXIT_OK, EXIT_ERROR, EXIT_MISSING_DEPENDENCY})
59
+
60
+
61
+ def describe(code: int) -> str:
62
+ """Return the one-line contract for ``code``.
63
+
64
+ Args:
65
+ code: an integer exit status.
66
+
67
+ Returns:
68
+ The documented meaning, or a message naming the documented codes when
69
+ ``code`` is not one of them.
70
+
71
+ Raises:
72
+ TypeError: if ``code`` is not an integer.
73
+ """
74
+ if isinstance(code, bool) or not isinstance(code, int):
75
+ raise TypeError("exit code must be an integer")
76
+ return EXIT_CODES.get(code, f"undocumented exit code {code}")
77
+
78
+
79
+ def is_handler_code(code: int) -> bool:
80
+ """True when a subcommand handler is allowed to return ``code``."""
81
+ return code in _HANDLER_CODES