scientific-computing-system 2.2.3__tar.gz → 2.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/.github/workflows/changelog.yml +1 -1
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/.github/workflows/codeql.yml +3 -3
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/.github/workflows/npm-publish.yml +20 -22
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/.github/workflows/tests.yml +1 -1
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/CHANGELOG.md +8 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/CITATION.cff +2 -2
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/PKG-INFO +12 -9
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/README.md +11 -8
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/SECURITY.md +41 -33
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/codemeta.json +1 -1
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/npm.test.js +28 -13
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/package.json +1 -1
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/pyproject.toml +1 -1
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/_version.py +1 -1
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_provenance_claims.py +12 -8
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/.github/workflows/benchmarks.yml +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/.github/workflows/bot-reviewer.yml +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/.github/workflows/cli-package-smoke.yml +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/.github/workflows/pr-automation.yml +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/.github/workflows/pypi-registry-smoke.yml +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/.github/workflows/release.yml +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/.gitignore +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/CONTRIBUTING.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/LICENSE +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/benchmarks/results.json +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/benchmarks/robust_runner.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/benchmarks/run_benchmarks.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/bin/scs.js +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/dashboard/app.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/ARCHITECTURE.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/CASE_STUDY_HUBBLE.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/CASE_STUDY_QUANTUM_ML.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/api.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/assets/icon.svg +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/assets/logo.svg +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/benchmarks.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/checks/verify_provenance_claims.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/cookbook.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/getting-started.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/index.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/maintenance.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/ml_reference.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/related.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/research-workflows.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/stylesheets/extra.css +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tour_of_numerical_methods.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/core_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/data_analysis_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/diffeq_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/fft2_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/graph_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/hypothesis_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/hypothesis_tests_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/hypothesis_with_stats_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/knowledge_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/linalg_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/math_utils_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/ml_advanced_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/ml_and_viz_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/ml_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/modeling_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/montecarlo_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/nlp_attention_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/nlp_bpe_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/nlp_mini_gpt_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/nlp_viz.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/numerical_integration_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/optimization_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/pandas_io_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/pca_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/probability_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/quantum_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/quick_start.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/scientific_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/signals_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/stats_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/stiff_ode_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/tutorials/time_series_demo.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/why-pure-python.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/core_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/data_analysis_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/diffeq_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/discovery_pipeline_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/ensemble_showcase.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/fft2_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/graph_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/hypothesis_custom_generator.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/hypothesis_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/hypothesis_tests_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/hypothesis_with_stats_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/interpolate_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/knowledge_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/linalg_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/math_utils_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/ml_and_viz_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/modeling_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/montecarlo_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/nlp_attention_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/nlp_bpe_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/nlp_mini_gpt_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/nlp_viz_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/numerical_integration_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/optimization_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/pca_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/pde_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/plot_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/plotting_notebook.ipynb +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/probability_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/quantum_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/scientific_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/signals_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/stats_demo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/examples/tour_of_numerical_methods.ipynb +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/index.js +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/mkdocs.yml +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/paper.bib +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/paper.md +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/requirements-build.lock +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/requirements-dev.lock +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/requirements.lock +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/scripts/check_release_toolchain.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/scripts/check_version_discipline.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/scripts/check_version_lockstep.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/scripts/publish.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/scripts/verify_cli_install.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/scripts/verify_cookbook.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/scripts/verify_ml_reference.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/scripts/verify_pypi_release.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/scripts/verify_release_integrity.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/__main__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/_paths.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/bayes/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/bayes/conjugate.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/causal.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/cli/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/cli/__main__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/cli/_handlers.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/cli/_parser.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/cli/_style.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/cli/_system_info.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/core/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/core/_numeric.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/core/models.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/data_analysis/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/data_analysis/dataset.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/data_analysis/loader.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/data_analysis/pandas_io.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/data_analysis/transform.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/data_analysis/viz.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/data_io/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/data_io/scientific.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/data_io/streaming.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/diffeq/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/diffeq/_implicit.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/diffeq/solvers.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/diffeq/symplectic.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/fractals/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/fractals/sets.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/genetics/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/genetics/sequence.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/graph/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/graph/algorithms.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/hypothesis/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/hypothesis/evaluator.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/hypothesis/generator.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/hypothesis/mining.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/infotheory/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/infotheory/measures.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/interpolate/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/knowledge/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/knowledge/graph.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/knowledge/notes.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/knowledge/retrieval.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/math_utils/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/math_utils/calculus.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/math_utils/linalg.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/math_utils/special.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/math_utils/svd.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/boosting.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/clustering.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/decomposition.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/ensemble.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/linear_models.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/metrics.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/model_selection.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/naive_bayes.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/neighbors.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/neural.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/preprocessing.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/tree.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/ml/voting.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/modeling/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/modeling/_base.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/modeling/_nodes.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/modeling/expression.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/modeling/fitting.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/modeling/model.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/modeling/solver.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/montecarlo/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/montecarlo/markov.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/montecarlo/methods.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/attention.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/autograd/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/autograd/_grad.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/autograd/ops.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/autograd/tensor.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/bpe.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/data.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/embed.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/layers.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/model.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/optim.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/training.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/nlp/viz.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/numerical_integration/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/numerical_integration/quadrature.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/optimization/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/optimization/_metaheuristics.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/optimization/constrained.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/optimization/minimize.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/pde/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/plot/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/plot/_backend.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/plot/charts.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/probability/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/probability/_advanced.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/probability/distributions.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/probability/extra_distributions.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/provenance/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/provenance/manifest.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/py.typed +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/quantum/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/quantum/circuit.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/quantum/multi_qubit.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/quantum/simulator.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/scientific/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/scientific/constants.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/scientific/formulas.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/sensitivity.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/signals/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/signals/filters.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/signals/processing.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/signals/stft.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/signals/wavelet.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/stats/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/stats/_distributions.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/stats/bootstrap.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/stats/descriptive.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/stats/hypothesis_tests.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/stats/multiple_testing.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/stats/nonparametric.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/stats/power.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/stats/regression.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/stats/time_series.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/tools/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/tools/adapters.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/tools/registry.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/uncertainty/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/uncertainty/propagation.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/units/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/units/core.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/validation/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/validation/adequacy.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/validation/checks.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/validation/drift.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/validation/report.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/wavelets/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/wavelets/haar.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/workflow/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/workflow/engine.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/workflow/gates.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/workflow/orchestrator.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/workflow/selection.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/workflow/tooling.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/src/cds/workflow/types.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/__init__.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/conftest.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_advanced_fitting.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_audit_completion_coverage.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_audit_guard_coverage.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_audit_hardening.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_audit_hardening_coverage.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_bayes_v2.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_benchmarks.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_bootstrap.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_causal.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_cli.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_cli_color.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_cli_extended.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_cli_system_info.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_codemeta_version_lockstep.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_constrained_opt.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_core.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_data_analysis.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_data_analysis_lazy_bridge.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_data_analysis_pandas_io.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_data_io.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_data_io_optional_backends.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_data_io_scientific.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_dataset.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_dev_numpy_pin_contract.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_diffeq.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_diffeq_implicit.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_domain_validation.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_edge_misc_numerical.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_edge_ml_quantum_linalg.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_edge_nlp.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_edge_quantum_evaluator_cli.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_edge_stats_optimization_signals.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_extra_distributions.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_fft2.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_fitting_bootstrap.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_fractals.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_genetics.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_graph.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_hardening_privacy_provenance.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_hypothesis.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_hypothesis_engine.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_hypothesis_mining.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_hypothesis_tests.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_infotheory.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_interpolate.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_knowledge.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_layering.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_linalg_extended.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_linalg_qr_cholesky.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_markov.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_math_utils.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_boosting.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_clustering.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_ensemble.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_knn.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_linreg.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_logreg.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_metrics.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_model_selection.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_naive_bayes.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_pca.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_preprocessing.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_tree.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_viz.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_ml_voting.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_modeling.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_modeling_fit_validation.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_montecarlo.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_multi_qubit.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_nlp_attention.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_nlp_autograd.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_nlp_bpe.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_nlp_embed.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_nlp_layers.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_nlp_model.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_nlp_training.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_nlp_viz.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_numerical_integration.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_numerical_invariants.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_numerical_oracles.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_optimization.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_optimization_metaheuristics.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_path_confinement.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_pde.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_plot_charts.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_plot_lazy.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_power.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_probability.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_probability_advanced.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_property_invariants.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_protocol_placeholders.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_provenance.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_provenance_audit_hardening.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_public_api.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_quantum.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_readme_badges.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_readme_surface.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_release_contract.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_release_toolchain.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_retrieval.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_runtime_dependency_graph.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_scientific.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_selection_audit_hardening.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_sensitivity.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_sensitivity_global.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_signals.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_signals_filters.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_special_invariants.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_special_numerics.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_statistical_audit.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_stats.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_stats_audit_coverage.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_stats_multiple_testing.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_stats_nonparametric.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_stats_time_series.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_stft.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_streaming_analytics.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_svd.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_symplectic.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_tool_adapters.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_tools_registry.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_uncertainty.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_units.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_validation.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_validation_adequacy.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_validation_advanced.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_validation_drift.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_verify_release_integrity.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_wavelet.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_wavelets_v2.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_workflow.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_workflow_gates.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_workflow_orchestrator.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_workflow_orchestrator_blocked_review.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_workflow_selection.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_workflow_selection_coverage.py +0 -0
- {scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/tests/test_workflow_tooling.py +0 -0
|
@@ -53,7 +53,7 @@ jobs:
|
|
|
53
53
|
fetch-depth: 0
|
|
54
54
|
|
|
55
55
|
- name: Install git-cliff
|
|
56
|
-
uses: orhun/git-cliff-action@
|
|
56
|
+
uses: orhun/git-cliff-action@a9a95522b26fe6403f7bb24031f21fb573d0f5ff # v4
|
|
57
57
|
with:
|
|
58
58
|
config: cliff.toml
|
|
59
59
|
args: --verbose --tag ${{ inputs.tag }} --output CHANGELOG.md
|
{scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/.github/workflows/codeql.yml
RENAMED
|
@@ -43,13 +43,13 @@ jobs:
|
|
|
43
43
|
with:
|
|
44
44
|
persist-credentials: false
|
|
45
45
|
- name: Initialize CodeQL
|
|
46
|
-
uses: github/codeql-action/init@
|
|
46
|
+
uses: github/codeql-action/init@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4
|
|
47
47
|
with:
|
|
48
48
|
languages: ${{ matrix.language }}
|
|
49
49
|
queries: security-and-quality
|
|
50
50
|
- name: Autobuild
|
|
51
|
-
uses: github/codeql-action/autobuild@
|
|
51
|
+
uses: github/codeql-action/autobuild@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4
|
|
52
52
|
- name: Perform CodeQL Analysis
|
|
53
|
-
uses: github/codeql-action/analyze@
|
|
53
|
+
uses: github/codeql-action/analyze@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4
|
|
54
54
|
with:
|
|
55
55
|
category: "/language:${{ matrix.language }}"
|
|
@@ -37,8 +37,10 @@ name: npm Publish
|
|
|
37
37
|
# cannot work or pretending an attestation was produced.
|
|
38
38
|
#
|
|
39
39
|
# Both modes are fail-closed. A requested mode with no usable credential exits 1
|
|
40
|
-
# with an actionable message.
|
|
41
|
-
#
|
|
40
|
+
# with an actionable message. The automatic release-tag path deliberately uses
|
|
41
|
+
# the repository's verified NPM_TOKEN until npm Trusted Publishing is registered.
|
|
42
|
+
# Manual workflow_dispatch runs still default to OIDC so that path can be tested
|
|
43
|
+
# and adopted later without changing the release topology.
|
|
42
44
|
|
|
43
45
|
on:
|
|
44
46
|
workflow_dispatch:
|
|
@@ -53,21 +55,11 @@ on:
|
|
|
53
55
|
type: boolean
|
|
54
56
|
default: false
|
|
55
57
|
push:
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
# the PyPI publish has succeeded, so a single version bump reaches PyPI
|
|
60
|
-
# first and npm second. `paths` narrows *branch* pushes so unrelated merges
|
|
61
|
-
# do not run this job; GitHub does not evaluate `paths` against tag pushes.
|
|
62
|
-
branches: [main]
|
|
58
|
+
# release.yml creates the version tag only after the PyPI release succeeds.
|
|
59
|
+
# Publishing npm from that tag gives one version bump exactly one automatic
|
|
60
|
+
# npm run, avoiding the previous branch-push + tag-push duplicate race.
|
|
63
61
|
tags:
|
|
64
62
|
- "v*"
|
|
65
|
-
paths:
|
|
66
|
-
- "package.json"
|
|
67
|
-
- "index.js"
|
|
68
|
-
- "bin/**"
|
|
69
|
-
- "npm.test.js"
|
|
70
|
-
- ".github/workflows/npm-publish.yml"
|
|
71
63
|
|
|
72
64
|
concurrency:
|
|
73
65
|
group: npm-publish
|
|
@@ -120,7 +112,7 @@ jobs:
|
|
|
120
112
|
# ENEEDAUTH; with the entry present it reaches the registry and fails
|
|
121
113
|
# E401 on a deliberately fake token instead.
|
|
122
114
|
- name: Set up Node
|
|
123
|
-
uses: actions/setup-node@
|
|
115
|
+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
124
116
|
with:
|
|
125
117
|
node-version: "24"
|
|
126
118
|
registry-url: "https://registry.npmjs.org"
|
|
@@ -325,14 +317,20 @@ jobs:
|
|
|
325
317
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
326
318
|
run: |
|
|
327
319
|
set -euo pipefail
|
|
328
|
-
if [ "${{
|
|
320
|
+
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
|
321
|
+
requested_token="${{ inputs.use_token_fallback }}"
|
|
322
|
+
else
|
|
323
|
+
requested_token="true"
|
|
324
|
+
fi
|
|
325
|
+
|
|
326
|
+
if [ "$requested_token" = "true" ]; then
|
|
329
327
|
if [ -z "${NPM_TOKEN:-}" ]; then
|
|
330
|
-
echo "::error::token mode was requested
|
|
331
|
-
echo "::error::add an npm automation token as the NPM_TOKEN secret, or
|
|
328
|
+
echo "::error::token mode was requested but the NPM_TOKEN secret is empty or unset"
|
|
329
|
+
echo "::error::add an npm automation token as the NPM_TOKEN secret, or use a manual OIDC dispatch after registering the npm trusted publisher"
|
|
332
330
|
exit 1
|
|
333
331
|
fi
|
|
334
332
|
echo "mode=token via NPM_TOKEN (no provenance: a long-lived token cannot mint a Sigstore attestation)"
|
|
335
|
-
echo "::warning::
|
|
333
|
+
echo "::warning::Automatic release-tag publishing uses NPM_TOKEN until npm Trusted Publishing is registered."
|
|
336
334
|
else
|
|
337
335
|
if [ -z "${ACTIONS_ID_TOKEN_REQUEST_URL:-}" ] || [ -z "${ACTIONS_ID_TOKEN_REQUEST_TOKEN:-}" ]; then
|
|
338
336
|
echo "::error::OIDC mode was requested but this job cannot mint an OIDC token"
|
|
@@ -386,7 +384,7 @@ jobs:
|
|
|
386
384
|
# trusted publisher is the cause, and "bump the version" would not have
|
|
387
385
|
# helped.
|
|
388
386
|
- name: Publish to npm (OIDC trusted publishing, with provenance)
|
|
389
|
-
if: ${{ !inputs.use_token_fallback }}
|
|
387
|
+
if: ${{ github.event_name == 'workflow_dispatch' && !inputs.use_token_fallback }}
|
|
390
388
|
run: |
|
|
391
389
|
# `-e` is on by default in this shell, so it is explicitly suspended
|
|
392
390
|
# around npm to capture the exit code instead of aborting before the
|
|
@@ -432,7 +430,7 @@ jobs:
|
|
|
432
430
|
echo "PASS: npm publish returned 0"
|
|
433
431
|
|
|
434
432
|
- name: Publish to npm (token mode, no provenance)
|
|
435
|
-
if: ${{ inputs.use_token_fallback }}
|
|
433
|
+
if: ${{ github.event_name != 'workflow_dispatch' || inputs.use_token_fallback }}
|
|
436
434
|
env:
|
|
437
435
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
438
436
|
run: |
|
{scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/.github/workflows/tests.yml
RENAMED
|
@@ -416,7 +416,7 @@ jobs:
|
|
|
416
416
|
with:
|
|
417
417
|
persist-credentials: false
|
|
418
418
|
- name: Set up Node
|
|
419
|
-
uses: actions/setup-node@
|
|
419
|
+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
420
420
|
with:
|
|
421
421
|
node-version: "24"
|
|
422
422
|
# `node --check` runs standalone here as well as via the npm `pretest`
|
|
@@ -104,6 +104,14 @@ tarball built, provenance was signed and submitted to the Sigstore transparency
|
|
|
104
104
|
log, and only the `PUT` failed. So both runs did prove the authentication failure,
|
|
105
105
|
and the fix is the registration above — not a version bump.
|
|
106
106
|
|
|
107
|
+
## [v2.2.4] - 2026-10-12
|
|
108
|
+
|
|
109
|
+
### Housekeeping — release alignment
|
|
110
|
+
|
|
111
|
+
- Publishes the post-2.2.3 repository state (single-shot automatic npm
|
|
112
|
+
publishing, #165) to PyPI and npm: the 2.2.3 upload predates that commit, so
|
|
113
|
+
both registries were one commit behind `main`. No behavioural change.
|
|
114
|
+
|
|
107
115
|
## [v2.2.3] - 2026-10-05
|
|
108
116
|
|
|
109
117
|
This release exists to exercise the OIDC trusted-publish path, now that the
|
|
@@ -5,7 +5,7 @@ title: "scientific-computing-system"
|
|
|
5
5
|
# Keep `version` in lockstep with pyproject.toml [project].version and
|
|
6
6
|
# src/cds/_version.py. scripts/check_version_discipline.py and
|
|
7
7
|
# scripts/check_version_lockstep.py enforce this.
|
|
8
|
-
version: 2.2.
|
|
8
|
+
version: 2.2.4
|
|
9
9
|
authors:
|
|
10
10
|
- name: "Furox-Art"
|
|
11
11
|
email: "furkanarkn1451@gmail.com"
|
|
@@ -50,5 +50,5 @@ preferred-citation:
|
|
|
50
50
|
authors:
|
|
51
51
|
- name: "Furox-Art"
|
|
52
52
|
year: 2026
|
|
53
|
-
version: 2.2.
|
|
53
|
+
version: 2.2.4
|
|
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.4
|
|
4
4
|
Summary: A pure-Python computational science platform for numerical methods, modeling, validation, uncertainty, scientific workflows, dimensional analysis, and optional research-data backends. Zero runtime dependencies.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Furox-Art/scientific-computing-system
|
|
6
6
|
Project-URL: Repository, https://github.com/Furox-Art/scientific-computing-system
|
|
@@ -149,14 +149,17 @@ Both channels are published at the same version. They are **not** equally
|
|
|
149
149
|
verifiable:
|
|
150
150
|
|
|
151
151
|
- **PyPI** — carries a **PEP 740 provenance attestation** (Sigstore-signed,
|
|
152
|
-
binding the file digest to the publishing workflow). Verified on 2.2.
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
152
|
+
binding the file digest to the publishing workflow). Verified on 2.2.3, and
|
|
153
|
+
on every release since attestations were enabled.
|
|
154
|
+
- **npm** — carries a **Sigstore attestation as of 2.2.3**, minted by npm's
|
|
155
|
+
OIDC trusted publisher (the registry serves both an npm publish attestation
|
|
156
|
+
and a SLSA provenance v1 bundle for that tarball). 1.0.0 through 2.2.2
|
|
157
|
+
predate the publisher registration and have none, so pin 2.2.3 or newer. npm
|
|
158
|
+
also exposes `dist.integrity` (sha512), which is a content pin, not proof of
|
|
159
|
+
origin, and `dist.signatures`, which is npm's registry transport signature,
|
|
160
|
+
not build provenance.
|
|
161
|
+
|
|
162
|
+
Prefer PyPI if you need an attestation for a version older than 2.2.3.
|
|
160
163
|
[SECURITY.md](SECURITY.md#distribution-channels-and-provenance) has the
|
|
161
164
|
per-channel table, the published digests to pin, the commands to verify them,
|
|
162
165
|
and what to register to close the npm gap.
|
|
@@ -53,14 +53,17 @@ Both channels are published at the same version. They are **not** equally
|
|
|
53
53
|
verifiable:
|
|
54
54
|
|
|
55
55
|
- **PyPI** — carries a **PEP 740 provenance attestation** (Sigstore-signed,
|
|
56
|
-
binding the file digest to the publishing workflow). Verified on 2.2.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
56
|
+
binding the file digest to the publishing workflow). Verified on 2.2.3, and
|
|
57
|
+
on every release since attestations were enabled.
|
|
58
|
+
- **npm** — carries a **Sigstore attestation as of 2.2.3**, minted by npm's
|
|
59
|
+
OIDC trusted publisher (the registry serves both an npm publish attestation
|
|
60
|
+
and a SLSA provenance v1 bundle for that tarball). 1.0.0 through 2.2.2
|
|
61
|
+
predate the publisher registration and have none, so pin 2.2.3 or newer. npm
|
|
62
|
+
also exposes `dist.integrity` (sha512), which is a content pin, not proof of
|
|
63
|
+
origin, and `dist.signatures`, which is npm's registry transport signature,
|
|
64
|
+
not build provenance.
|
|
65
|
+
|
|
66
|
+
Prefer PyPI if you need an attestation for a version older than 2.2.3.
|
|
64
67
|
[SECURITY.md](SECURITY.md#distribution-channels-and-provenance) has the
|
|
65
68
|
per-channel table, the published digests to pin, the commands to verify them,
|
|
66
69
|
and what to register to close the npm gap.
|
|
@@ -29,8 +29,8 @@ It is also published to npm as `scientific-computing-system`, but that package i
|
|
|
29
29
|
|
|
30
30
|
| Threat | Mitigation |
|
|
31
31
|
|---|---|
|
|
32
|
-
| **Supply chain: malicious or substituted PyPI artifact** | The release workflow is the sole PyPI publish authority. It builds wheel + sdist on a GitHub-hosted runner from a hash-pinned toolchain, verifies package metadata/version, installs the built wheel, smoke-tests the installed CLI, and publishes through PyPI Trusted Publishing (OIDC). PyPI serves a PEP 740 provenance bundle for 2.2.
|
|
33
|
-
| **Supply chain: malicious or substituted npm artifact** | The npm workflow is the sole npm publish authority and gates on the registry version-existence check, a `npm pack --dry-run` tarball allowlist, and npm/Python version lockstep. **
|
|
32
|
+
| **Supply chain: malicious or substituted PyPI artifact** | The release workflow is the sole PyPI publish authority. It builds wheel + sdist on a GitHub-hosted runner from a hash-pinned toolchain, verifies package metadata/version, installs the built wheel, smoke-tests the installed CLI, and publishes through PyPI Trusted Publishing (OIDC). PyPI serves a PEP 740 provenance bundle for 2.2.3 whose subject digest matches the published `sha256`. |
|
|
33
|
+
| **Supply chain: malicious or substituted npm artifact** | The npm workflow is the sole npm publish authority and gates on the registry version-existence check, a `npm pack --dry-run` tarball allowlist, and npm/Python version lockstep. **2.2.3 onward is attested:** the npmjs.com trusted publisher is registered, the workflow publishes in `mode=oidc`, and npm's `--provenance` is honoured, so the registry serves an npm publish attestation plus a SLSA provenance v1 bundle for the released tarball. **1.0.0–2.2.2 are not:** they were published through the token fallback, which cannot mint an attestation, so for those versions the only consumer-side control is `dist.integrity`, which is a content pin rather than proof of origin. See below. |
|
|
34
34
|
| **Registry drift** | Public PyPI is treated as the distribution registry for the library. The release integrity check requires exactly one wheel and one sdist on PyPI and requires the matching GitHub Release to contain no wheel/sdist assets. A registry-policy workflow rechecks the public PyPI package and removes accidental distribution assets from GitHub Releases. |
|
|
35
35
|
| **Dependency vulnerabilities** | The core has no required runtime dependencies. Development/test/docs lock files are audited in CI with `pip-audit`; optional backends are isolated behind extras and lazy loading. |
|
|
36
36
|
| **Code execution from package install** | The build backend is `hatchling`; there is no `setup.py` execution and package versioning is static in `pyproject.toml` plus `src/cds/_version.py`. |
|
|
@@ -48,8 +48,8 @@ version-specific; re-check it rather than trusting it indefinitely.
|
|
|
48
48
|
|---|---|---|
|
|
49
49
|
| Contents | the library (wheel + sdist) | `index.js`, `bin/scs.js`, `LICENSE`, `README.md`, `CHANGELOG.md`, `SECURITY.md` — **no Python** |
|
|
50
50
|
| Requires the other channel | no | yes; `scs` runs `python -m cds`, so the Python distribution must be installed. It resolves `python`/`python3`/`py` and does **not** look for a `cds` console script on `PATH` |
|
|
51
|
-
| Publish authentication | Trusted Publishing (OIDC) |
|
|
52
|
-
| **PEP 740 provenance attestation** | **yes on 2.2.
|
|
51
|
+
| Publish authentication | Trusted Publishing (OIDC) | Trusted Publishing (OIDC) since 2.2.3; token fallback still exists in the workflow |
|
|
52
|
+
| **PEP 740 provenance attestation** | **yes on 2.2.3** (verified; see below) | **yes on 2.2.3** (verified; see below) |
|
|
53
53
|
| **npm `dist.signatures`** | n/a | present — registry transport signature, **not** build provenance |
|
|
54
54
|
| **Content digest a consumer can pin** | `sha256` per file on the PyPI file page | `dist.integrity` (sha512) and `dist.shasum` (sha1) |
|
|
55
55
|
|
|
@@ -69,34 +69,40 @@ version-specific; re-check it rather than trusting it indefinitely.
|
|
|
69
69
|
|
|
70
70
|
#### What is published today, and how to check it
|
|
71
71
|
|
|
72
|
-
Verified against the live registries for **
|
|
72
|
+
Verified against the live registries for **2.2.3** on 2026-10-05:
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
75
|
# PEP 740 attestation exists (HTTP 200). Note the per-FILE path; a bare
|
|
76
76
|
# /integrity/<project>/<version>/ directory is not an endpoint and 404s.
|
|
77
77
|
curl -sS -H "Accept: application/vnd.pypi.integrity.v1+json" \
|
|
78
|
-
https://pypi.org/integrity/scientific-computing-system/2.2.
|
|
78
|
+
https://pypi.org/integrity/scientific-computing-system/2.2.3/scientific_computing_system-2.2.3-py3-none-any.whl/provenance
|
|
79
79
|
|
|
80
80
|
# The digest PyPI publishes for that file, to compare against the attestation
|
|
81
81
|
# subject (predicateType https://docs.pypi.org/attestations/publish/v1):
|
|
82
|
-
curl -sS https://pypi.org/pypi/scientific-computing-system/2.2.
|
|
82
|
+
curl -sS https://pypi.org/pypi/scientific-computing-system/2.2.3/json | python -c \
|
|
83
83
|
"import json,sys; [print(f['filename'], f['digests']['sha256']) for f in json.load(sys.stdin)['urls']]"
|
|
84
84
|
|
|
85
|
-
# npm:
|
|
85
|
+
# npm: attested from 2.2.3 onward (HTTP 200, two bundles: the npm publish
|
|
86
|
+
# attestation and a SLSA provenance v1 one). Earlier versions 404 -- 1.0.0,
|
|
87
|
+
# 2.2.0, 2.2.1 and 2.2.2 were published through the token fallback, which
|
|
88
|
+
# cannot mint an attestation.
|
|
86
89
|
curl -sS -o /dev/null -w '%{http_code}\n' \
|
|
87
|
-
https://registry.npmjs.org/-/npm/v1/attestations/scientific-computing-system@2.2.
|
|
88
|
-
|
|
90
|
+
https://registry.npmjs.org/-/npm/v1/attestations/scientific-computing-system@2.2.3 # -> 200
|
|
91
|
+
curl -sS -o /dev/null -w '%{http_code}\n' \
|
|
92
|
+
https://registry.npmjs.org/-/npm/v1/attestations/scientific-computing-system@2.2.2 # -> 404
|
|
93
|
+
npm view scientific-computing-system@2.2.3 dist.integrity dist.shasum
|
|
89
94
|
```
|
|
90
95
|
|
|
91
|
-
The published PyPI 2.2.
|
|
96
|
+
The published PyPI 2.2.3 digests, useful for pinning:
|
|
92
97
|
|
|
93
98
|
| File | sha256 |
|
|
94
99
|
|---|---|
|
|
95
|
-
| `scientific_computing_system-2.2.
|
|
96
|
-
| `scientific_computing_system-2.2.
|
|
100
|
+
| `scientific_computing_system-2.2.3-py3-none-any.whl` | `57408c812ac153e6f2dca6345d715084032fc67c5a8d9df127f257c6bfe31a3c` |
|
|
101
|
+
| `scientific_computing_system-2.2.3.tar.gz` | `86af9fa7295d7c026f1b417a48eda4b6a696e9e9605ca459e48ad125a1ab962b` |
|
|
97
102
|
|
|
98
103
|
Both were confirmed to equal the `subject` digest inside their attestation
|
|
99
104
|
bundles, so the attested bytes and the published bytes are the same bytes.
|
|
105
|
+
The 2.2.1 digests remain pinned in the release notes for that version.
|
|
100
106
|
|
|
101
107
|
#### Reproducible builds: what is and is not claimed
|
|
102
108
|
|
|
@@ -114,28 +120,29 @@ deterministic for a fixed toolchain, and this repository does not currently
|
|
|
114
120
|
claim that the published artifacts are bit-for-bit reproducible from source.*
|
|
115
121
|
Treat the published digests above as the pin to use, not a rebuild target.
|
|
116
122
|
|
|
117
|
-
####
|
|
123
|
+
#### How the npm attestation was enabled
|
|
118
124
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
attestation yet:
|
|
125
|
+
Both registries now have their trusted-publisher record, so a release from this
|
|
126
|
+
repository's publish workflows mints an attestation on each channel:
|
|
122
127
|
|
|
123
128
|
- **PyPI** — Trusted Publisher: owner `Furox-Art`, repository
|
|
124
129
|
`scientific-computing-system`, workflow `release.yml`, environment `pypi`.
|
|
125
|
-
|
|
130
|
+
Exercised since 2.2.1; every release since is attested.
|
|
126
131
|
- **npm** — Trusted Publisher: owner `Furox-Art`, repository
|
|
127
132
|
`scientific-computing-system`, workflow `npm-publish.yml`, environment `npm`.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
133
|
+
Registered before 2.2.3, which is the first npm release published through it
|
|
134
|
+
with `--provenance`. Before that registration the default OIDC path could not
|
|
135
|
+
complete a publish, so 1.0.0–2.2.2 went out through the token fallback — a
|
|
136
|
+
long-lived token has no OIDC identity to attest, and those versions carry no
|
|
137
|
+
attestation. They stay in the registry as-is; the fix for a consumer is to
|
|
138
|
+
move to 2.2.3 or newer.
|
|
139
|
+
|
|
140
|
+
The registration step that is easy to miss: under **Settings → Trusted
|
|
141
|
+
Publisher → GitHub Actions**, the **`npm publish`** allowed action must be
|
|
142
|
+
enabled. npm's UI allows `npm stage publish` by default on new configurations
|
|
143
|
+
and makes direct `npm publish` opt-in, while this repository's workflow
|
|
144
|
+
publishes directly. A publisher registered without it still fails, with a
|
|
145
|
+
permission error rather than a 404.
|
|
139
146
|
|
|
140
147
|
**A missing registration looks like a missing version.** npm will not disclose
|
|
141
148
|
whether a package exists to an unauthenticated caller, so an unrecognised
|
|
@@ -150,10 +157,11 @@ attestation yet:
|
|
|
150
157
|
differently — `401`, or `ENEEDAUTH` — so `E404` on a PUT for a package that is
|
|
151
158
|
known to exist means the registration, not the version.
|
|
152
159
|
|
|
153
|
-
**Practical consequence:**
|
|
154
|
-
|
|
155
|
-
npm
|
|
156
|
-
integrity pin
|
|
160
|
+
**Practical consequence:** install 2.2.3 or newer from either channel and verify
|
|
161
|
+
its attestation bundle — PEP 740 on PyPI (per-file endpoint), the npm publish and
|
|
162
|
+
SLSA provenance bundles on npm. For a pinned older version the npm channel only
|
|
163
|
+
offers `dist.integrity`, which is an integrity pin and not proof of origin; use
|
|
164
|
+
PyPI's PEP 740 bundle there instead.
|
|
157
165
|
|
|
158
166
|
### Optional Backend Boundary
|
|
159
167
|
|
|
@@ -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.4",
|
|
6
6
|
"description": "Pure-Python computational science platform for numerical methods, modeling, validation, uncertainty, and scientific workflows. Zero runtime dependencies. This is the front door; scientific-computing-system-2.0 is the NumPy build of the same work.",
|
|
7
7
|
"license": "https://spdx.org/licenses/MIT",
|
|
8
8
|
"codeRepository": "https://github.com/Furox-Art/scientific-computing-system",
|
|
@@ -278,6 +278,16 @@ test('the npm publish path is armed', () => {
|
|
|
278
278
|
);
|
|
279
279
|
});
|
|
280
280
|
|
|
281
|
+
test('automatic npm publishing is single-shot from release tags', () => {
|
|
282
|
+
const workflow = workflowBody('npm-publish.yml');
|
|
283
|
+
assert.ok(/tags:\s*\n\s*- "v\*"/.test(workflow), 'v* tags must trigger npm publishing');
|
|
284
|
+
assert.ok(!/branches:\s*\[main\]/.test(workflow), 'main branch pushes must not duplicate the tag release');
|
|
285
|
+
assert.ok(
|
|
286
|
+
/github\.event_name != 'workflow_dispatch' \|\| inputs\.use_token_fallback/.test(workflow),
|
|
287
|
+
'automatic tag runs must select the verified token path',
|
|
288
|
+
);
|
|
289
|
+
});
|
|
290
|
+
|
|
281
291
|
test('both publish modes exist and are selected by one input', () => {
|
|
282
292
|
const workflow = workflowBody('npm-publish.yml');
|
|
283
293
|
|
|
@@ -296,19 +306,18 @@ test('both publish modes exist and are selected by one input', () => {
|
|
|
296
306
|
'use_token_fallback must default to false so OIDC remains the default mode',
|
|
297
307
|
);
|
|
298
308
|
|
|
299
|
-
// Both modes must be present and mutually exclusive.
|
|
309
|
+
// Both modes must be present and mutually exclusive. Automatic tag releases
|
|
310
|
+
// use the verified token path; manual dispatches remain available for OIDC.
|
|
300
311
|
const publishSteps = workflow.split('- name: ').filter((block) => /^Publish to npm/.test(block));
|
|
301
312
|
assert.strictEqual(publishSteps.length, 2, 'there must be exactly two publish steps');
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
// modes pass a loose assertion while being mutually exclusive in reality.
|
|
306
|
-
const oidcStep = publishSteps.find((s) => /if:.*!inputs\.use_token_fallback/.test(s));
|
|
313
|
+
const oidcStep = publishSteps.find(
|
|
314
|
+
(s) => /github\.event_name == 'workflow_dispatch'/.test(s) && /!inputs\.use_token_fallback/.test(s),
|
|
315
|
+
);
|
|
307
316
|
const tokenStep = publishSteps.find(
|
|
308
|
-
(s) => /
|
|
317
|
+
(s) => /github\.event_name != 'workflow_dispatch'/.test(s) && /inputs\.use_token_fallback/.test(s),
|
|
309
318
|
);
|
|
310
|
-
assert.ok(oidcStep, '
|
|
311
|
-
assert.ok(tokenStep, '
|
|
319
|
+
assert.ok(oidcStep, 'manual OIDC publish must remain available');
|
|
320
|
+
assert.ok(tokenStep, 'automatic tag publishing must use the token path');
|
|
312
321
|
assert.notStrictEqual(oidcStep, tokenStep, 'the two modes must be distinct steps');
|
|
313
322
|
|
|
314
323
|
// The token step must read the repository's existing NPM_TOKEN secret.
|
|
@@ -333,8 +342,12 @@ test('the token mode does not request provenance', () => {
|
|
|
333
342
|
.split('- name: ')
|
|
334
343
|
.filter((block) => /^Publish to npm/.test(block));
|
|
335
344
|
|
|
336
|
-
const oidc = publishSteps.find(
|
|
337
|
-
|
|
345
|
+
const oidc = publishSteps.find(
|
|
346
|
+
(s) => /github\.event_name == 'workflow_dispatch'/.test(s) && /!inputs\.use_token_fallback/.test(s),
|
|
347
|
+
);
|
|
348
|
+
const token = publishSteps.find(
|
|
349
|
+
(s) => /github\.event_name != 'workflow_dispatch'/.test(s) && /inputs\.use_token_fallback/.test(s),
|
|
350
|
+
);
|
|
338
351
|
assert.ok(oidc, 'OIDC publish step not found');
|
|
339
352
|
assert.ok(token, 'token publish step not found');
|
|
340
353
|
|
|
@@ -550,8 +563,10 @@ test('a missing credential exits before any publish step can run', () => {
|
|
|
550
563
|
'the preflight must check OIDC availability for OIDC mode',
|
|
551
564
|
);
|
|
552
565
|
assert.ok(
|
|
553
|
-
/
|
|
554
|
-
|
|
566
|
+
/github\.event_name/.test(preflightBlock) &&
|
|
567
|
+
/requested_token/.test(preflightBlock) &&
|
|
568
|
+
/inputs\.use_token_fallback/.test(preflightBlock),
|
|
569
|
+
'the preflight must select token mode automatically for tag pushes and honor the manual input',
|
|
555
570
|
);
|
|
556
571
|
|
|
557
572
|
// Exactly two `exit 1`s: one per mode. Each failing branch must terminate
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scientific-computing-system",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.4",
|
|
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.4"
|
|
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"
|
|
@@ -289,19 +289,19 @@ def test_npm_dist_handles_failure(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
|
289
289
|
|
|
290
290
|
|
|
291
291
|
def test_security_table_row_parses_to_the_measured_verdict() -> None:
|
|
292
|
-
"""SECURITY.md's real row must parse to (True,
|
|
292
|
+
"""SECURITY.md's real row must parse to (True, True) today."""
|
|
293
293
|
pypi_claim, npm_claim, row = guard.read_attestation_row()
|
|
294
294
|
|
|
295
295
|
assert row, "the attestation row disappeared from SECURITY.md"
|
|
296
296
|
assert pypi_claim is True
|
|
297
|
-
assert npm_claim is
|
|
297
|
+
assert npm_claim is True
|
|
298
298
|
|
|
299
299
|
|
|
300
|
-
def
|
|
300
|
+
def test_readme_npm_bullet_parses_to_an_attestation() -> None:
|
|
301
301
|
readme_claim, line = guard.read_readme_npm_claim()
|
|
302
302
|
|
|
303
303
|
assert line, "the README npm bullet disappeared"
|
|
304
|
-
assert readme_claim is
|
|
304
|
+
assert readme_claim is True
|
|
305
305
|
|
|
306
306
|
|
|
307
307
|
@pytest.mark.parametrize(
|
|
@@ -332,7 +332,9 @@ def test_prose_claims_scan_finds_the_expected_signals() -> None:
|
|
|
332
332
|
assert claims["mentions_npm_attestation_status"]
|
|
333
333
|
assert claims["distinguishes_npm_transport_sig"]
|
|
334
334
|
assert claims["distinguishes_digest_from_provenance"]
|
|
335
|
-
|
|
335
|
+
# Both trusted publishers are registered and 2.2.3 is attested on npm, so the
|
|
336
|
+
# prose must no longer claim a pending registration.
|
|
337
|
+
assert not claims["states_registration_pending"]
|
|
336
338
|
|
|
337
339
|
|
|
338
340
|
def test_scan_notes_find_claims_in_the_tree() -> None:
|
|
@@ -361,12 +363,14 @@ def test_main_fails_when_no_claim_is_present(
|
|
|
361
363
|
def test_strict_network_escalates_outage(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
362
364
|
"""`--strict-network` turns an unreadable registry into a failure."""
|
|
363
365
|
monkeypatch.setattr(guard, "pypi_attested", lambda *a: (guard.UNKNOWN, "unreachable"))
|
|
364
|
-
|
|
366
|
+
# npm answers normally: the outage under test is PyPI's, and a contradictory
|
|
367
|
+
# npm answer would fail for the wrong reason (the docs claim npm is attested).
|
|
368
|
+
monkeypatch.setattr(guard, "npm_attested", lambda *a: (guard.YES, "200"))
|
|
365
369
|
monkeypatch.setattr(guard, "npm_dist", lambda *a: (True, "dist.integrity=True"))
|
|
366
370
|
monkeypatch.setattr(guard, "pypi_published_digest", lambda *a: None)
|
|
367
371
|
|
|
368
|
-
assert guard.main(["--version", "2.2.
|
|
369
|
-
assert guard.main(["--version", "2.2.
|
|
372
|
+
assert guard.main(["--version", "2.2.3", "--strict-network"]) == 1
|
|
373
|
+
assert guard.main(["--version", "2.2.3"]) == 0
|
|
370
374
|
|
|
371
375
|
|
|
372
376
|
def test_decoding_rejects_a_bundle_without_a_subject() -> None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/benchmarks/results.json
RENAMED
|
File without changes
|
{scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/benchmarks/robust_runner.py
RENAMED
|
File without changes
|
{scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/benchmarks/run_benchmarks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/ARCHITECTURE.md
RENAMED
|
File without changes
|
{scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/CASE_STUDY_HUBBLE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/assets/icon.svg
RENAMED
|
File without changes
|
{scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/assets/logo.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/getting-started.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/ml_reference.md
RENAMED
|
File without changes
|
|
File without changes
|
{scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/research-workflows.md
RENAMED
|
File without changes
|
{scientific_computing_system-2.2.3 → scientific_computing_system-2.2.4}/docs/stylesheets/extra.css
RENAMED
|
File without changes
|
|
File without changes
|