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.
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/CHANGELOG.md +25 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/CITATION.cff +2 -2
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/PKG-INFO +1 -1
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/benchmarks/run_benchmarks.py +3 -4
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/codemeta.json +1 -1
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/benchmarks.md +17 -3
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/getting-started.md +22 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/index.md +19 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tour_of_numerical_methods.md +1 -1
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/package.json +1 -1
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/pyproject.toml +1 -1
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/__init__.py +34 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/_version.py +1 -1
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/cli/__init__.py +34 -3
- scientific_computing_system-2.2.6/src/cds/cli/_exit_codes.py +81 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/cli/_handlers.py +63 -31
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/math_utils/linalg.py +141 -8
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/montecarlo/methods.py +67 -27
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/probability/distributions.py +77 -7
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_audit_guard_coverage.py +3 -3
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_audit_hardening.py +1 -1
- scientific_computing_system-2.2.6/tests/test_audit_hardening_c1.py +200 -0
- scientific_computing_system-2.2.6/tests/test_audit_hardening_c2.py +148 -0
- scientific_computing_system-2.2.6/tests/test_audit_hardening_c3.py +168 -0
- scientific_computing_system-2.2.6/tests/test_audit_hardening_c4.py +168 -0
- scientific_computing_system-2.2.6/tests/test_audit_hardening_h1.py +175 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_benchmarks.py +1 -1
- scientific_computing_system-2.2.6/tests/test_cli_exit_codes.py +239 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_edge_misc_numerical.py +5 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_edge_nlp.py +1 -1
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_edge_quantum_evaluator_cli.py +24 -2
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_fractals.py +26 -20
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_markov.py +1 -1
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_clustering.py +2 -2
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_montecarlo.py +17 -17
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_multi_qubit.py +2 -2
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_attention.py +4 -4
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_probability.py +2 -2
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_quantum.py +1 -1
- scientific_computing_system-2.2.6/tests/test_seed_hygiene.py +149 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/benchmarks.yml +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/bot-reviewer.yml +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/changelog.yml +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/cli-package-smoke.yml +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/codeql.yml +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/npm-publish.yml +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/pr-automation.yml +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/pypi-registry-smoke.yml +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/release.yml +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.github/workflows/tests.yml +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/.gitignore +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/CONTRIBUTING.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/LICENSE +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/README.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/SECURITY.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/benchmarks/results.json +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/benchmarks/robust_runner.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/bin/scs.js +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/dashboard/app.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/ARCHITECTURE.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/CASE_STUDY_HUBBLE.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/CASE_STUDY_QUANTUM_ML.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/api.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/assets/icon.svg +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/assets/logo.svg +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/checks/verify_provenance_claims.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/cookbook.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/maintenance.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/ml_reference.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/related.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/research-workflows.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/stylesheets/extra.css +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/core_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/data_analysis_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/diffeq_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/fft2_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/graph_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/hypothesis_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/hypothesis_tests_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/hypothesis_with_stats_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/knowledge_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/linalg_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/math_utils_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/ml_advanced_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/ml_and_viz_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/ml_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/modeling_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/montecarlo_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/nlp_attention_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/nlp_bpe_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/nlp_mini_gpt_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/nlp_viz.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/numerical_integration_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/optimization_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/pandas_io_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/pca_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/probability_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/quantum_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/quick_start.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/scientific_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/signals_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/stats_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/stiff_ode_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/tutorials/time_series_demo.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/why-pure-python.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/core_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/data_analysis_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/diffeq_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/discovery_pipeline_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/ensemble_showcase.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/fft2_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/graph_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/hypothesis_custom_generator.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/hypothesis_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/hypothesis_tests_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/hypothesis_with_stats_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/interpolate_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/knowledge_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/linalg_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/math_utils_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/ml_and_viz_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/modeling_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/montecarlo_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/nlp_attention_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/nlp_bpe_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/nlp_mini_gpt_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/nlp_viz_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/numerical_integration_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/optimization_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/pca_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/pde_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/plot_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/plotting_notebook.ipynb +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/probability_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/quantum_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/scientific_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/signals_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/stats_demo.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/examples/tour_of_numerical_methods.ipynb +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/index.js +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/mkdocs.yml +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/npm.test.js +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/paper.bib +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/paper.md +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/requirements-build.lock +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/requirements-dev.lock +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/requirements.lock +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/check_release_toolchain.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/check_version_discipline.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/check_version_lockstep.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/publish.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/verify_cli_install.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/verify_cookbook.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/verify_ml_reference.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/verify_pypi_release.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/scripts/verify_release_integrity.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/__main__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/_paths.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/bayes/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/bayes/conjugate.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/causal.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/cli/__main__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/cli/_parser.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/cli/_style.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/cli/_system_info.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/core/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/core/_numeric.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/core/models.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_analysis/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_analysis/dataset.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_analysis/loader.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_analysis/pandas_io.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_analysis/transform.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_analysis/viz.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_io/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_io/scientific.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/data_io/streaming.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/diffeq/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/diffeq/_implicit.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/diffeq/solvers.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/diffeq/symplectic.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/fractals/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/fractals/sets.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/genetics/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/genetics/sequence.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/graph/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/graph/algorithms.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/hypothesis/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/hypothesis/evaluator.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/hypothesis/generator.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/hypothesis/mining.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/infotheory/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/infotheory/measures.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/interpolate/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/knowledge/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/knowledge/graph.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/knowledge/notes.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/knowledge/retrieval.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/math_utils/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/math_utils/calculus.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/math_utils/special.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/math_utils/svd.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/boosting.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/clustering.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/decomposition.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/ensemble.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/linear_models.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/metrics.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/model_selection.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/naive_bayes.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/neighbors.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/neural.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/preprocessing.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/tree.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/ml/voting.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/_base.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/_nodes.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/expression.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/fitting.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/model.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/modeling/solver.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/montecarlo/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/montecarlo/markov.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/attention.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/autograd/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/autograd/_grad.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/autograd/ops.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/autograd/tensor.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/bpe.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/data.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/embed.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/layers.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/model.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/optim.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/training.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/nlp/viz.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/numerical_integration/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/numerical_integration/quadrature.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/optimization/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/optimization/_metaheuristics.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/optimization/constrained.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/optimization/minimize.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/pde/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/plot/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/plot/_backend.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/plot/charts.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/probability/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/probability/_advanced.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/probability/extra_distributions.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/provenance/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/provenance/manifest.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/py.typed +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/quantum/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/quantum/circuit.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/quantum/multi_qubit.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/quantum/simulator.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/scientific/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/scientific/constants.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/scientific/formulas.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/sensitivity.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/signals/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/signals/filters.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/signals/processing.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/signals/stft.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/signals/wavelet.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/_distributions.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/bootstrap.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/descriptive.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/hypothesis_tests.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/multiple_testing.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/nonparametric.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/power.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/regression.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/stats/time_series.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/tools/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/tools/adapters.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/tools/registry.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/uncertainty/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/uncertainty/propagation.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/units/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/units/core.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/validation/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/validation/adequacy.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/validation/checks.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/validation/drift.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/validation/report.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/wavelets/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/wavelets/haar.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/engine.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/gates.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/orchestrator.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/selection.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/tooling.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/workflow/types.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/__init__.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/conftest.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_advanced_fitting.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_audit_completion_coverage.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_audit_hardening_coverage.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_bayes_v2.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_bootstrap.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_causal.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_cli.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_cli_color.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_cli_extended.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_cli_system_info.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_codemeta_version_lockstep.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_constrained_opt.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_core.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_data_analysis.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_data_analysis_lazy_bridge.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_data_analysis_pandas_io.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_data_io.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_data_io_optional_backends.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_data_io_scientific.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_dataset.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_dev_numpy_pin_contract.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_diffeq.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_diffeq_implicit.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_domain_validation.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_edge_ml_quantum_linalg.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_edge_stats_optimization_signals.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_extra_distributions.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_fft2.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_fitting_bootstrap.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_genetics.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_graph.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_hardening_privacy_provenance.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_hypothesis.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_hypothesis_engine.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_hypothesis_mining.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_hypothesis_tests.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_infotheory.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_interpolate.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_knowledge.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_layering.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_linalg_extended.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_linalg_qr_cholesky.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_math_utils.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_boosting.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_ensemble.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_knn.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_linreg.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_logreg.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_metrics.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_model_selection.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_naive_bayes.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_pca.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_preprocessing.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_tree.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_viz.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_ml_voting.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_modeling.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_modeling_fit_validation.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_autograd.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_bpe.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_embed.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_layers.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_model.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_training.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_nlp_viz.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_numerical_integration.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_numerical_invariants.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_numerical_oracles.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_optimization.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_optimization_metaheuristics.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_path_confinement.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_pde.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_plot_charts.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_plot_lazy.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_power.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_probability_advanced.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_property_invariants.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_protocol_placeholders.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_provenance.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_provenance_audit_hardening.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_provenance_claims.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_public_api.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_readme_badges.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_readme_surface.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_release_contract.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_release_toolchain.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_retrieval.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_runtime_dependency_graph.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_scientific.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_selection_audit_hardening.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_sensitivity.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_sensitivity_global.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_signals.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_signals_filters.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_special_invariants.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_special_numerics.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_statistical_audit.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_stats.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_stats_audit_coverage.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_stats_multiple_testing.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_stats_nonparametric.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_stats_time_series.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_stft.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_streaming_analytics.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_svd.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_symplectic.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_tool_adapters.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_tools_registry.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_uncertainty.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_units.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_validation.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_validation_adequacy.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_validation_advanced.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_validation_drift.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_verify_release_integrity.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_wavelet.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_wavelets_v2.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_workflow.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_workflow_gates.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_workflow_orchestrator.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_workflow_orchestrator_blocked_review.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_workflow_selection.py +0 -0
- {scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/tests/test_workflow_selection_coverage.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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
|
{scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/benchmarks/run_benchmarks.py
RENAMED
|
@@ -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
|
-
|
|
201
|
+
elapsed = time.perf_counter() - start
|
|
203
202
|
|
|
204
203
|
return OrderedDict(
|
|
205
204
|
[
|
|
206
|
-
("
|
|
207
|
-
("
|
|
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.
|
|
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
|
-
|
|
|
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 |
|
{scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/docs/getting-started.md
RENAMED
|
@@ -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**.
|
|
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.
|
|
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.
|
|
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)
|
{scientific_computing_system-2.2.4 → scientific_computing_system-2.2.6}/src/cds/cli/__init__.py
RENAMED
|
@@ -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
|
-
|
|
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
|
|
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
|
|
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
|