Files
wehub-resource-sync 4b6817381b
Benchmark image — build + push to ECR (any adapter) / build + push (push) Waiting to run
CI / quality (ubuntu-latest) (push) Waiting to run
CI / test (tools-runtime) (push) Waiting to run
CI / test (e2e-general) (push) Waiting to run
CI / test (cli-runtime) (push) Waiting to run
CI / test (e2e-provider-and-openclaw) (push) Waiting to run
CI / test (integrations-and-misc) (push) Waiting to run
CI / coverage-report (push) Blocked by required conditions
CI / test-kubernetes (push) Waiting to run
CI / should-run-thorough (push) Waiting to run
CI / test-thorough (cloudwatch-demo) (push) Blocked by required conditions
CI / test-thorough (flink-ecs) (push) Blocked by required conditions
CI / test-thorough (upstream-lambda) (push) Blocked by required conditions
CI / test-thorough (prefect-ecs-fargate) (push) Blocked by required conditions
CodeQL / Analyze (python) (push) Waiting to run
Release / build-binaries (zip, opensre.exe, onefile, windows-latest, windows-x64) (push) Blocked by required conditions
Release / publish-release (push) Blocked by required conditions
Release / publish-main-release (push) Blocked by required conditions
Release / prepare (push) Waiting to run
Release / verify (push) Blocked by required conditions
Release / build-python-dist (push) Blocked by required conditions
Release / build-binaries (tar.gz, opensre, onedir, macos-15-intel, darwin-x64) (push) Blocked by required conditions
Release / build-binaries (tar.gz, opensre, onedir, macos-latest, darwin-arm64) (push) Blocked by required conditions
Release / build-binaries (tar.gz, opensre, onedir, ubuntu-22.04, linux-x64) (push) Blocked by required conditions
Release / build-binaries (tar.gz, opensre, onedir, ubuntu-22.04-arm, linux-arm64) (push) Blocked by required conditions
Synthetic Deterministic Tests / Synthetic offline (deterministic) (push) Waiting to run
Interactive Shell Live (PR + post-merge) / turn-checks (no-LLM) (push) Waiting to run
Interactive Shell Live (PR + post-merge) / turn-live shard ${{ matrix.shard_index }} (push) Waiting to run
CI (OpenClaw E2E) / openclaw test (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:10:45 +08:00

56 lines
1.7 KiB
Python

"""T-1 vendor-first layout invariant.
Every vendor integration must live in a package
(``integrations/<vendor>/`` with ``config``/``client``/``verifier``/``tools``
as needed), never as a flat ``integrations/<vendor>.py`` module. Only the
shared cross-cutting infra modules below are allowed to sit flat under
``integrations/``.
This guards the T-18 completion: a future PR that reintroduces a flat vendor
module (the pattern C-14/C-15/C-16 and this migration removed) fails here.
"""
from __future__ import annotations
from pathlib import Path
INTEGRATIONS_DIR = Path(__file__).resolve().parents[2] / "integrations"
# Cross-cutting infra that is intentionally flat — NOT vendor integrations.
# `port.py` and `harness_adapters.py` are Ports & Adapters wiring, not SaaS
# vendors.
ALLOWED_FLAT_MODULES = frozenset(
{
"catalog.py",
"cli.py",
"config_models.py",
"daily_update.py",
"effective_models.py",
"harness_adapters.py",
"mcp_streamable_http_compat.py",
"messaging_security.py",
"models.py",
"port.py",
"probes.py",
"registry.py",
"selectors.py",
"store.py",
"verify.py",
}
)
def test_no_flat_vendor_modules() -> None:
flat = {
p.name
for p in INTEGRATIONS_DIR.glob("*.py")
if not p.name.startswith("_") # skip dunder + private infra helpers
}
stray = sorted(flat - ALLOWED_FLAT_MODULES)
assert not stray, (
"Flat vendor modules found under integrations/: "
f"{stray}. Move each into a vendor package "
"(integrations/<vendor>/ with config.py/client.py/verifier.py), "
"delete the flat module, and re-export from __init__.py (T-18)."
)