Skip to content

Commit 266c1f6

Browse files
Add missing page_break_comments parameter to Markdown conversion
Assisted-by: Codex
1 parent aca10fd commit 266c1f6

3 files changed

Lines changed: 31 additions & 3 deletions

File tree

src/pdfrest/client.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2101,6 +2101,7 @@ def convert_to_markdown(
21012101
pages: PdfPageSelection | None = None,
21022102
output_type: SummaryOutputType = "json",
21032103
output_format: SummaryOutputFormat = "markdown",
2104+
page_break_comments: Literal["on", "off"] | None = None,
21042105
output: str | None = None,
21052106
extra_query: Query | None = None,
21062107
extra_headers: AnyMapping | None = None,
@@ -2116,6 +2117,8 @@ def convert_to_markdown(
21162117
}
21172118
if pages is not None:
21182119
payload["pages"] = pages
2120+
if page_break_comments is not None:
2121+
payload["page_break_comments"] = page_break_comments
21192122
if output is not None:
21202123
payload["output"] = output
21212124

@@ -3011,6 +3014,7 @@ async def convert_to_markdown(
30113014
pages: PdfPageSelection | None = None,
30123015
output_type: SummaryOutputType = "json",
30133016
output_format: SummaryOutputFormat = "markdown",
3017+
page_break_comments: Literal["on", "off"] | None = None,
30143018
output: str | None = None,
30153019
extra_query: Query | None = None,
30163020
extra_headers: AnyMapping | None = None,
@@ -3026,6 +3030,8 @@ async def convert_to_markdown(
30263030
}
30273031
if pages is not None:
30283032
payload["pages"] = pages
3033+
if page_break_comments is not None:
3034+
payload["page_break_comments"] = page_break_comments
30293035
if output is not None:
30303036
payload["output"] = output
30313037

src/pdfrest/models/_internal.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,10 @@ class ConvertToMarkdownPayload(BaseModel):
382382
SummaryOutputFormat,
383383
Field(serialization_alias="output_format", default="markdown"),
384384
] = "markdown"
385+
page_break_comments: Annotated[
386+
Literal["on", "off"] | None,
387+
Field(serialization_alias="page_break_comments", default=None),
388+
] = None
385389
output: Annotated[
386390
str | None,
387391
Field(serialization_alias="output", min_length=1, default=None),

tests/test_convert_to_markdown.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,14 @@ def test_convert_to_markdown_payload_invalid_page_range() -> None:
4040
)
4141

4242

43+
def test_convert_to_markdown_payload_invalid_page_break_comments() -> None:
44+
file_repr = make_pdf_file(PdfRestFileID.generate(1))
45+
with pytest.raises(ValidationError, match="Input should be 'on' or 'off'"):
46+
ConvertToMarkdownPayload.model_validate(
47+
{"files": [file_repr], "page_break_comments": "maybe"}
48+
)
49+
50+
4351
def test_convert_to_markdown_json_success(monkeypatch: pytest.MonkeyPatch) -> None:
4452
monkeypatch.delenv("PDFREST_API_KEY", raising=False)
4553
input_file = make_pdf_file(PdfRestFileID.generate(1))
@@ -50,6 +58,7 @@ def test_convert_to_markdown_json_success(monkeypatch: pytest.MonkeyPatch) -> No
5058
"output": "md",
5159
"output_type": "json",
5260
"output_format": "markdown",
61+
"page_break_comments": "on",
5362
}
5463
).model_dump(mode="json", by_alias=True, exclude_none=True, exclude_unset=True)
5564

@@ -79,6 +88,7 @@ def handler(request: httpx.Request) -> httpx.Response:
7988
output="md",
8089
output_type="json",
8190
output_format="markdown",
91+
page_break_comments="on",
8292
)
8393

8494
assert seen == {"post": 1}
@@ -95,7 +105,12 @@ def test_convert_to_markdown_request_customization(
95105
monkeypatch.delenv("PDFREST_API_KEY", raising=False)
96106
input_file = make_pdf_file(PdfRestFileID.generate(1))
97107
payload_dump = ConvertToMarkdownPayload.model_validate(
98-
{"files": [input_file], "output_type": "file", "output_format": "markdown"}
108+
{
109+
"files": [input_file],
110+
"output_type": "file",
111+
"output_format": "markdown",
112+
"page_break_comments": "off",
113+
}
99114
).model_dump(mode="json", by_alias=True, exclude_none=True, exclude_unset=True)
100115
output_id = str(PdfRestFileID.generate())
101116
captured_timeout: dict[str, float | dict[str, float] | None] = {}
@@ -129,6 +144,7 @@ def handler(request: httpx.Request) -> httpx.Response:
129144
extra_headers={"X-Debug": "sync"},
130145
extra_body={"debug": True},
131146
timeout=0.4,
147+
page_break_comments="off",
132148
)
133149

134150
assert isinstance(response, ConvertToMarkdownResponse)
@@ -151,7 +167,7 @@ async def test_async_convert_to_markdown_success(
151167
monkeypatch.delenv("PDFREST_API_KEY", raising=False)
152168
input_file = make_pdf_file(PdfRestFileID.generate(2))
153169
payload_dump = ConvertToMarkdownPayload.model_validate(
154-
{"files": [input_file], "output_type": "json"}
170+
{"files": [input_file], "output_type": "json", "page_break_comments": "off"}
155171
).model_dump(mode="json", by_alias=True, exclude_none=True, exclude_unset=True)
156172

157173
seen: dict[str, int] = {"post": 0}
@@ -174,7 +190,9 @@ def handler(request: httpx.Request) -> httpx.Response:
174190

175191
transport = httpx.MockTransport(handler)
176192
async with AsyncPdfRestClient(api_key=ASYNC_API_KEY, transport=transport) as client:
177-
response = await client.convert_to_markdown(input_file, output_type="json")
193+
response = await client.convert_to_markdown(
194+
input_file, output_type="json", page_break_comments="off"
195+
)
178196

179197
assert seen == {"post": 1}
180198
assert isinstance(response, ConvertToMarkdownResponse)

0 commit comments

Comments
 (0)