unstd 3.0.0__tar.gz → 3.1.0__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.
- unstd-3.1.0/.github/workflows/release.yml +93 -0
- {unstd-3.0.0 → unstd-3.1.0}/.gitignore +3 -0
- {unstd-3.0.0 → unstd-3.1.0}/CHANGELOG.md +33 -1
- {unstd-3.0.0 → unstd-3.1.0}/PKG-INFO +7 -1
- {unstd-3.0.0 → unstd-3.1.0}/README.md +6 -0
- unstd-3.1.0/bench/billy-serde-legacy-results.json +3796 -0
- unstd-3.1.0/bench/billy-serde-optimization-results.md +162 -0
- unstd-3.1.0/bench/billy-serde-optimized-legacy-results.json +7856 -0
- unstd-3.1.0/bench/billy-serde-optimized-results.json +7804 -0
- unstd-3.1.0/bench/billy-serde-release-results.json +3776 -0
- unstd-3.1.0/bench/billy-serde-results.json +4136 -0
- unstd-3.1.0/bench/billy-serde-results.md +133 -0
- unstd-3.1.0/bench/billy_serde.py +553 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/cases.py +6 -6
- {unstd-3.0.0 → unstd-3.1.0}/bench/serde_profile.py +2 -0
- unstd-3.1.0/hatch_build.py +84 -0
- {unstd-3.0.0 → unstd-3.1.0}/pyproject.toml +15 -2
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/__init__.py +1 -1
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/serde/README.md +36 -24
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/serde/__init__.py +3 -2
- unstd-3.1.0/src/unstd/serde/_json_common.py +16 -0
- unstd-3.1.0/src/unstd/serde/_json_decode_native.h +411 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/serde/_json_encode.py +40 -9
- unstd-3.1.0/src/unstd/serde/_json_encode_native.h +119 -0
- unstd-3.1.0/src/unstd/serde/_json_lines_native.h +99 -0
- unstd-3.1.0/src/unstd/serde/_json_native.c +676 -0
- unstd-3.1.0/src/unstd/serde/_json_native.pyi +16 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/serde/jsonx.py +64 -86
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/serde/ndjson.py +14 -0
- unstd-3.1.0/tests/suites/assurance/gates/bench/test_billy_serde.py +155 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/planes/packaging/README.md +5 -3
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/planes/packaging/test_artifacts.py +116 -10
- unstd-3.1.0/tests/suites/product/serde/parity/test_jsonx_decode_fast.py +126 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/parity/test_jsonx_decode_parity.py +3 -3
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/parity/test_jsonx_fast.py +4 -11
- unstd-3.1.0/tests/suites/product/serde/parity/test_jsonx_native.py +555 -0
- unstd-3.1.0/tests/suites/product/serde/parity/test_jsonx_native_decode.py +331 -0
- unstd-3.1.0/tests/suites/product/serde/parity/test_jsonx_native_lifecycle.py +113 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/parity/test_jsonx_proof_boundaries.py +1 -16
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/unit/test_jsonx.py +1 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/unit/test_ndjson.py +127 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/packaging.py +4 -0
- {unstd-3.0.0 → unstd-3.1.0}/uv.lock +1 -1
- unstd-3.0.0/.github/workflows/release.yml +0 -48
- unstd-3.0.0/src/unstd/serde/_json_decode.py +0 -126
- unstd-3.0.0/tests/suites/product/serde/parity/test_jsonx_decode_fast.py +0 -224
- {unstd-3.0.0 → unstd-3.1.0}/.gitattributes +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/.github/workflows/chaos.yml +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/.github/workflows/ci.yml +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/.github/workflows/concurrency.yml +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/.github/workflows/fuzz.yml +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/LICENSE +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/NOTICE +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/__main__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/baseline.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/clone-ids-results.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/clone-ids-results.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/clone-ids-stdlib-results.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/clone_ids_profile.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/optimization-results.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/report.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/serde-results.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/serde-results.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/bench/timing.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/changelog.d/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/_extra.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/audio/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/audio/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/audio/wavx.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/clone/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/clone/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/clone/structural.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/compress/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/compress/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/compress/_backend.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/compress/_inflate.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/compress/gzipx.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/containers/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/containers/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/containers/persistent.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/containers/sorted.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/crypto/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/crypto/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/crypto/_blake3.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/crypto/digest.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/crypto/tls.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/crypto/token.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/fs/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/fs/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/ids/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/ids/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/ids/uid.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/iters/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/iters/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/iters/consecutive.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/iters/distinct.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/iters/reshape.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/iters/select.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/model/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/model/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/model/base.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/model/settings.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/pack/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/pack/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/pack/binpack.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/proc/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/proc/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/py.typed +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/rand/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/rand/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/rand/crypto.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/rand/draw.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/rex/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/rex/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/rex/_faithful.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/serde/b64.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/serde/structs.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/text/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/text/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/text/fuzz.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/time/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/time/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/time/timeutil.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/time/zoned.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/toml/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/toml/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/yaml/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/src/unstd/yaml/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/COVERAGE.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/P0.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/conftest.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/adversarial/chaos/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/adversarial/chaos/conftest.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/adversarial/chaos/test_clock_entropy.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/adversarial/chaos/test_fs_process.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/adversarial/chaos/test_streams.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/adversarial/concurrency/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/adversarial/concurrency/conftest.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/adversarial/concurrency/test_filesystem.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/adversarial/concurrency/test_ids.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/adversarial/concurrency/test_shared_state.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/adversarial/fuzz_replay/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/adversarial/fuzz_replay/test_corpus_replay.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/adversarial/resources/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/evals/performance/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/bench/test_bench.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/bench/test_clone_ids_profile.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/chaos/_campaign_fixtures.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/chaos/test_cli.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/chaos/test_execution.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/chaos/test_process_policy.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/chaos/test_schedule.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/chaos/test_workflow.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/concurrency/test_campaign.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/concurrency/test_workflow.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/fuzz/_execution_fixtures.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/fuzz/test_cli.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/fuzz/test_execution.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/fuzz/test_mutate.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/fuzz/test_parser_targets.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/fuzz/test_registry.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/fuzz/test_serde_targets.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/fuzz/test_workflow.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/packaging/test_package.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/packaging/test_startup.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/test_backend_policy.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/test_optional_collection.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/gates/test_suite_runner.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/planes/integration/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/planes/packaging/conftest.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/planes/packaging/test_consumers.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/planes/packaging/test_extras.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/planes/packaging/test_typing.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/security/pentest/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/security/pentest/test_tls_handshakes.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/assurance/security/structure/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/audio/properties/test_wav_quant.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/audio/regression/test_partial_frames.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/audio/unit/test_audio.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/clone/properties/test_clone_invariants.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/clone/unit/test_clone.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/compress/unit/test_gzipx.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/compress/unit/test_gzipx_edges.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/containers/unit/test_containers.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/crypto/regression/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/crypto/security/test_adverse.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/crypto/security/test_tls.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/crypto/security/test_token_boundary.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/crypto/unit/blake3_reference_vectors.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/crypto/unit/test_vectors.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/fs/integration/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/fs/integration/test_atomic_failures.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/fs/integration/test_atomic_interruption.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/fs/integration/test_filesystem_boundaries.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/fs/regression/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/fs/unit/test_fs.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/ids/properties/test_uuid7.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/ids/regression/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/ids/regression/test_fork.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/ids/unit/test_uid.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/iters/unit/test_iters.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/model/unit/test_model.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/pack/properties/test_pack_invariants.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/pack/unit/test_pack.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/proc/integration/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/proc/integration/test_process_boundaries.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/proc/integration/test_process_lifecycle.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/proc/regression/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/proc/regression/test_interrupt_reaping.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/proc/unit/test_proc.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/rand/unit/test_rand.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/rex/parity/test_fidelity.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/rex/regression/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/rex/regression/test_cache_concurrency.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/rex/regression/test_surrogate_region.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/rex/security/test_regex_boundary.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/rex/unit/test_rex.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/parity/test_b64_parity.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/parity/test_jsonx_encode_parity.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/properties/test_b64_parity.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/properties/test_serde_parity.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/regression/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/security/test_parser_boundaries.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/unit/test_b64.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/unit/test_ndjson_typed.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/serde/unit/test_structs.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/text/unit/test_distance.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/text/unit/test_text.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/time/unit/test_timeutil.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/time/unit/test_zoned.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/toml/properties/test_toml_invariants.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/toml/unit/test_toml.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/yaml/security/test_yaml_boundary.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/suites/product/yaml/unit/test_yaml.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/anchors.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/backends.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/chaos.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/chaos_clock_entropy.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/chaos_fs_process.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/chaos_streams.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/concurrency_filesystem.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/concurrency_ids.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/concurrency_shared_state.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/hypothesis/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/hypothesis/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/hypothesis/profiles.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/parser_cases.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/parser_worker.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/process.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/support/tls.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/__main__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/bench/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/chaos/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/chaos/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/chaos/__main__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/chaos/execution.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/chaos/worker.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/concurrency/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/concurrency/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/concurrency/__main__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/__main__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/atheris_driver.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/empty-input.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/encode-altchars-long.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/encode-altchars-pair.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/encode-altchars-short.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/encode-binary.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/mime-full-line.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/mime-second-line.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/missing-padding.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/mixed-alphabets.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/native-clean-long.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/native-filtered-long.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/padded-standard.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/padding-only.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/partial-group.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/raw-nontext-bytes.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/seeds.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/text-nonascii.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/text-surrogate.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/unused-pad-bits.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/url-alphabet.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/base64/url-ignored-junk.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/concatenated-expansion-budget.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/declared-expansion-budget.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/empty.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/forged-expansion-budget.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/generated-concatenation.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/generated-crc-error.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/generated-level-nine.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/generated-stored-level-zero.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/generated-truncation.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/raw-bad-signature.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/raw-concatenated.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/raw-crc-corruption.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/raw-empty-between-members.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/raw-empty-member.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/raw-garbage-second-member.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/raw-invalid-compression-method.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/raw-isize-corruption.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/raw-member.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/raw-oversized-extra-header.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/raw-truncated-deflate.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/raw-truncated-trailer.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/raw-zero-padding.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/gzip/seeds.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/empty-document.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/empty-input.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/encode-native-snapshot.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/encode-rich-values.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/escaped-lone-surrogate.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/integer-digit-limit.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/invalid-leading-zero.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/invalid-utf8.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/nesting-limit.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/nesting-outside-domain.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/nonfinite-extensions.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/ordered-duplicate-keys.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/parsed-encode-surrogate.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/seeds.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/signed-zero.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/text-lone-surrogate.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/truncated-object.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/utf16-big-endian.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/utf16-bom.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/utf32-bom.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/json/utf8-unicode.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/ascii-exotic-padding.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/blank-rows.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/crlf-rows.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/empty-input.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/encode-full-record-set.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/escaped-newline-value.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/invalid-utf8-row.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/maximum-physical-lines.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/mixed-invalid-rows.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/physical-lines-outside-domain.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/quoted-depth-guard.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/seeds.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/text-lone-surrogate.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/truncated-final-row.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/unicode-exotic-padding.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/unicode-line-separators.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/utf16-single-row.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/utf32-single-row.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/valid-final-newline.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/ndjson/valid-no-final-newline.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/alias-float16.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/alias-float64.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/alias-int16.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/alias-uint64.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/decode-double-specials-pipe.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/decode-half-specials.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/decode-single-specials-big.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/empty-multibyte-decode.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/empty.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/encode-f2-finite.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/encode-f4-finite.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/encode-f8-finite.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/encode-i1-little.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/encode-i2-native.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/encode-i4-little.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/encode-i8-native.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/encode-u1-big.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/encode-u2-pipe.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/encode-u4-big.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/encode-u8-pipe.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/partial-float32.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/partial-float64.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/partial-int16.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/pack/seeds.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/compile-bad-backreference.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/compile-bad-repeat.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/compile-dollar-divergence.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/compile-duplicate-name.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/compile-lone-surrogate.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/compile-nested-repeat.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/compile-posix-divergence.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/compile-unclosed-class.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/empty.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/fallback-backreference.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/fallback-lookahead.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/fallback-nullable-repeat.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/fallback-nullable.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/fallback-unicode-ignorecase.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/fallback-unicode-subject.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/literal-metacharacters.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/literal-octet-boundary.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/native-absolute-anchor.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/native-alternation.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/native-bytes-word.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/native-digit-width.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/native-literal-class.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/native-named-word.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/native-optional-capture.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/seeds.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/surrogate-region-finding.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/rex/surrogate-region-minimized.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/deterministic-order.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/empty-input.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/escaped-lone-surrogate.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/escaped-surrogate-pair.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/index-maximum.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/index-overflow.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/label-limit.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/label-over-limit.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/negative-index.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/relaxed-numeric-strings.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/row-list-limit.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/row-list-over-limit.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/row-list.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/seeds.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/sorted-order.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/strict-row.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/tagged-delete.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/tagged-put.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/tagged-unknown.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/truncated-row.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/unknown-field.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/utf16-rejected.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/utf32-rejected.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/utf8-key-error.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/utf8-value-error.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/structs/wrong-field-type.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/arbitrary-invalid-utf8.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/authentic-no-json-policy.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/authentic-opaque-token.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/changed-claims.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/claims-generation-limit.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/derive-authentic-tampering.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/derive-signed-malformed.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/empty-input.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/extra-separator.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/missing-separator.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/seeds.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/signature-pad-bit-alias.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/signed-payload-alias.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/signed-payload-junk.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/signed-payload-padding.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/signed-standard-alphabet.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/text-lone-surrogate.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/text-nonascii.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/truncated-signature.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/utf16-shaped-token.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/tokens/utf32-shaped-token.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/empty.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/model-boolean-false.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/model-boolean-true.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/model-empty.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/model-escapes.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/model-integer-boundary.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-array-of-tables.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-arrays-tables.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-basic.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-datetimes.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-dotted-key-redefinition.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-duplicate-key.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-empty.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-float-specials.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-invalid-utf8.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-nested-budget.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-nul.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-numeric-extrema.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-quoted-unicode-key.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-string-escapes.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/raw-unterminated-array.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/toml/seeds.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/declared-channel-overflow.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/declared-data-overflow.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/declared-riff-overflow.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/empty.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/generated-invalid-truncated-riff.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/generated-invalid-wrong-magic.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/generated-invalid-zero-channels.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/generated-mono-48000.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/generated-mono-8000.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/generated-quad-44100.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/generated-stereo-16000.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/generated-three-channel-22050.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/raw-empty-stereo.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/raw-foreign-flac.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/raw-missing-format.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/raw-mono-extrema.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/raw-quad-interleaved.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/raw-short-riff.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/raw-stereo-interleaved.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/raw-truncated-pcm.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/regression-declared-partial-pcm-sample.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/regression-fmt-extent-outside-riff.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/regression-inconsistent-pcm-byte-rate.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/regression-truncated-quad-frame.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/wav/seeds.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/alias-expansion-budget.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/alias-minimum.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/empty.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/generated-tag-python-apply.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/generated-tag-python-new.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/generated-tag-unknown.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/known-model-binary.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/known-model.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-alias-expansion-budget.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-basic.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-binary-timestamp.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-duplicate-key.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-float-specials.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-invalid-date-finding.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-invalid-utf16.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-merge-overrides.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-multiple-documents.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-nul.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-python-tag.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-recursive-alias.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-safe-aliases.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-semantic-key-collision.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-unclosed-flow.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/raw-unknown-tag.bin +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/corpus/yaml/seeds.json +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/execution.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/mutate.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/registry.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/registry.toml +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/targets/__init__.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/targets/base64.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/targets/gzip.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/targets/json.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/targets/ndjson.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/targets/pack.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/targets/rex.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/targets/structs.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/targets/tokens.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/targets/toml.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/targets/wav.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/targets/yaml.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/fuzz/worker.py +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/inventory.toml +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/mutation/README.md +0 -0
- {unstd-3.0.0 → unstd-3.1.0}/tests/tooling/runner.py +0 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Build and verify native wheels before publishing a version tag to PyPI.
|
|
2
|
+
#
|
|
3
|
+
# ONE-TIME SETUP: PyPI Trusted Publishing, no API token in this repo.
|
|
4
|
+
# On PyPI, add a trusted publisher for the `unstd` project pointing at this
|
|
5
|
+
# repository, workflow `release.yml`, environment `pypi`. Before the project
|
|
6
|
+
# exists this is a pending publisher under Your projects -> Publishing.
|
|
7
|
+
name: release
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
push:
|
|
11
|
+
tags: ["v*"]
|
|
12
|
+
workflow_dispatch:
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
# A tag push used to publish unconditionally — nothing stood between `git tag`
|
|
19
|
+
# and PyPI, and a release is the one artifact that cannot be taken back. The
|
|
20
|
+
# full CI gate (lint + type + the 3.12/3.13/3.14 matrix + the base-install
|
|
21
|
+
# fallback leg) runs first, by reference rather than by copy, so the bar is
|
|
22
|
+
# the same one every pull request clears.
|
|
23
|
+
gate:
|
|
24
|
+
uses: ./.github/workflows/ci.yml
|
|
25
|
+
permissions:
|
|
26
|
+
contents: read
|
|
27
|
+
|
|
28
|
+
wheels:
|
|
29
|
+
needs: gate
|
|
30
|
+
strategy:
|
|
31
|
+
fail-fast: false
|
|
32
|
+
matrix:
|
|
33
|
+
os: [ubuntu-latest, ubuntu-24.04-arm, macos-15-intel, macos-14, windows-latest, windows-11-arm]
|
|
34
|
+
runs-on: ${{ matrix.os }}
|
|
35
|
+
steps:
|
|
36
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
37
|
+
with:
|
|
38
|
+
persist-credentials: false
|
|
39
|
+
- uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
40
|
+
with:
|
|
41
|
+
enable-cache: false
|
|
42
|
+
version: "latest-known"
|
|
43
|
+
- name: Build and test CPython wheels
|
|
44
|
+
run: uvx --from cibuildwheel==4.3.1 cibuildwheel --output-dir dist
|
|
45
|
+
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
|
46
|
+
with:
|
|
47
|
+
name: wheels-${{ matrix.os }}
|
|
48
|
+
path: dist/*.whl
|
|
49
|
+
if-no-files-found: error
|
|
50
|
+
|
|
51
|
+
sdist:
|
|
52
|
+
needs: gate
|
|
53
|
+
runs-on: ubuntu-latest
|
|
54
|
+
steps:
|
|
55
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
56
|
+
with:
|
|
57
|
+
persist-credentials: false
|
|
58
|
+
- uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
59
|
+
with:
|
|
60
|
+
enable-cache: false
|
|
61
|
+
version: "latest-known"
|
|
62
|
+
- run: uv build --sdist
|
|
63
|
+
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
|
64
|
+
with:
|
|
65
|
+
name: source
|
|
66
|
+
path: dist/*.tar.gz
|
|
67
|
+
if-no-files-found: error
|
|
68
|
+
|
|
69
|
+
pypi:
|
|
70
|
+
needs: [wheels, sdist]
|
|
71
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
72
|
+
runs-on: ubuntu-latest
|
|
73
|
+
environment: pypi
|
|
74
|
+
permissions:
|
|
75
|
+
id-token: write
|
|
76
|
+
steps:
|
|
77
|
+
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
|
|
78
|
+
with:
|
|
79
|
+
path: dist
|
|
80
|
+
merge-multiple: true
|
|
81
|
+
- name: The tag agrees with package metadata
|
|
82
|
+
env:
|
|
83
|
+
TAG: ${{ github.ref_name }}
|
|
84
|
+
run: |
|
|
85
|
+
python - <<'PY'
|
|
86
|
+
import os, pathlib, tarfile, tomllib
|
|
87
|
+
source, = pathlib.Path("dist").glob("*.tar.gz")
|
|
88
|
+
with tarfile.open(source) as archive:
|
|
89
|
+
manifest, = (item for item in archive.getmembers() if item.name.endswith("/pyproject.toml"))
|
|
90
|
+
version = tomllib.loads(archive.extractfile(manifest).read().decode())["project"]["version"]
|
|
91
|
+
assert os.environ["TAG"] == "v" + version
|
|
92
|
+
PY
|
|
93
|
+
- uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
@@ -8,7 +8,7 @@ doc_radar:
|
|
|
8
8
|
- file: .github/workflows/ci.yml
|
|
9
9
|
contains: ['github.sha || github.ref', 'version: "latest-known"', 'uv sync --locked']
|
|
10
10
|
- file: .github/workflows/release.yml
|
|
11
|
-
contains: ['TAG: ${{ github.ref_name }}', '
|
|
11
|
+
contains: ['TAG: ${{ github.ref_name }}', 'Build and test CPython wheels']
|
|
12
12
|
- file: src/unstd/serde/structs.py
|
|
13
13
|
contains: ['Callable[[Decimal], object]', 'decimal_format: _DecimalFormat']
|
|
14
14
|
---
|
|
@@ -17,6 +17,38 @@ doc_radar:
|
|
|
17
17
|
|
|
18
18
|
<!-- towncrier release notes start -->
|
|
19
19
|
|
|
20
|
+
## [3.1.0] - 2026-10-20
|
|
21
|
+
|
|
22
|
+
### Performance
|
|
23
|
+
|
|
24
|
+
- JSON encoding can use an optional CPython native guard that checks exact
|
|
25
|
+
builtin trees and calls orjson while retaining the GIL. Larger text records
|
|
26
|
+
avoid 3.0.0's Python snapshot budget and stdlib fallback. Compiler-less source
|
|
27
|
+
builds retain the portable path; release wheels include the guard.
|
|
28
|
+
- Native default spacing preserves punctuation and escaped quotes inside text,
|
|
29
|
+
avoiding the stdlib fallback for larger string-heavy records.
|
|
30
|
+
- Untyped JSON decoding reuses msgspec's arbitrary-precision integer and correctly
|
|
31
|
+
rounded float decoder, with a bounded native proof enabling orjson for larger
|
|
32
|
+
records. CPython 3.14 native dispatch preserves Python function metadata and
|
|
33
|
+
falls back during instrumentation. Custom options, unsupported inputs and
|
|
34
|
+
native errors retain stdlib behavior.
|
|
35
|
+
- NDJSON writes use the same guarded encoder's native trailing-newline option,
|
|
36
|
+
avoiding redundant public dispatch and an extra output copy per record.
|
|
37
|
+
- Whole-blob NDJSON reads batch native parsing over strict physical newline
|
|
38
|
+
boundaries. Streaming reads, callbacks and error diagnostics keep their
|
|
39
|
+
existing behavior.
|
|
40
|
+
- Added an output-checked Billy fixture comparison with source and fixture
|
|
41
|
+
fingerprints, alternating before/after CPU batches, direct-call companions and
|
|
42
|
+
an optional release-regression gate. The measurement report retains residual
|
|
43
|
+
costs relative to the permissive 2.1.1 codec; no universal speedup or
|
|
44
|
+
zero-overhead compatibility claim is made. Public APIs are unchanged.
|
|
45
|
+
|
|
46
|
+
### Fixed
|
|
47
|
+
|
|
48
|
+
- Native codec reinitialization keeps earlier helpers' configuration checks and
|
|
49
|
+
Python fallbacks valid. Module destruction also releases watchers and owned
|
|
50
|
+
references when garbage collection has not run the clear hook first.
|
|
51
|
+
|
|
20
52
|
## [3.0.0] - 2026-10-19
|
|
21
53
|
|
|
22
54
|
### Breaking
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: unstd
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.1.0
|
|
4
4
|
Summary: stdlib-faithful accelerated replacements behind optional extras
|
|
5
5
|
Project-URL: Homepage, https://github.com/The-Billy-Company/unstd
|
|
6
6
|
Project-URL: Repository, https://github.com/The-Billy-Company/unstd
|
|
@@ -83,6 +83,12 @@ python3 -m pip install unstd
|
|
|
83
83
|
python3 -m pip install 'unstd[serde,ids,crypto]'
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
+
CPython platform wheels include an optional C guard for fast, compatible JSON
|
|
87
|
+
encoding. Source builds use it when a compiler is available and otherwise keep
|
|
88
|
+
the portable fallback. The runtime dependency set and public APIs are unchanged.
|
|
89
|
+
See the [Billy fixture measurements](bench/billy-serde-optimization-results.md)
|
|
90
|
+
for release comparisons, including remaining overhead relative to 2.1.1.
|
|
91
|
+
|
|
86
92
|
## Groups
|
|
87
93
|
|
|
88
94
|
| Group | Extra | Backend / fallback |
|
|
@@ -23,6 +23,12 @@ python3 -m pip install unstd
|
|
|
23
23
|
python3 -m pip install 'unstd[serde,ids,crypto]'
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
+
CPython platform wheels include an optional C guard for fast, compatible JSON
|
|
27
|
+
encoding. Source builds use it when a compiler is available and otherwise keep
|
|
28
|
+
the portable fallback. The runtime dependency set and public APIs are unchanged.
|
|
29
|
+
See the [Billy fixture measurements](bench/billy-serde-optimization-results.md)
|
|
30
|
+
for release comparisons, including remaining overhead relative to 2.1.1.
|
|
31
|
+
|
|
26
32
|
## Groups
|
|
27
33
|
|
|
28
34
|
| Group | Extra | Backend / fallback |
|