diff --git a/pyproject.toml b/pyproject.toml index 9076760153a..c770bad7eb4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -236,6 +236,7 @@ dev = [ "pytest-timeout==2.4.0", "vcrpy==8.2.1", "pytest-recording==0.13.4", + "tenacity==8.5.0", ] e2e-dev = [ "playwright==1.61.0", @@ -267,7 +268,6 @@ ci = [ # These are lazily imported at call sites; keep them out of core deps to # avoid bloating the base SDK install (google-generativeai pulls grpcio + # protobuf, Pillow is a compiled C extension). - "tenacity==8.5.0", "google-generativeai==0.8.6", "Pillow==12.3.0; python_version == '3.10'", "Pillow==13.0.0; python_version >= '3.11'", diff --git a/tests/AGENTS.md b/tests/AGENTS.md index ac21776bdcc..72096c12396 100644 --- a/tests/AGENTS.md +++ b/tests/AGENTS.md @@ -32,6 +32,11 @@ behind an `if` (a poll that ends in `pytest.fail` is fine), `except Exception` a What the assertion depends on goes in the test. Everything else in conftest. A rate in a fixture three directories up makes a failed assertion unreadable. Extend the file that already covers the behaviour +A module `make bootstrap` leaves out, meaning the `ci` group and the extras, is reached behind +`pytest.importorskip("", reason="")`. A bootstrapped worktree then skips the test +instead of reporting a ModuleNotFoundError that reads like a real red. `make install-test-deps` installs +every group and extra + ## Writing it so a human can read it Name says what broke: `test_send_batched_with_valid_data` says nothing. Build, one call, assert, on one diff --git a/uv.lock b/uv.lock index 03403828225..01cb4df60a3 100644 --- a/uv.lock +++ b/uv.lock @@ -4788,7 +4788,6 @@ ci = [ { name = "pylint" }, { name = "pytest-codspeed" }, { name = "pytest-retry" }, - { name = "tenacity" }, { name = "traceloop-sdk" }, ] dev = [ @@ -4825,6 +4824,7 @@ dev = [ { name = "responses" }, { name = "respx" }, { name = "ruff" }, + { name = "tenacity" }, { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "types-boto3", extra = ["bedrock", "bedrock-agent", "bedrock-runtime", "kms", "s3", "sagemaker-runtime", "sts"] }, { name = "types-pyyaml" }, @@ -5011,7 +5011,6 @@ ci = [ { name = "pylint", specifier = "==4.0.5" }, { name = "pytest-codspeed", specifier = "==4.3.0" }, { name = "pytest-retry", specifier = "==1.7.0" }, - { name = "tenacity", specifier = "==8.5.0" }, { name = "traceloop-sdk", specifier = "==0.34.0" }, ] dev = [ @@ -5047,6 +5046,7 @@ dev = [ { name = "responses", specifier = "==0.26.0" }, { name = "respx", specifier = "==0.22.0" }, { name = "ruff", specifier = "==0.15.3" }, + { name = "tenacity", specifier = "==8.5.0" }, { name = "tomli", marker = "python_full_version < '3.11'", specifier = "==2.4.1" }, { name = "types-boto3", extras = ["bedrock", "bedrock-agent", "bedrock-runtime", "kms", "s3", "sagemaker-runtime", "sts"], specifier = "==1.43.30" }, { name = "types-pyyaml", specifier = "==6.0.12.20250915" },