Skip to content

Commit edb47b8

Browse files
Centralize paginated page param construction across managers
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent 204d2b1 commit edb47b8

File tree

13 files changed

+103
-8
lines changed

13 files changed

+103
-8
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ This runs lint, format checks, compile checks, tests, and package build.
9595
- `tests/test_mapping_keys_access_usage.py` (centralized key-iteration boundaries),
9696
- `tests/test_mapping_reader_usage.py` (shared mapping-read parser usage),
9797
- `tests/test_optional_serialization_helper_usage.py` (optional model serialization helper usage enforcement),
98+
- `tests/test_page_params_helper_usage.py` (paginated manager page-params helper usage enforcement),
9899
- `tests/test_plain_list_helper_usage.py` (shared plain-list normalization helper usage enforcement),
99100
- `tests/test_plain_type_guard_usage.py` (`str`/`int` guardrail enforcement via plain-type checks),
100101
- `tests/test_plain_type_identity_usage.py` (direct `type(... ) is str|int` guardrail enforcement via shared helpers),

hyperbrowser/client/managers/async_manager/crawl.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
poll_until_terminal_status_async,
1010
retry_operation_async,
1111
)
12+
from ..page_params_utils import build_page_batch_params
1213
from ..job_pagination_utils import (
1314
build_job_paginated_page_merge_callback,
1415
initialize_job_paginated_response,
@@ -117,7 +118,10 @@ async def start_and_wait(
117118
operation_name=operation_name,
118119
get_next_page=lambda page: self.get(
119120
job_start_resp.job_id,
120-
GetCrawlJobParams(page=page, batch_size=100),
121+
params=build_page_batch_params(
122+
GetCrawlJobParams,
123+
page=page,
124+
),
121125
),
122126
get_current_page_batch=lambda page_response: (
123127
page_response.current_page_batch

hyperbrowser/client/managers/async_manager/scrape.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
retry_operation_async,
1111
wait_for_job_result_async,
1212
)
13+
from ..page_params_utils import build_page_batch_params
1314
from ..job_pagination_utils import (
1415
build_job_paginated_page_merge_callback,
1516
initialize_job_paginated_response,
@@ -124,7 +125,10 @@ async def start_and_wait(
124125
operation_name=operation_name,
125126
get_next_page=lambda page: self.get(
126127
job_id,
127-
params=GetBatchScrapeJobParams(page=page, batch_size=100),
128+
params=build_page_batch_params(
129+
GetBatchScrapeJobParams,
130+
page=page,
131+
),
128132
),
129133
get_current_page_batch=lambda page_response: (
130134
page_response.current_page_batch

hyperbrowser/client/managers/async_manager/web/batch_fetch.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
BatchFetchJobResponse,
99
POLLING_ATTEMPTS,
1010
)
11+
from ...page_params_utils import build_page_batch_params
1112
from ...web_payload_utils import build_batch_fetch_start_payload
1213
from ...web_payload_utils import build_batch_fetch_get_params
1314
from ...web_pagination_utils import (
@@ -110,7 +111,10 @@ async def start_and_wait(
110111
operation_name=operation_name,
111112
get_next_page=lambda page: self.get(
112113
job_id,
113-
params=GetBatchFetchJobParams(page=page, batch_size=100),
114+
params=build_page_batch_params(
115+
GetBatchFetchJobParams,
116+
page=page,
117+
),
114118
),
115119
get_current_page_batch=lambda page_response: (
116120
page_response.current_page_batch

hyperbrowser/client/managers/async_manager/web/crawl.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
WebCrawlJobResponse,
99
POLLING_ATTEMPTS,
1010
)
11+
from ...page_params_utils import build_page_batch_params
1112
from ...web_payload_utils import build_web_crawl_start_payload
1213
from ...web_payload_utils import build_web_crawl_get_params
1314
from ...web_pagination_utils import (
@@ -108,7 +109,10 @@ async def start_and_wait(
108109
operation_name=operation_name,
109110
get_next_page=lambda page: self.get(
110111
job_id,
111-
params=GetWebCrawlJobParams(page=page, batch_size=100),
112+
params=build_page_batch_params(
113+
GetWebCrawlJobParams,
114+
page=page,
115+
),
112116
),
113117
get_current_page_batch=lambda page_response: (
114118
page_response.current_page_batch
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from typing import Type, TypeVar
2+
3+
DEFAULT_PAGE_BATCH_SIZE = 100
4+
5+
T = TypeVar("T")
6+
7+
8+
def build_page_batch_params(
9+
params_model: Type[T],
10+
*,
11+
page: int,
12+
batch_size: int = DEFAULT_PAGE_BATCH_SIZE,
13+
) -> T:
14+
params_model_obj = params_model
15+
return params_model_obj(page=page, batch_size=batch_size) # type: ignore[call-arg]

hyperbrowser/client/managers/sync_manager/crawl.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
poll_until_terminal_status,
1010
retry_operation,
1111
)
12+
from ..page_params_utils import build_page_batch_params
1213
from ..job_pagination_utils import (
1314
build_job_paginated_page_merge_callback,
1415
initialize_job_paginated_response,
@@ -117,7 +118,10 @@ def start_and_wait(
117118
operation_name=operation_name,
118119
get_next_page=lambda page: self.get(
119120
job_start_resp.job_id,
120-
GetCrawlJobParams(page=page, batch_size=100),
121+
params=build_page_batch_params(
122+
GetCrawlJobParams,
123+
page=page,
124+
),
121125
),
122126
get_current_page_batch=lambda page_response: (
123127
page_response.current_page_batch

hyperbrowser/client/managers/sync_manager/scrape.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
retry_operation,
1111
wait_for_job_result,
1212
)
13+
from ..page_params_utils import build_page_batch_params
1314
from ..job_pagination_utils import (
1415
build_job_paginated_page_merge_callback,
1516
initialize_job_paginated_response,
@@ -122,7 +123,10 @@ def start_and_wait(
122123
operation_name=operation_name,
123124
get_next_page=lambda page: self.get(
124125
job_id,
125-
params=GetBatchScrapeJobParams(page=page, batch_size=100),
126+
params=build_page_batch_params(
127+
GetBatchScrapeJobParams,
128+
page=page,
129+
),
126130
),
127131
get_current_page_batch=lambda page_response: (
128132
page_response.current_page_batch

hyperbrowser/client/managers/sync_manager/web/batch_fetch.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
BatchFetchJobResponse,
99
POLLING_ATTEMPTS,
1010
)
11+
from ...page_params_utils import build_page_batch_params
1112
from ...web_payload_utils import build_batch_fetch_start_payload
1213
from ...web_payload_utils import build_batch_fetch_get_params
1314
from ...web_pagination_utils import (
@@ -108,7 +109,10 @@ def start_and_wait(
108109
operation_name=operation_name,
109110
get_next_page=lambda page: self.get(
110111
job_id,
111-
params=GetBatchFetchJobParams(page=page, batch_size=100),
112+
params=build_page_batch_params(
113+
GetBatchFetchJobParams,
114+
page=page,
115+
),
112116
),
113117
get_current_page_batch=lambda page_response: (
114118
page_response.current_page_batch

hyperbrowser/client/managers/sync_manager/web/crawl.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
WebCrawlJobResponse,
99
POLLING_ATTEMPTS,
1010
)
11+
from ...page_params_utils import build_page_batch_params
1112
from ...web_payload_utils import build_web_crawl_start_payload
1213
from ...web_payload_utils import build_web_crawl_get_params
1314
from ...web_pagination_utils import (
@@ -108,7 +109,10 @@ def start_and_wait(
108109
operation_name=operation_name,
109110
get_next_page=lambda page: self.get(
110111
job_id,
111-
params=GetWebCrawlJobParams(page=page, batch_size=100),
112+
params=build_page_batch_params(
113+
GetWebCrawlJobParams,
114+
page=page,
115+
),
112116
),
113117
get_current_page_batch=lambda page_response: (
114118
page_response.current_page_batch

0 commit comments

Comments
 (0)