Skip to main content

behavior-contracts (Python)

The COMMON "thin core" runtime primitives from runtime-boundary.md, ported to Python from the TypeScript reference implementation (ts/src/*) with identical semantics.

This package contains only the DSL-agnostic primitives that WS1 classified as COMMON. It has zero backend (DynamoDB / graphddb) dependencies — no boto3, no key marshalling, no retry tuning, no hydrate, no bundle format. Those stay in the consumer (graphddb).

Public API

from behavior_contracts import (
    validate_envelope,     # spec-version fail-closed check
    evaluate_expression,   # expression-ir.md evaluator (i64-checked, truncated %, code-point cmp)
    render_template,        # {param} rendering (strict, Python str() parity)
    run_plan, final_tree,   # execution-plan skeleton (stage / Skip propagation / Policy Kind)
    canonical_value,        # key identity (top-level key sort)
    canonical_json,         # fingerprint (recursive key sort)
    py_float_repr,          # CPython repr(float) canonical decimal
    assert_portable,        # Portability Guard
    decode_value, deep_equals,  # conformance runner adapter (int/float type distinction)
    encode_value, resolve_partial, cmp_code_points,
    SPEC_VERSIONS, ENVELOPE_SPEC_VERSION,
)

Each COMMON primitive raises a typed *Failure exception carrying a .code string matching the conformance protocol's failure-code set.

§8 cross-language traps this port handles

  • % sign: normative mod is truncated (dividend sign). Python's native % returns the divisor sign, so evaluate_expression({"mod":[-7,2]}) == -1 (native -7 % 2 == 1). Implemented via truncated-quotient correction; float mod via math.fmod.
  • int is checked i64: Python int is arbitrary-precision, so i64 bounds are enforced manually; overflow → INT_OVERFLOW.
  • string comparison: code-point order. Python str compares by code point already (no UTF-16 surrogate hazard) — verified in tests.
  • NaN/Inf → Failure; div always float with |int| > 2^53 widening → PRECISION_LOSS; py_float_repr matches CPython repr(float) byte-for-byte (parametrized parity tests).
  • bool is not int: isinstance(x, bool) is checked before int everywhere (Python's bool <: int).

Conformance

Runs the 8 shared suites (173 vectors) from ../conformance/vectors/*.json through this package per ../conformance/PROTOCOL.md, including the pre-flight version fail-closed sweep.

python -m behavior_contracts.conformance      # → "173 passed, 0 failed / 173 vectors across 8 suites"
# or the console script:
behavior-contracts-conformance

Override the vectors location with DSL_CONTRACTS_VECTORS=/path/to/vectors.

Tests

pip install -e ".[test]"
python -m pytest        # unit tests over the public API + the conformance runner as a test

Docker integration: N/A

This package has no external service dependency (no database, no network) — it is pure in-process logic over JSON-shaped values. There is therefore nothing for a docker-compose integration harness to stand up; the conformance runner and pytest exercise the full surface in-process. (The graphddb adapter PoC in WS4 Part B is where docker-backed integration applies, because graphddb talks to DynamoDB Local.)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

behavior_contracts-0.8.5.tar.gz (54.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

behavior_contracts-0.8.5-py3-none-any.whl (47.7 kB view details)

Uploaded Python 3

File details

Details for the file behavior_contracts-0.8.5.tar.gz.

File metadata

  • Download URL: behavior_contracts-0.8.5.tar.gz
  • Upload date:
  • Size: 54.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for behavior_contracts-0.8.5.tar.gz
Algorithm Hash digest
SHA256 f3939c8cd2c4d85491619e4dbb2720ea6d7ac1a95b98cb3dbe194cbf631f9dea
MD5 64c5ed1420e346926260c02124767d60
BLAKE2b-256 6f3bdd55170a346149789dc2be2958e97ff593f1d0dd1ca006b8f8e88c28f246

See more details on using hashes here.

File details

Details for the file behavior_contracts-0.8.5-py3-none-any.whl.

File metadata

File hashes

Hashes for behavior_contracts-0.8.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1aba51bf5f80ccadd652c049cabf108f836ccd8409d49da9c0c7b31e29caaabf
MD5 f6b5d4d5380edbe35799754bef6afc6b
BLAKE2b-256 3571866e529cdbceef5e9b34383a417345a41c75274ae2feb3b6c7a645307738

See more details on using hashes here.

Release history Release notifications | RSS feed

0.11.19

2 files

0.11.18

2 files

0.11.17

2 files

0.11.16

2 files

0.11.15

2 files

0.11.14

2 files

0.11.13

2 files

0.11.12

2 files

0.11.11

2 files

0.11.10

2 files

0.11.9

2 files

0.11.8

2 files

0.11.7

2 files

0.11.6

2 files

0.11.5

2 files

0.11.4

2 files

0.11.3

2 files

0.11.2

2 files

0.11.1

2 files

0.11.0

2 files

0.10.1

2 files

0.10.0

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.17

2 files

0.8.16

2 files

0.8.15

2 files

0.8.14

2 files

0.8.13

2 files

0.8.12

2 files

0.8.11

2 files

0.8.10

2 files

0.8.9

2 files

0.8.8

2 files

0.8.7

2 files

0.8.6

2 files

This release

0.8.5 This release

2 files

0.8.4

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.3

2 files

0.1.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page