scientific-computing-system 2.2.2__tar.gz → 2.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/changelog.yml +1 -1
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/codeql.yml +3 -3
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/npm-publish.yml +93 -23
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/tests.yml +1 -1
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/CHANGELOG.md +114 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/CITATION.cff +2 -2
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/PKG-INFO +14 -11
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/README.md +12 -9
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/SECURITY.md +55 -27
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/codemeta.json +1 -1
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/npm.test.js +47 -14
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/package.json +1 -1
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/pyproject.toml +2 -2
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/requirements-build.lock +6 -3
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/_version.py +1 -1
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_provenance_claims.py +12 -8
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/benchmarks.yml +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/bot-reviewer.yml +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/cli-package-smoke.yml +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/pr-automation.yml +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/pypi-registry-smoke.yml +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.github/workflows/release.yml +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/.gitignore +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/CONTRIBUTING.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/LICENSE +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/benchmarks/results.json +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/benchmarks/robust_runner.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/benchmarks/run_benchmarks.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/bin/scs.js +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/dashboard/app.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/ARCHITECTURE.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/CASE_STUDY_HUBBLE.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/CASE_STUDY_QUANTUM_ML.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/api.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/assets/icon.svg +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/assets/logo.svg +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/benchmarks.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/checks/verify_provenance_claims.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/cookbook.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/getting-started.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/index.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/maintenance.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/ml_reference.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/related.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/research-workflows.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/stylesheets/extra.css +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tour_of_numerical_methods.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/core_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/data_analysis_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/diffeq_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/fft2_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/graph_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/hypothesis_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/hypothesis_tests_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/hypothesis_with_stats_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/knowledge_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/linalg_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/math_utils_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/ml_advanced_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/ml_and_viz_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/ml_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/modeling_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/montecarlo_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/nlp_attention_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/nlp_bpe_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/nlp_mini_gpt_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/nlp_viz.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/numerical_integration_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/optimization_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/pandas_io_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/pca_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/probability_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/quantum_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/quick_start.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/scientific_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/signals_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/stats_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/stiff_ode_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/tutorials/time_series_demo.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/docs/why-pure-python.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/core_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/data_analysis_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/diffeq_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/discovery_pipeline_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/ensemble_showcase.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/fft2_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/graph_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/hypothesis_custom_generator.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/hypothesis_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/hypothesis_tests_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/hypothesis_with_stats_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/interpolate_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/knowledge_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/linalg_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/math_utils_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/ml_and_viz_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/modeling_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/montecarlo_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/nlp_attention_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/nlp_bpe_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/nlp_mini_gpt_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/nlp_viz_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/numerical_integration_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/optimization_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/pca_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/pde_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/plot_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/plotting_notebook.ipynb +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/probability_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/quantum_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/scientific_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/signals_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/stats_demo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/examples/tour_of_numerical_methods.ipynb +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/index.js +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/mkdocs.yml +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/paper.bib +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/paper.md +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/requirements-dev.lock +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/requirements.lock +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/check_release_toolchain.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/check_version_discipline.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/check_version_lockstep.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/publish.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/verify_cli_install.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/verify_cookbook.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/verify_ml_reference.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/verify_pypi_release.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/scripts/verify_release_integrity.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/__main__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/_paths.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/bayes/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/bayes/conjugate.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/causal.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/cli/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/cli/__main__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/cli/_handlers.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/cli/_parser.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/cli/_style.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/cli/_system_info.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/core/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/core/_numeric.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/core/models.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_analysis/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_analysis/dataset.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_analysis/loader.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_analysis/pandas_io.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_analysis/transform.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_analysis/viz.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_io/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_io/scientific.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/data_io/streaming.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/diffeq/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/diffeq/_implicit.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/diffeq/solvers.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/diffeq/symplectic.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/fractals/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/fractals/sets.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/genetics/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/genetics/sequence.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/graph/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/graph/algorithms.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/hypothesis/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/hypothesis/evaluator.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/hypothesis/generator.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/hypothesis/mining.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/infotheory/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/infotheory/measures.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/interpolate/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/knowledge/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/knowledge/graph.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/knowledge/notes.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/knowledge/retrieval.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/math_utils/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/math_utils/calculus.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/math_utils/linalg.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/math_utils/special.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/math_utils/svd.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/boosting.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/clustering.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/decomposition.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/ensemble.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/linear_models.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/metrics.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/model_selection.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/naive_bayes.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/neighbors.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/neural.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/preprocessing.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/tree.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/ml/voting.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/_base.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/_nodes.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/expression.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/fitting.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/model.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/modeling/solver.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/montecarlo/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/montecarlo/markov.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/montecarlo/methods.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/attention.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/autograd/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/autograd/_grad.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/autograd/ops.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/autograd/tensor.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/bpe.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/data.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/embed.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/layers.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/model.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/optim.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/training.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/nlp/viz.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/numerical_integration/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/numerical_integration/quadrature.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/optimization/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/optimization/_metaheuristics.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/optimization/constrained.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/optimization/minimize.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/pde/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/plot/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/plot/_backend.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/plot/charts.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/probability/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/probability/_advanced.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/probability/distributions.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/probability/extra_distributions.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/provenance/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/provenance/manifest.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/py.typed +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/quantum/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/quantum/circuit.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/quantum/multi_qubit.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/quantum/simulator.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/scientific/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/scientific/constants.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/scientific/formulas.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/sensitivity.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/signals/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/signals/filters.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/signals/processing.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/signals/stft.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/signals/wavelet.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/_distributions.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/bootstrap.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/descriptive.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/hypothesis_tests.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/multiple_testing.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/nonparametric.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/power.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/regression.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/stats/time_series.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/tools/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/tools/adapters.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/tools/registry.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/uncertainty/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/uncertainty/propagation.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/units/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/units/core.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/validation/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/validation/adequacy.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/validation/checks.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/validation/drift.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/validation/report.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/wavelets/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/wavelets/haar.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/engine.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/gates.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/orchestrator.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/selection.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/tooling.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/src/cds/workflow/types.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/__init__.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/conftest.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_advanced_fitting.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_audit_completion_coverage.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_audit_guard_coverage.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_audit_hardening.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_audit_hardening_coverage.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_bayes_v2.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_benchmarks.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_bootstrap.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_causal.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_cli.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_cli_color.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_cli_extended.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_cli_system_info.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_codemeta_version_lockstep.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_constrained_opt.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_core.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_data_analysis.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_data_analysis_lazy_bridge.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_data_analysis_pandas_io.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_data_io.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_data_io_optional_backends.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_data_io_scientific.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_dataset.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_dev_numpy_pin_contract.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_diffeq.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_diffeq_implicit.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_domain_validation.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_edge_misc_numerical.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_edge_ml_quantum_linalg.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_edge_nlp.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_edge_quantum_evaluator_cli.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_edge_stats_optimization_signals.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_extra_distributions.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_fft2.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_fitting_bootstrap.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_fractals.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_genetics.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_graph.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_hardening_privacy_provenance.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_hypothesis.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_hypothesis_engine.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_hypothesis_mining.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_hypothesis_tests.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_infotheory.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_interpolate.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_knowledge.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_layering.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_linalg_extended.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_linalg_qr_cholesky.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_markov.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_math_utils.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_boosting.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_clustering.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_ensemble.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_knn.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_linreg.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_logreg.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_metrics.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_model_selection.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_naive_bayes.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_pca.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_preprocessing.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_tree.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_viz.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_ml_voting.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_modeling.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_modeling_fit_validation.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_montecarlo.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_multi_qubit.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_attention.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_autograd.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_bpe.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_embed.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_layers.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_model.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_training.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_nlp_viz.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_numerical_integration.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_numerical_invariants.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_numerical_oracles.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_optimization.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_optimization_metaheuristics.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_path_confinement.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_pde.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_plot_charts.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_plot_lazy.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_power.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_probability.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_probability_advanced.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_property_invariants.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_protocol_placeholders.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_provenance.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_provenance_audit_hardening.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_public_api.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_quantum.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_readme_badges.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_readme_surface.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_release_contract.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_release_toolchain.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_retrieval.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_runtime_dependency_graph.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_scientific.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_selection_audit_hardening.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_sensitivity.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_sensitivity_global.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_signals.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_signals_filters.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_special_invariants.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_special_numerics.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_statistical_audit.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_stats.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_stats_audit_coverage.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_stats_multiple_testing.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_stats_nonparametric.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_stats_time_series.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_stft.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_streaming_analytics.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_svd.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_symplectic.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_tool_adapters.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_tools_registry.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_uncertainty.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_units.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_validation.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_validation_adequacy.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_validation_advanced.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_validation_drift.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_verify_release_integrity.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_wavelet.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_wavelets_v2.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow_gates.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow_orchestrator.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow_orchestrator_blocked_review.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow_selection.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow_selection_coverage.py +0 -0
- {scientific_computing_system-2.2.2 → scientific_computing_system-2.2.4}/tests/test_workflow_tooling.py +0 -0
|
@@ -53,7 +53,7 @@ jobs:
|
|
|
53
53
|
fetch-depth: 0
|
|
54
54
|
|
|
55
55
|
- name: Install git-cliff
|
|
56
|
-
uses: orhun/git-cliff-action@
|
|
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.2 → 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"
|
|
@@ -270,9 +262,25 @@ jobs:
|
|
|
270
262
|
if npm view "scientific-computing-system@${version}" version >/dev/null 2>&1; then
|
|
271
263
|
echo "::error::scientific-computing-system@${version} is already on npm"
|
|
272
264
|
echo "::error::nothing to do; bump package.json (and the locked version surfaces) to publish again"
|
|
265
|
+
echo "::error::: read this BEFORE bumping anything ---"
|
|
266
|
+
echo "::error::npm uses the SAME 404 to mean two different things: a version that is not"
|
|
267
|
+
echo "::error::published yet, and a caller whose credential is not authorized to see it. An"
|
|
268
|
+
echo "::error::unregistered trusted publisher is a 404, not a 401/403, because npm will not"
|
|
269
|
+
echo "::error::tell an unauthenticated caller whether a package exists."
|
|
270
|
+
echo "::error::A red publish step therefore does NOT by itself mean 'already published'. Do not"
|
|
271
|
+
echo "::error::burn a release number bumping the version to 'fix' a 404: if the trusted publisher"
|
|
272
|
+
echo "::error::is unregistered the next version will fail identically, and you will have consumed"
|
|
273
|
+
echo "::error::a version on both registries for nothing."
|
|
273
274
|
exit 1
|
|
274
275
|
fi
|
|
275
276
|
echo "PASS: scientific-computing-system@${version} is unpublished"
|
|
277
|
+
# This gate only proves absence. Say so, so its PASS cannot be read as
|
|
278
|
+
# "and we are authorized to publish it" -- the two are independent and
|
|
279
|
+
# only the first is tested here.
|
|
280
|
+
echo "NOTE: absence is all this gate proves. It says nothing about whether this job is"
|
|
281
|
+
echo "NOTE: authorized to publish: an unregistered trusted publisher also reads as 404. If"
|
|
282
|
+
echo "NOTE: 'npm publish' below fails with E404, the cause is the publisher registration,"
|
|
283
|
+
echo "NOTE: not the version."
|
|
276
284
|
|
|
277
285
|
# Two supported modes, selected by the `use_token_fallback` dispatch input.
|
|
278
286
|
#
|
|
@@ -309,14 +317,20 @@ jobs:
|
|
|
309
317
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
310
318
|
run: |
|
|
311
319
|
set -euo pipefail
|
|
312
|
-
if [ "${{
|
|
320
|
+
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
|
321
|
+
requested_token="${{ inputs.use_token_fallback }}"
|
|
322
|
+
else
|
|
323
|
+
requested_token="true"
|
|
324
|
+
fi
|
|
325
|
+
|
|
326
|
+
if [ "$requested_token" = "true" ]; then
|
|
313
327
|
if [ -z "${NPM_TOKEN:-}" ]; then
|
|
314
|
-
echo "::error::token mode was requested
|
|
315
|
-
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"
|
|
316
330
|
exit 1
|
|
317
331
|
fi
|
|
318
332
|
echo "mode=token via NPM_TOKEN (no provenance: a long-lived token cannot mint a Sigstore attestation)"
|
|
319
|
-
echo "::warning::
|
|
333
|
+
echo "::warning::Automatic release-tag publishing uses NPM_TOKEN until npm Trusted Publishing is registered."
|
|
320
334
|
else
|
|
321
335
|
if [ -z "${ACTIONS_ID_TOKEN_REQUEST_URL:-}" ] || [ -z "${ACTIONS_ID_TOKEN_REQUEST_TOKEN:-}" ]; then
|
|
322
336
|
echo "::error::OIDC mode was requested but this job cannot mint an OIDC token"
|
|
@@ -355,12 +369,68 @@ jobs:
|
|
|
355
369
|
echo "PASS: npm registry auth entry present (value not shown)"
|
|
356
370
|
echo "PASS: the entry references NODE_AUTH_TOKEN by name, not a literal secret"
|
|
357
371
|
|
|
372
|
+
# The publish command is unchanged and the step is still fail-closed: a
|
|
373
|
+
# non-zero npm exit still ends the job with that same exit code. All that is
|
|
374
|
+
# added is the diagnosis, because npm's bare E404 was ambiguous enough to be
|
|
375
|
+
# read as a version problem:
|
|
376
|
+
#
|
|
377
|
+
# npm error 404 The requested resource 'scientific-computing-system@2.2.2'
|
|
378
|
+
# could not be found or you do not have permission to access it.
|
|
379
|
+
#
|
|
380
|
+
# Nothing in that line says which half is true. Observed on runs 37268729425
|
|
381
|
+
# and 37269325567: the version was genuinely unpublished (the gate above
|
|
382
|
+
# passed), the tarball built, provenance was signed and submitted to the
|
|
383
|
+
# Sigstore transparency log, and only then did the PUT 404. An unregistered
|
|
384
|
+
# trusted publisher is the cause, and "bump the version" would not have
|
|
385
|
+
# helped.
|
|
358
386
|
- name: Publish to npm (OIDC trusted publishing, with provenance)
|
|
359
|
-
if: ${{ !inputs.use_token_fallback }}
|
|
360
|
-
run:
|
|
387
|
+
if: ${{ github.event_name == 'workflow_dispatch' && !inputs.use_token_fallback }}
|
|
388
|
+
run: |
|
|
389
|
+
# `-e` is on by default in this shell, so it is explicitly suspended
|
|
390
|
+
# around npm to capture the exit code instead of aborting before the
|
|
391
|
+
# log can be inspected.
|
|
392
|
+
set +e
|
|
393
|
+
log="${RUNNER_TEMP}/npm-publish.log"
|
|
394
|
+
npm publish --provenance --access public >"$log" 2>&1
|
|
395
|
+
status=$?
|
|
396
|
+
set -e
|
|
397
|
+
cat "$log"
|
|
398
|
+
|
|
399
|
+
if [ "$status" -ne 0 ]; then
|
|
400
|
+
echo "::error::npm publish failed (exit $status)"
|
|
401
|
+
if grep -qE 'E404|404 Not Found' "$log"; then
|
|
402
|
+
echo "::error::: this 404 is NOT a missing package and NOT a wrong version number ---"
|
|
403
|
+
echo "::error::scientific-computing-system exists on npm, and the gate above just proved"
|
|
404
|
+
echo "::error::this exact version is absent from it. npm reports an UNAUTHORIZED caller with"
|
|
405
|
+
echo "::error::the same 404 it uses for 'no such version', so the message cannot tell you"
|
|
406
|
+
echo "::error::which one you hit. Reading it as a version problem sends you to bump a version"
|
|
407
|
+
echo "::error::that still cannot publish."
|
|
408
|
+
echo "::error::If npm signed and submitted provenance above, the OIDC identity was accepted and"
|
|
409
|
+
echo "::error::the registry rejected the PUT for want of a matching trusted publisher."
|
|
410
|
+
echo "::error::A rejected or absent TOKEN looks different: 401, or ENEEDAUTH."
|
|
411
|
+
echo "::error::One-time maintainer fix, not automatable from CI:"
|
|
412
|
+
echo "::error:: npmjs.com -> package 'scientific-computing-system' -> Settings -> Trusted Publisher"
|
|
413
|
+
echo "::error:: Organization or user : Furox-Art"
|
|
414
|
+
echo "::error:: Package : scientific-computing-system"
|
|
415
|
+
echo "::error:: Workflow filename : npm-publish.yml"
|
|
416
|
+
echo "::error:: Environment name : npm"
|
|
417
|
+
echo "::error:: Allowed actions : npm publish <-- must be enabled, see below"
|
|
418
|
+
echo "::error::npm's current UI allows 'npm stage publish' by default for newly created"
|
|
419
|
+
echo "::error::configurations and makes direct 'npm publish' opt-in. This workflow calls"
|
|
420
|
+
echo "::error::'npm publish' directly, so registering the publisher WITHOUT also allowing"
|
|
421
|
+
echo "::error::'npm publish' will still fail -- with a permission error rather than a 404."
|
|
422
|
+
echo "::error::CLI equivalent, using your own npm login and 2FA:"
|
|
423
|
+
echo "::error:: npm trust github --file npm-publish.yml \\"
|
|
424
|
+
echo "::error:: --repo Furox-Art/scientific-computing-system --env npm --allow-publish"
|
|
425
|
+
else
|
|
426
|
+
echo "::error::not a 404; see the npm output above for the real cause"
|
|
427
|
+
fi
|
|
428
|
+
exit "$status"
|
|
429
|
+
fi
|
|
430
|
+
echo "PASS: npm publish returned 0"
|
|
361
431
|
|
|
362
432
|
- name: Publish to npm (token mode, no provenance)
|
|
363
|
-
if: ${{ inputs.use_token_fallback }}
|
|
433
|
+
if: ${{ github.event_name != 'workflow_dispatch' || inputs.use_token_fallback }}
|
|
364
434
|
env:
|
|
365
435
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
366
436
|
run: |
|
{scientific_computing_system-2.2.2 → 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`
|
|
@@ -7,6 +7,120 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Distribution status of 2.2.2 — read this before assuming npm has it
|
|
11
|
+
|
|
12
|
+
The two registries are **not** in the same state for 2.2.2.
|
|
13
|
+
|
|
14
|
+
| Registry | `2.2.2` | Build attestation |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| **PyPI** `scientific-computing-system` | **published** | **PEP 740 provenance present** |
|
|
17
|
+
| **npm** `scientific-computing-system` | **NOT published** | none — the version does not exist on npm |
|
|
18
|
+
|
|
19
|
+
PyPI 2.2.2 is live and carries a PEP 740 attestation. Verified against the live
|
|
20
|
+
registries on 2026-10-05: the PEP 740 per-file provenance endpoint returns
|
|
21
|
+
**HTTP 200** for both files.
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
curl -sS -o /dev/null -w '%{http_code}\n' \
|
|
25
|
+
https://pypi.org/integrity/scientific-computing-system/2.2.2/scientific_computing_system-2.2.2-py3-none-any.whl/provenance # 200
|
|
26
|
+
curl -sS -o /dev/null -w '%{http_code}\n' \
|
|
27
|
+
https://pypi.org/integrity/scientific-computing-system/2.2.2/scientific_computing_system-2.2.2.tar.gz/provenance # 200
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
npm 2.2.2 does not exist. The published npm versions remain `1.0.0`, `2.2.0` and
|
|
31
|
+
`2.2.1`. Nothing about the npm launcher is broken — the publish is blocked on a
|
|
32
|
+
one-time npmjs.com registration, described next.
|
|
33
|
+
|
|
34
|
+
### Pending: register the npm trusted publisher (one-time, maintainer, in a browser)
|
|
35
|
+
|
|
36
|
+
npmjs.com has **no trusted publisher** configured for the package
|
|
37
|
+
`scientific-computing-system`. Until one exists, the OIDC path cannot complete a
|
|
38
|
+
publish, and npm publishes no provenance for this package.
|
|
39
|
+
|
|
40
|
+
The coordinates to enter on npmjs.com → package `scientific-computing-system` →
|
|
41
|
+
**Settings → Trusted Publisher → GitHub Actions**:
|
|
42
|
+
|
|
43
|
+
| Field | Value |
|
|
44
|
+
|---|---|
|
|
45
|
+
| Organization or user | `Furox-Art` |
|
|
46
|
+
| Package | `scientific-computing-system` |
|
|
47
|
+
| Workflow filename | `npm-publish.yml` |
|
|
48
|
+
| Environment name | `npm` |
|
|
49
|
+
| Allowed actions | **`npm publish`** — must be enabled, see the warning below |
|
|
50
|
+
|
|
51
|
+
**The allowed-actions field is not optional in practice.** npm's current UI grants
|
|
52
|
+
`npm stage publish` by default on newly created configurations and makes direct
|
|
53
|
+
`npm publish` **opt-in**. This repository's workflow calls `npm publish` directly,
|
|
54
|
+
so registering the publisher *without* also allowing `npm publish` will leave the
|
|
55
|
+
publish failing — with a permission error this time rather than a 404.
|
|
56
|
+
|
|
57
|
+
The same registration from the CLI, using the maintainer's own npm login and 2FA:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
npm trust github --file npm-publish.yml \
|
|
61
|
+
--repo Furox-Art/scientific-computing-system --env npm --allow-publish
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### The publish mode default is unchanged, and was never set to token
|
|
65
|
+
|
|
66
|
+
The mode is the `workflow_dispatch` input `use_token_fallback`, whose default is
|
|
67
|
+
`false` — that is **OIDC**. There is no `npm_publish_mode` variable; the repository
|
|
68
|
+
has **no Actions variables at all** (none at repository or organization scope), and
|
|
69
|
+
`npm_publish_mode` appears nowhere in the tree. Nothing needs to be switched back:
|
|
70
|
+
OIDC is already the default, and token mode remains an explicit per-run opt-in.
|
|
71
|
+
|
|
72
|
+
`NPM_TOKEN` does still exist as a repository secret. It is what token mode would
|
|
73
|
+
use, and it should be deleted once the trusted publisher is registered and the
|
|
74
|
+
first OIDC publish has succeeded.
|
|
75
|
+
|
|
76
|
+
### Fixed: a 404 from npm no longer reads as "already published"
|
|
77
|
+
|
|
78
|
+
`npm publish` answered
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
npm error 404 The requested resource 'scientific-computing-system@2.2.2' could not
|
|
82
|
+
be found or you do not have permission to access it.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
on runs 37268729425 and 37269325567, and that single line cannot distinguish the
|
|
86
|
+
two real causes. npm deliberately does not tell an unauthenticated caller whether a
|
|
87
|
+
package exists, so **an unregistered trusted publisher is reported as 404, not as
|
|
88
|
+
401 or 403.**
|
|
89
|
+
|
|
90
|
+
Two failure surfaces were making that expensive to diagnose, and both now say so
|
|
91
|
+
out loud. Neither changes what the workflow does; both only change what it prints.
|
|
92
|
+
|
|
93
|
+
- **The publish step** now names the real cause when npm returns 404, states that
|
|
94
|
+
the package exists and the version is absent, prints the npmjs.com fields above,
|
|
95
|
+
and calls out the `npm publish` allowed-action requirement. A rejected or absent
|
|
96
|
+
token looks different (401, or `ENEEDAUTH`), and the step says that too.
|
|
97
|
+
- **The version-existence gate** now warns, at the point where it would otherwise
|
|
98
|
+
tell someone to bump the version, that a 404 also means "unauthorized". Bumping
|
|
99
|
+
to escape a 404 consumes a release number on both registries and still will not
|
|
100
|
+
publish while the publisher is unregistered.
|
|
101
|
+
|
|
102
|
+
Worth recording precisely: in **both** runs the version gate **passed**. The
|
|
103
|
+
tarball built, provenance was signed and submitted to the Sigstore transparency
|
|
104
|
+
log, and only the `PUT` failed. So both runs did prove the authentication failure,
|
|
105
|
+
and the fix is the registration above — not a version bump.
|
|
106
|
+
|
|
107
|
+
## [v2.2.4] - 2026-10-12
|
|
108
|
+
|
|
109
|
+
### Housekeeping — release alignment
|
|
110
|
+
|
|
111
|
+
- Publishes the post-2.2.3 repository state (single-shot automatic npm
|
|
112
|
+
publishing, #165) to PyPI and npm: the 2.2.3 upload predates that commit, so
|
|
113
|
+
both registries were one commit behind `main`. No behavioural change.
|
|
114
|
+
|
|
115
|
+
## [v2.2.3] - 2026-10-05
|
|
116
|
+
|
|
117
|
+
This release exists to exercise the OIDC trusted-publish path, now that the
|
|
118
|
+
npmjs.com trusted publisher for `scientific-computing-system` is registered.
|
|
119
|
+
|
|
120
|
+
The previous npm 2.2.2 was published in token mode and therefore carries no
|
|
121
|
+
attestation. Nothing about the launcher changed: `src/` is untouched since
|
|
122
|
+
2.2.2, and the only source change in this release is the version string itself.
|
|
123
|
+
|
|
10
124
|
## [v2.2.2] - 2026-10-05
|
|
11
125
|
|
|
12
126
|
Clears the last 17 open CodeQL alerts in this repository. None of them was a
|
|
@@ -5,7 +5,7 @@ title: "scientific-computing-system"
|
|
|
5
5
|
# Keep `version` in lockstep with pyproject.toml [project].version and
|
|
6
6
|
# src/cds/_version.py. scripts/check_version_discipline.py and
|
|
7
7
|
# scripts/check_version_lockstep.py enforce this.
|
|
8
|
-
version: 2.2.
|
|
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
|
-
Metadata-Version: 2.
|
|
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.
|
|
@@ -269,7 +272,7 @@ The package installs a `cds` command with 13 subcommands:
|
|
|
269
272
|
|
|
270
273
|
```console
|
|
271
274
|
$ cds --version
|
|
272
|
-
System version 2.2.
|
|
275
|
+
System version 2.2.3
|
|
273
276
|
$ cds constants # physical constants table
|
|
274
277
|
```
|
|
275
278
|
|
|
@@ -53,14 +53,17 @@ Both channels are published at the same version. They are **not** equally
|
|
|
53
53
|
verifiable:
|
|
54
54
|
|
|
55
55
|
- **PyPI** — carries a **PEP 740 provenance attestation** (Sigstore-signed,
|
|
56
|
-
binding the file digest to the publishing workflow). Verified on 2.2.
|
|
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.
|
|
@@ -173,7 +176,7 @@ The package installs a `cds` command with 13 subcommands:
|
|
|
173
176
|
|
|
174
177
|
```console
|
|
175
178
|
$ cds --version
|
|
176
|
-
System version 2.2.
|
|
179
|
+
System version 2.2.3
|
|
177
180
|
$ cds constants # physical constants table
|
|
178
181
|
```
|
|
179
182
|
|
|
@@ -29,8 +29,8 @@ It is also published to npm as `scientific-computing-system`, but that package i
|
|
|
29
29
|
|
|
30
30
|
| Threat | Mitigation |
|
|
31
31
|
|---|---|
|
|
32
|
-
| **Supply chain: malicious or substituted PyPI artifact** | The release workflow is the sole PyPI publish authority. It builds wheel + sdist on a GitHub-hosted runner from a hash-pinned toolchain, verifies package metadata/version, installs the built wheel, smoke-tests the installed CLI, and publishes through PyPI Trusted Publishing (OIDC). PyPI serves a PEP 740 provenance bundle for 2.2.
|
|
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,26 +120,48 @@ deterministic for a fixed toolchain, and this repository does not currently
|
|
|
114
120
|
claim that the published artifacts are bit-for-bit reproducible from source.*
|
|
115
121
|
Treat the published digests above as the pin to use, not a rebuild target.
|
|
116
122
|
|
|
117
|
-
####
|
|
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
|
-
|
|
133
|
+
Registered before 2.2.3, which is the first npm release published through it
|
|
134
|
+
with `--provenance`. Before that registration the default OIDC path could not
|
|
135
|
+
complete a publish, so 1.0.0–2.2.2 went out through the token fallback — a
|
|
136
|
+
long-lived token has no OIDC identity to attest, and those versions carry no
|
|
137
|
+
attestation. They stay in the registry as-is; the fix for a consumer is to
|
|
138
|
+
move to 2.2.3 or newer.
|
|
139
|
+
|
|
140
|
+
The registration step that is easy to miss: under **Settings → Trusted
|
|
141
|
+
Publisher → GitHub Actions**, the **`npm publish`** allowed action must be
|
|
142
|
+
enabled. npm's UI allows `npm stage publish` by default on new configurations
|
|
143
|
+
and makes direct `npm publish` opt-in, while this repository's workflow
|
|
144
|
+
publishes directly. A publisher registered without it still fails, with a
|
|
145
|
+
permission error rather than a 404.
|
|
146
|
+
|
|
147
|
+
**A missing registration looks like a missing version.** npm will not disclose
|
|
148
|
+
whether a package exists to an unauthenticated caller, so an unrecognised
|
|
149
|
+
trusted publisher produces the same `E404` as an unpublished version:
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
npm error 404 The requested resource 'scientific-computing-system@2.2.2' could
|
|
153
|
+
not be found or you do not have permission to access it.
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Do not bump the version in response to that line. A bad or missing *token* fails
|
|
157
|
+
differently — `401`, or `ENEEDAUTH` — so `E404` on a PUT for a package that is
|
|
158
|
+
known to exist means the registration, not the version.
|
|
159
|
+
|
|
160
|
+
**Practical consequence:** install 2.2.3 or newer from either channel and verify
|
|
161
|
+
its attestation bundle — PEP 740 on PyPI (per-file endpoint), the npm publish and
|
|
162
|
+
SLSA provenance bundles on npm. For a pinned older version the npm channel only
|
|
163
|
+
offers `dist.integrity`, which is an integrity pin and not proof of origin; use
|
|
164
|
+
PyPI's PEP 740 bundle there instead.
|
|
137
165
|
|
|
138
166
|
### Optional Backend Boundary
|
|
139
167
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
|
|
3
3
|
"@type": "SoftwareSourceCode",
|
|
4
4
|
"name": "scientific-computing-system",
|
|
5
|
-
"version": "2.2.
|
|
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",
|