Skip to content

Commit 5fffcc3

Browse files
datalogics-kamdatalogics-cgreen
authored andcommitted
client: Rename convert_urls_to_pdf to convert_url_to_pdf
- Updated method name to reflect singular URL input, improving clarity. - Adjusted parameter from `urls: UrlInput` to `url: UrlValue` to align with single URL support. - Revised docstrings to clarify behavior for single URL input. - Renamed `ConvertUrlsToPdfPayload` → `ConvertUrlToPdfPayload`. - Ensured updates in related tests, including test names and payload expectations. Assisted-by: Codex
1 parent 75af16b commit 5fffcc3

4 files changed

Lines changed: 33 additions & 51 deletions

File tree

src/pdfrest/client.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181
ConvertOfficeToPdfPayload,
8282
ConvertPostscriptToPdfPayload,
8383
ConvertToMarkdownPayload,
84-
ConvertUrlsToPdfPayload,
84+
ConvertUrlToPdfPayload,
8585
DeletePayload,
8686
ExtractImagesPayload,
8787
ExtractTextPayload,
@@ -3476,9 +3476,9 @@ def convert_html_to_pdf(
34763476
timeout=timeout,
34773477
)
34783478

3479-
def convert_urls_to_pdf(
3479+
def convert_url_to_pdf(
34803480
self,
3481-
urls: UrlInput,
3481+
url: UrlValue,
34823482
*,
34833483
output: str | None = None,
34843484
compression: PdfConversionCompression | None = None,
@@ -3492,10 +3492,10 @@ def convert_urls_to_pdf(
34923492
extra_body: Body | None = None,
34933493
timeout: TimeoutTypes | None = None,
34943494
) -> PdfRestFileBasedResponse:
3495-
"""Convert HTML content from one or more URLs to PDF."""
3495+
"""Convert HTML content from one URL to PDF."""
34963496

34973497
payload: dict[str, Any] = {
3498-
"url": urls,
3498+
"url": url,
34993499
"output": output,
35003500
"compression": compression,
35013501
"downsample": downsample,
@@ -3509,7 +3509,7 @@ def convert_urls_to_pdf(
35093509
return self._post_file_operation(
35103510
endpoint="/pdf",
35113511
payload=payload,
3512-
payload_model=ConvertUrlsToPdfPayload,
3512+
payload_model=ConvertUrlToPdfPayload,
35133513
extra_query=extra_query,
35143514
extra_headers=extra_headers,
35153515
extra_body=extra_body,
@@ -5179,9 +5179,9 @@ async def convert_html_to_pdf(
51795179
timeout=timeout,
51805180
)
51815181

5182-
async def convert_urls_to_pdf(
5182+
async def convert_url_to_pdf(
51835183
self,
5184-
urls: UrlInput,
5184+
url: UrlValue,
51855185
*,
51865186
output: str | None = None,
51875187
compression: PdfConversionCompression | None = None,
@@ -5195,10 +5195,10 @@ async def convert_urls_to_pdf(
51955195
extra_body: Body | None = None,
51965196
timeout: TimeoutTypes | None = None,
51975197
) -> PdfRestFileBasedResponse:
5198-
"""Asynchronously convert HTML content from one or more URLs to PDF."""
5198+
"""Asynchronously convert HTML content from one URL to PDF."""
51995199

52005200
payload: dict[str, Any] = {
5201-
"url": urls,
5201+
"url": url,
52025202
"output": output,
52035203
"compression": compression,
52045204
"downsample": downsample,
@@ -5212,7 +5212,7 @@ async def convert_urls_to_pdf(
52125212
return await self._post_file_operation(
52135213
endpoint="/pdf",
52145214
payload=payload,
5215-
payload_model=ConvertUrlsToPdfPayload,
5215+
payload_model=ConvertUrlToPdfPayload,
52165216
extra_query=extra_query,
52175217
extra_headers=extra_headers,
52185218
extra_body=extra_body,

src/pdfrest/models/_internal.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -793,14 +793,12 @@ class ConvertHtmlToPdfPayload(BaseModel):
793793
] = None
794794

795795

796-
class ConvertUrlsToPdfPayload(BaseModel):
797-
"""Adapt caller options into a pdfRest-ready convert-to-pdf payload for URLs."""
796+
class ConvertUrlToPdfPayload(BaseModel):
797+
"""Adapt caller options into a pdfRest-ready convert-to-pdf payload for one URL."""
798798

799799
url: Annotated[
800-
list[HttpUrl],
801-
Field(serialization_alias="url", min_length=1),
802-
BeforeValidator(_list_of_strings),
803-
BeforeValidator(_ensure_list),
800+
HttpUrl,
801+
Field(serialization_alias="url"),
804802
]
805803
output: Annotated[
806804
str | None,

tests/live/test_live_convert_urls_to_pdf.py

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,19 @@
44

55
from pdfrest import AsyncPdfRestClient, PdfRestApiError, PdfRestClient
66

7-
from ..resources import get_test_resource_path
8-
9-
10-
@pytest.fixture(scope="module")
11-
def uploaded_html_url_for_pdf(
12-
pdfrest_api_key: str,
13-
pdfrest_live_base_url: str,
14-
) -> str:
15-
resource = get_test_resource_path("sample.html")
16-
with PdfRestClient(
17-
api_key=pdfrest_api_key,
18-
base_url=pdfrest_live_base_url,
19-
) as client:
20-
uploaded = client.files.create_from_paths([resource])[0]
21-
return str(uploaded.url)
7+
LIVE_HTML_URL = "https://example.com"
228

239

2410
def test_live_convert_urls_to_pdf_success(
2511
pdfrest_api_key: str,
2612
pdfrest_live_base_url: str,
27-
uploaded_html_url_for_pdf: str,
2813
) -> None:
2914
with PdfRestClient(
3015
api_key=pdfrest_api_key,
3116
base_url=pdfrest_live_base_url,
3217
) as client:
33-
response = client.convert_urls_to_pdf(
34-
[uploaded_html_url_for_pdf],
18+
response = client.convert_url_to_pdf(
19+
LIVE_HTML_URL,
3520
output="live-html-url",
3621
page_size="letter",
3722
page_margin="8mm",
@@ -52,14 +37,13 @@ def test_live_convert_urls_to_pdf_success(
5237
async def test_live_async_convert_urls_to_pdf_invalid_page_size(
5338
pdfrest_api_key: str,
5439
pdfrest_live_base_url: str,
55-
uploaded_html_url_for_pdf: str,
5640
) -> None:
5741
async with AsyncPdfRestClient(
5842
api_key=pdfrest_api_key,
5943
base_url=pdfrest_live_base_url,
6044
) as client:
6145
with pytest.raises(PdfRestApiError, match=r"(?i)page_size|page size"):
62-
await client.convert_urls_to_pdf(
63-
[uploaded_html_url_for_pdf],
46+
await client.convert_url_to_pdf(
47+
LIVE_HTML_URL,
6448
extra_body={"page_size": "poster"},
6549
)

tests/test_convert_urls_to_pdf.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@
88

99
from pdfrest import AsyncPdfRestClient, PdfRestClient
1010
from pdfrest.models import PdfRestFileBasedResponse, PdfRestFileID
11-
from pdfrest.models._internal import ConvertUrlsToPdfPayload
11+
from pdfrest.models._internal import ConvertUrlToPdfPayload
1212

1313
from .graphics_test_helpers import ASYNC_API_KEY, VALID_API_KEY, build_file_info_payload
1414

1515

1616
def test_convert_urls_to_pdf_success(monkeypatch: pytest.MonkeyPatch) -> None:
1717
monkeypatch.delenv("PDFREST_API_KEY", raising=False)
18-
urls = ["https://example.com/page"]
18+
url = "https://example.com/page"
1919
output_id = str(PdfRestFileID.generate())
20-
payload_dump = ConvertUrlsToPdfPayload.model_validate(
20+
payload_dump = ConvertUrlToPdfPayload.model_validate(
2121
{
22-
"url": urls,
22+
"url": url,
2323
"output": "url-out",
2424
"page_size": "letter",
2525
"page_margin": "2.5in",
@@ -52,8 +52,8 @@ def handler(request: httpx.Request) -> httpx.Response:
5252

5353
transport = httpx.MockTransport(handler)
5454
with PdfRestClient(api_key=VALID_API_KEY, transport=transport) as client:
55-
response = client.convert_urls_to_pdf(
56-
urls,
55+
response = client.convert_url_to_pdf(
56+
url,
5757
output="url-out",
5858
page_size="letter",
5959
page_margin="2.5in",
@@ -68,11 +68,11 @@ def handler(request: httpx.Request) -> httpx.Response:
6868

6969
def test_convert_urls_to_pdf_validation_errors() -> None:
7070
with pytest.raises(ValidationError, match="Input should be a valid URL"):
71-
ConvertUrlsToPdfPayload.model_validate({"url": "not-a-url"})
71+
ConvertUrlToPdfPayload.model_validate({"url": "not-a-url"})
7272

7373
with pytest.raises(ValidationError, match="page_margin must be a number"):
74-
ConvertUrlsToPdfPayload.model_validate(
75-
{"url": ["https://example.com"], "page_margin": "mm"}
74+
ConvertUrlToPdfPayload.model_validate(
75+
{"url": "https://example.com", "page_margin": "mm"}
7676
)
7777

7878

@@ -81,7 +81,7 @@ async def test_async_convert_urls_to_pdf_request_customization(
8181
monkeypatch: pytest.MonkeyPatch,
8282
) -> None:
8383
monkeypatch.delenv("PDFREST_API_KEY", raising=False)
84-
urls = ["https://example.com/page", "https://example.com/other"]
84+
url = "https://example.com/page"
8585
output_id = str(PdfRestFileID.generate())
8686
captured_timeout: dict[str, float | dict[str, float] | None] = {}
8787

@@ -91,7 +91,7 @@ def handler(request: httpx.Request) -> httpx.Response:
9191
assert request.headers["X-Debug"] == "async"
9292
captured_timeout["value"] = request.extensions.get("timeout")
9393
payload = json.loads(request.content.decode("utf-8"))
94-
assert payload["url"] == urls
94+
assert payload["url"] == url
9595
assert payload["output"] == "async-url"
9696
assert payload["page_orientation"] == "portrait"
9797
assert payload["debug"] == "yes"
@@ -116,8 +116,8 @@ def handler(request: httpx.Request) -> httpx.Response:
116116

117117
transport = httpx.MockTransport(handler)
118118
async with AsyncPdfRestClient(api_key=ASYNC_API_KEY, transport=transport) as client:
119-
response = await client.convert_urls_to_pdf(
120-
urls,
119+
response = await client.convert_url_to_pdf(
120+
url,
121121
output="async-url",
122122
page_orientation="portrait",
123123
extra_query={"trace": "async"},

0 commit comments

Comments
 (0)