Skip to content

feat(sdk): split the shared runtime out of pyoaev into xtm-oaev-sdk (#303) - #363

Draft
Christophe Melchior (Kakudou) wants to merge 22 commits into
mainfrom
feat/303-sdk-init
Draft

Christophe Melchior (Kakudou) wants to merge 22 commits into
mainfrom
feat/303-sdk-init

Conversation

@Kakudou

@Kakudou Christophe Melchior (Kakudou) commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

Proposed changes

client-python was doing two jobs: the OpenAEV API client, and the shared runtime every collector and injector builds on. This PR cuts them apart. The SDK is built by moving the code out, not by rewriting it.

  • New package xtm-oaev-sdk (libs/xtm-oaev-sdk): the shared, client-free code of pyoaev, one capability per commit. The capabilities are configuration, common (errors, logging, JSON, SSL, enums, protocols), contracts (including the pyoaev.credential references), signatures, port_io (the wire models), daemons (BaseDaemon, PingAlive) and deprecation (make_deprecated_getattr).
  • Three layers per capability: public/ holds the adapters users import, seam/ the stable contracts (ports, data models, enums, versioned with a SEAM_VERSION), and _core/ the private implementations. The seam never imports public or _core. The issue's contracts/ layer is called seam/ here, because contracts is already one of the capabilities.
  • The collector and injector runtimes move to their own SDKs, in their own repositories: collectors-sdk (OpenAEV-Platform/collectors#) and injectors-sdk (OpenAEV-Platform/injectors#). xtm-oaev-sdk stays agnostic of both, and none of the SDKs imports pyoaev: the API client is injected (api_client=, transport=).
  • pyoaev goes back to being the API client. OpenAEV, pyoaev.apis, the backends, and the REST helpers (EncodedId, RequiredOptional, copy_dict, remove_none_from_dict, on_http_error) stay here. pyoaev now depends on xtm-oaev-sdk, collectors-sdk and injectors-sdk instead of pika, thefuzz, PyYAML, pydantic-settings and python_json_logger.
  • Nothing breaks for legacy code. Every former path is served by a PEP 562 __getattr__ shim. It returns the SDK object and fires a DeprecationWarning naming the new import, and importing pyoaev itself stays silent. test/test_legacy_surface.py holds the whole public surface of the released pyoaev against the branch. The pre-split tests of the moved code are kept verbatim against their legacy paths.
  • Seam guard: libs/xtm-oaev-sdk/test/seam/ fingerprints every public seam object (normalized AST, plus the JSON schemas of pydantic models). Any seam change fails a test until someone regenerates the golden on purpose, version bump included.
  • Packaging: the pyoaev wheel now ships pyoaev only. Until now it also shipped the top-level docs, scripts and test packages.
  • requires-python moves from >=3.11 to >=3.12 in all four packages, the version typing.override actually needs. Released pyoaev already failed to import on 3.11.
  • Docs live in libs/xtm-oaev-sdk:
    • docs/migration_guide.md: the full import table, client injection, renamed names;
    • docs/shim_strategy.md and docs/seam_strategy.md: how the shims and the layering work;
    • TDRs in docs/tdr/;
    • CONTRIBUTING.md, CHANGELOG.md, and the agent instructions.

Testing Instructions

  1. From the repository root, on Python 3.12 or later:
    python -m venv .venv && . .venv/bin/activate
    pip install -e ./libs/xtm-oaev-sdk -r libs/sdk-requirements.txt -e '.[dev]'
  2. Run the checks:
    isort --check-only . && black --check . && flake8 --ignore=E,W --extend-exclude=.venv .
    python -m pytest                          # pyoaev + xtm-oaev-sdk
    python -m pytest libs/xtm-oaev-sdk/test   # the SDK alone
  3. Check a legacy import: python -W always -c "from pyoaev.helpers import OpenAEVConfigHelper" warns and names injectors_sdk, while python -W error -c "import pyoaev" stays silent.

Verified locally:

  • the full suite passes on Python 3.12 and 3.14;
  • the built wheels install in fresh 3.12 and 3.14 environments, all legacy names resolve, and importing pyoaev stays silent;
  • the test suites of some collectors and injectors, taken from main, show no regression against the released pyoaev (i haven´t test them all :D).

Related issues

Checklist

  • I consider the submitted work as finished
  • I tested the code for its functionality
  • I wrote test cases for the relevant uses case
  • I added/update the relevant documentation (either on github or on notion)
  • Where necessary I refactored code to improve the overall quality
  • For bug fix -> I implemented a test that covers the bug

Further comments

Merge order. libs/sdk-requirements.txt (used by CircleCI and the coverage workflow) installs collectors-sdk and injectors-sdk from their feat/303-sdk-init branches. So:

  1. merge the collectors and injectors PRs first;
  2. repoint libs/sdk-requirements.txt from @feat/303-sdk-init to @main (or a tag) on this branch;
  3. merge this one.

Release: open question. pyoaev now hard-depends on xtm-oaev-sdk, collectors-sdk and injectors-sdk, and none of them is on PyPI yet. PyPI rejects any upload whose dependencies point to a URL ("Can't have direct dependency"), so pyoaev can't depend on the GitHub repositories directly. Before the next pyoaev release, we need to pick one of two options.

Option 1: publish the three SDKs on PyPI.

  • The target design: nothing else changes, and pyoaev keeps declaring the three packages.
  • It needs the three PyPI project names under the Filigran account, plus one upload job per SDK (the same twine upload as pyoaev).

Option 2: bundle the SDKs inside the pyoaev wheel.

  • No new PyPI project. A single pyoaev wheel carries pyoaev, xtm_oaev_sdk, collectors_sdk and injectors_sdk, and depends only on PyPI packages.

It needs these specific steps:

  1. pyproject.toml:
    • drop the three SDK dependencies and declare their own third-party libraries instead: pydantic-settings, PyYAML, python_json_logger, thefuzz and pika;
    • package the SDKs and their typing markers:
      [tool.setuptools.packages.find]
      include = ["pyoaev*", "xtm_oaev_sdk*", "collectors_sdk*", "injectors_sdk*"]
      
      [tool.setuptools.package-data]
      xtm_oaev_sdk = ["py.typed"]
      collectors_sdk = ["py.typed"]
      injectors_sdk = ["py.typed"]
  2. A bundling script, run at release time only (e.g. scripts/bundle_sdks.sh):
    • copy libs/xtm-oaev-sdk/xtm_oaev_sdk to the repository root;
    • shallow-clone collectors and injectors at a pinned tag or commit, and copy libs/collectors-sdk/collectors_sdk and libs/injectors-sdk/injectors_sdk to the root;
    • read the refs from libs/sdk-requirements.txt, so there's one place to bump them. They must be tags or commits, not branches.
  3. .gitignore: ignore the three copies at the root, so they're never committed.
  4. CircleCI build job: run the script right before python3 -m build. deploy keeps uploading dist/ as today.
  5. Development and the test CI stay as they are: they already install the SDKs explicitly (./libs/xtm-oaev-sdk plus libs/sdk-requirements.txt). Never run the bundling script before an editable install, or each SDK gets installed twice.
  6. Docs: update the "Pick your dependencies" table of docs/migration_guide.md, and the TDR pyoaev-hard-depends-on-the-sdks-during-deprecation (or supersede it with a TDR recording the bundling).

Each commit holds one capability or one concern, so the PR can be read commit by commit.

@Kakudou Christophe Melchior (Kakudou) added filigran team Item from the Filigran team. architecture improvement Architecture refactor or improvement is needed. tech foundation Linked to tech foundation. labels Oct 15, 2026
Copilot AI balanced review requested due to automatic review settings October 15, 2026 11:18
@Kakudou Christophe Melchior (Kakudou) added the do not merge Do not merge until this label is removed. label Oct 15, 2026
@Kakudou
Christophe Melchior (Kakudou) marked this pull request as draft October 15, 2026 11:20

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

One or more issues must be addressed before approval.

2 open findings
What changed in this PR

Separates the shared runtime from the OpenAEV API client while retaining deprecated legacy imports.

Changes:

  • Introduces a layered SDK with versioned contracts.
  • Replaces moved implementations with compatibility shims.
  • Updates packaging, CI, tests, and migration decisions.

SDK/ below denotes libs/xtm-oaev-sdk/.

File Description
test/​test_legacy_surface.py Updated as part of this pull request.
test/​generate_legacy_surface.py Updated as part of this pull request.
pyproject.toml Updated as part of this pull request.
pyoaev/​signatures/​signature_type.py Updated as part of this pull request.
pyoaev/​signatures/​signature_match.py Updated as part of this pull request.
pyoaev/​signatures/​ai_marker.py Updated as part of this pull request.
pyoaev/​signatures/​__init__.py Updated as part of this pull request.
pyoaev/​security_domain/​types.py Updated as part of this pull request.
pyoaev/​daemons/​__init__.py Updated as part of this pull request.
pyoaev/​credential/​utils.py Updated as part of this pull request.
pyoaev/​credential/​types.py Updated as part of this pull request.
pyoaev/​credential/​__init__.py Updated as part of this pull request.
pyoaev/​contracts/​contract_utils.py Updated as part of this pull request.
pyoaev/​contracts/​contract_builder.py Updated as part of this pull request.
pyoaev/​contracts/​__init__.py Updated as part of this pull request.
pyoaev/​configuration/​sources.py Updated as part of this pull request.
pyoaev/​configuration/​__init__.py Updated as part of this pull request.
pyoaev/​client.py Updated as part of this pull request.
pyoaev/​base.py Updated as part of this pull request.
pyoaev/​apis/​vulnerability.py Updated as part of this pull request.
pyoaev/​apis/​user.py Updated as part of this pull request.
pyoaev/​apis/​team.py Updated as part of this pull request.
pyoaev/​apis/​tag.py Updated as part of this pull request.
pyoaev/​apis/​signature.py Updated as part of this pull request.
pyoaev/​apis/​security_platform.py Updated as part of this pull request.
pyoaev/​apis/​payload.py Updated as part of this pull request.
pyoaev/​apis/​kill_chain_phase.py Updated as part of this pull request.
pyoaev/​apis/​injector_contract.py Updated as part of this pull request.
pyoaev/​apis/​inject.py Updated as part of this pull request.
pyoaev/​apis/​inject_expectation/​model/​__init__.py Updated as part of this pull request.
pyoaev/​apis/​inject_expectation/​__init__.py Updated as part of this pull request.
pyoaev/​apis/​inject_expectation_trace.py Updated as part of this pull request.
pyoaev/​apis/​endpoint.py Updated as part of this pull request.
pyoaev/​apis/​document.py Updated as part of this pull request.
pyoaev/​apis/​cve.py Updated as part of this pull request.
pyoaev/​apis/​collector.py Updated as part of this pull request.
pyoaev/​apis/​attack_pattern.py Updated as part of this pull request.
pyoaev/​apis/​ai_target.py Updated as part of this pull request.
pyoaev/​apis/​__init__.py Updated as part of this pull request.
pyoaev/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​seam/​signatures/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​seam/​port_io/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​seam/​deprecation/​ports.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​seam/​deprecation/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​seam/​daemons/​ports.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​seam/​daemons/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​seam/​contracts/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​seam/​configuration/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​seam/​common/​security_domains.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​seam/​common/​ports.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​seam/​common/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​seam/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​py.typed Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​public/​deprecation.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​signatures/​targets.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​signatures/​marker.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​signatures/​addresses.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​signatures/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​deprecation/​shims.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​deprecation/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​daemons/​runtime.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​daemons/​heartbeat.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​daemons/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​contracts/​serializer.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​contracts/​credentials.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​contracts/​assembly.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​contracts/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​configuration/​truthiness.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​configuration/​sources.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​configuration/​settings_sources.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​configuration/​resolver.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​configuration/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​common/​logging_setup.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​common/​encoding.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​common/​certificates.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​common/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​_core/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​xtm_oaev_sdk/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​test_boundaries.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​test_signature_type.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​test_signature_match.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​test_ai_signature_types.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​shim/​test_signature_type.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​shim/​test_signature_match.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​shim/​test_ai_signature_types.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​shim/​test_ai_marker.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​shim/​features/​signature_manager_post_execution.feature Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​shim/​constraints/​signature_manager_pre_execution_constraints.feature Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​shim/​constraints/​signature_manager_post_execution_constraints.feature Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​shim/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​features/​signature_manager_post_execution.feature Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​features/​signature_manager_ip_resolution.feature Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​constraints/​signature_manager_pre_execution_constraints.feature Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​constraints/​signature_manager_post_execution_constraints.feature Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​constraints/​signature_manager_ip_resolution_constraints.feature Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​signatures/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​seam/​test_seam_golden.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​seam/​test_seam_closed.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​seam/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​daemons/​test_ping_alive.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​daemons/​shim/​test_ping_alive.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​daemons/​shim/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​daemons/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​test_primitive_type.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​test_credential_utils.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​test_credential_types.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​test_contract_referenced_credential.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​test_contract_output_types.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​test_contract_element_argument_type.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​shim/​test_primitive_type.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​shim/​test_credential_utils.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​shim/​test_credential_types.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​shim/​test_contract_referenced_credential.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​shim/​test_contract_output_types.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​shim/​test_contract_element_argument_type.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​shim/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​contracts/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​configuration/​shim/​test_sources.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​configuration/​shim/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​configuration/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​common/​test_ssl_utils.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​common/​test_exceptions.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​common/​shim/​test_utils.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​common/​shim/​test_exceptions.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​common/​shim/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​test/​common/​__init__.py Updated as part of this pull request.
libs/​xtm-oaev-sdk/​pyproject.toml Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​xtm-oaev-sdk-stays-connector-agnostic.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​shims-return-the-identical-sdk-object.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​seam-holds-data-contracts-and-their-own-invariants.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​seam-changes-are-versioned-contract-changes.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​sdks-never-import-pyoaev.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​pyoaev-hard-depends-on-the-sdks-during-deprecation.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​public-seam-core-dependency-rule.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​public-class-extends-seam-data.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​pass-bound-callables-to-keep-dispatch.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​no-breaking-change-for-legacy-pyoaev-code.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​legacy-surface-guarded-from-the-release.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​legacy-patch-targets-are-part-of-the-surface.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​legacy-names-served-by-pep562-module-getattr.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​importing-pyoaev-stays-silent.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​import-from-the-package-root.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​every-sdk-module-imports-alone.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​every-behaviour-behind-a-port.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​cross-process-seams-pin-their-json-schemas.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​colliding-names-get-a-capability-prefix.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​docs/​tdr/​adapters-keep-the-user-facing-shape.tdr.md Updated as part of this pull request.
libs/​xtm-oaev-sdk/​CHANGELOG.md Updated as part of this pull request.
libs/​sdk-requirements.txt Updated as part of this pull request.
.github/​workflows/​coverage.yml Updated as part of this pull request.
.circleci/​config.yml Updated as part of this pull request.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

- name: Install dependencies
run: |
uv venv && uv pip install -e '.[dev]' coverage
uv venv && uv pip install -e ./libs/xtm-oaev-sdk -r libs/sdk-requirements.txt -e '.[dev]' coverage

# The expectation models moved to collectors_sdk; their legacy names here
# resolve to the identical objects and emit a DeprecationWarning on access.
__getattr__ = _make_deprecated_getattr(
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

architecture improvement Architecture refactor or improvement is needed. do not merge Do not merge until this label is removed. filigran team Item from the Filigran team. tech foundation Linked to tech foundation.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(sdk): Creation of the SDK to gave client-python better scope/limits

3 participants