Skip to content

Commit fb4ece4

Browse files
Add architecture guard for shared model request helper reuse
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent ab433f3 commit fb4ece4

File tree

3 files changed

+55
-0
lines changed

3 files changed

+55
-0
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ This runs lint, format checks, compile checks, tests, and package build.
133133
- `tests/test_manager_transport_boundary.py` (manager transport boundary enforcement through shared request helpers),
134134
- `tests/test_mapping_keys_access_usage.py` (centralized key-iteration boundaries),
135135
- `tests/test_mapping_reader_usage.py` (shared mapping-read parser usage),
136+
- `tests/test_model_request_internal_reuse.py` (request-helper internal reuse of shared model request helper primitives),
136137
- `tests/test_optional_serialization_helper_usage.py` (optional model serialization helper usage enforcement),
137138
- `tests/test_page_params_helper_usage.py` (paginated manager page-params helper usage enforcement),
138139
- `tests/test_plain_list_helper_usage.py` (shared plain-list normalization helper usage enforcement),

tests/test_architecture_marker_usage.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"tests/test_manager_transport_boundary.py",
2424
"tests/test_mapping_reader_usage.py",
2525
"tests/test_mapping_keys_access_usage.py",
26+
"tests/test_model_request_internal_reuse.py",
2627
"tests/test_tool_mapping_reader_usage.py",
2728
"tests/test_display_helper_usage.py",
2829
"tests/test_binary_file_open_helper_usage.py",
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
from pathlib import Path
2+
3+
import pytest
4+
5+
pytestmark = pytest.mark.architecture
6+
7+
8+
MODULES_THAT_MUST_REUSE_SHARED_MODEL_REQUEST_HELPERS = (
9+
"hyperbrowser/client/managers/computer_action_request_utils.py",
10+
"hyperbrowser/client/managers/extension_request_utils.py",
11+
"hyperbrowser/client/managers/job_request_utils.py",
12+
"hyperbrowser/client/managers/profile_request_utils.py",
13+
"hyperbrowser/client/managers/team_request_utils.py",
14+
)
15+
16+
MODULE_DISALLOWED_MARKERS = {
17+
"hyperbrowser/client/managers/computer_action_request_utils.py": (
18+
"client.transport.",
19+
"parse_response_model(",
20+
),
21+
"hyperbrowser/client/managers/extension_request_utils.py": (
22+
"client.transport.post(",
23+
"parse_response_model(",
24+
),
25+
"hyperbrowser/client/managers/job_request_utils.py": (
26+
"client.transport.",
27+
"parse_response_model(",
28+
),
29+
"hyperbrowser/client/managers/profile_request_utils.py": (
30+
"client.transport.",
31+
"parse_response_model(",
32+
),
33+
"hyperbrowser/client/managers/team_request_utils.py": (
34+
"client.transport.",
35+
"parse_response_model(",
36+
),
37+
}
38+
39+
40+
def test_request_helpers_reuse_shared_model_request_helpers():
41+
violating_modules: list[str] = []
42+
for module_path in MODULES_THAT_MUST_REUSE_SHARED_MODEL_REQUEST_HELPERS:
43+
module_text = Path(module_path).read_text(encoding="utf-8")
44+
if "model_request_utils import" not in module_text:
45+
violating_modules.append(module_path)
46+
continue
47+
if any(
48+
marker in module_text
49+
for marker in MODULE_DISALLOWED_MARKERS[module_path]
50+
):
51+
violating_modules.append(module_path)
52+
53+
assert violating_modules == []

0 commit comments

Comments
 (0)