Repository navigation
Releases
v0.3.1 — campus.common.protocol
New campus.common.protocol module: wire-protocol constants (journey/device cookie names + TTLs; trace/journey/device header names) as fixed, deployment-invariant vocabulary (campus#1041). Single source of truth for header names formerly mirrored in campus.flask_campus.propagation, campus.audit.middleware.tracing, and campus_python.tracing. Additive (patch); lean-import contract untouched.
campus-common 0.3.0
Breaking: campus.common.services no longer ships a per-environment BASE_URLS table. Campus is deployment-agnostic — the shared kernel must not bake in deployment topology (college-pinned origins). The environment is the single source of truth: CAMPUS__URL / _URL / CAMPUS_BASE_URL / BASE_URL. An unconfigured service raises ValueError naming the variables to set. Everything else a consumer needs about a service comes from its OpenAPI description at the service's standard path. See CHANGELOG for details.
campus-common 0.2.2
New campus.common.services module: the service URL registry. One resolver (get_base_url / resolve_base_url) owns where Campus services live, replacing the URL tables duplicated across campus.config, the campus_python SDK, and per-app resolvers.
- Resolution precedence:
CAMPUS_<SERVICE>_URL><SERVICE>_URL>CAMPUS_BASE_URL>BASE_URL> the per-environmentBASE_URLStable. CAMPUS_-prefixed forms are primary (collision-safe on shared hosts); bare forms are aliases for dedicated hosts.CAMPUS_BASE_URL/BASE_URLsupport gateway / single-server deployments: one origin fronting auth+api+audit; callers append route prefixes themselves.- Override/base values must be bare origins, validated like
PUBLIC_URL; errors name the variable. get_base_urlkeeps deployment semantics (testing + in-process self-calls resolve to the canonical origin);resolve_base_urlis the client semantics the SDK needs.env.pydeclares the override variables. Environment resolution:ENV>CAMPUS_ENV> development (SDK duality, unified).
Additive change → patch bump per the versioning policy. Full notes in CHANGELOG.md.
campus-common 0.2.1
Interface unchanged (same all as 0.2.0). utils submodules other than url now load lazily via module getattr, so import campus.common no longer loads bcrypt — restores the lean-import contract guarded by campus-suite's test_import_common_is_lean. Patch bump per the versioning contract.
campus-common 0.2.0
First locked public-interface release.
- Interface now CI-enforced: closed-world
__all__tests + checked-in manifest (tests/interface_manifest.json). Interface changes = deliberate commits with CHANGELOG entries and the version bump the diff dictates (additive -> patch, breaking -> minor). - Promoted to
__all__: utils.{uid, secret, utc_time, datacls}, errors.{handlers, base}, validation.record, schema.{base, openapi}, full env surface (incl. documented module-__getattr__variable lookup). utils.diff->utils._diff(private; zero consumers).
Install: pip install https://github.com/nyjc-computing/campus-common/releases/download/v0.2.0/campus_common-0.2.0-py3-none-any.whl
Versioning: strict 0.x until 1.0 — patch = additive, minor = breaking-allowed. See CHANGELOG.md. Refs nyjc-computing/campus#970.
campus-common 0.1.0
Initial release: campus.common carved from the campus monorepo (env, errors, introspect, schema, utils, validation). PEP 420 namespace portion; stdlib + bcrypt only; flask stays lazy (#861). Refs nyjc-computing/campus#970 phase 3.