Skip to content

Commit 7020bc2

Browse files
authored
[reportlab] Use TypedDict with Unpack for BaseDocTemplate kwargs (#16095)
1 parent 97e6a39 commit 7020bc2

1 file changed

Lines changed: 51 additions & 4 deletions

File tree

stubs/reportlab/reportlab/platypus/doctemplate.pyi

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from _typeshed import Incomplete
22
from abc import abstractmethod
33
from collections.abc import Callable
4-
from typing import IO, Any, Literal, Protocol, TypeAlias, type_check_only
5-
from typing_extensions import Self
4+
from typing import IO, Any, Literal, Protocol, TypeAlias, TypedDict, type_check_only
5+
from typing_extensions import Self, Unpack
66

77
from reportlab.pdfgen.canvas import Canvas
88
from reportlab.platypus.flowables import Flowable
@@ -181,6 +181,54 @@ class PageAccumulator:
181181
def pageEndAction(self, canv: Canvas, doc: BaseDocTemplate) -> None: ...
182182
def onDrawStr(self, value: object, *args) -> _OnDrawStr: ...
183183

184+
@type_check_only
185+
class _DocTemplateKwargs(TypedDict, total=False):
186+
pagesize: Incomplete
187+
pageTemplates: list[PageTemplate]
188+
showBoundary: Incomplete
189+
width: float
190+
height: float
191+
leftMargin: float
192+
rightMargin: float
193+
topMargin: float
194+
bottomMargin: float
195+
allowSplitting: Incomplete
196+
title: Incomplete | None
197+
author: Incomplete | None
198+
subject: Incomplete | None
199+
creator: Incomplete | None
200+
producer: Incomplete | None
201+
keywords: list[Incomplete]
202+
invariant: Incomplete | None
203+
pageCompression: Incomplete | None
204+
rotation: Incomplete
205+
encrypt: Incomplete | None
206+
cropMarks: Incomplete | None
207+
enforceColorSpace: Incomplete | None
208+
displayDocTitle: Incomplete | None
209+
lang: Incomplete | None
210+
initialFontName: Incomplete | None
211+
initialFontSize: Incomplete | None
212+
initialLeading: Incomplete | None
213+
cropBox: Incomplete | None
214+
artBox: Incomplete | None
215+
trimBox: Incomplete | None
216+
bleedBox: Incomplete | None
217+
keepTogetherClass: type[Flowable]
218+
hideToolbar: Incomplete | None
219+
hideMenubar: Incomplete | None
220+
hideWindowUI: Incomplete | None
221+
fitWindow: Incomplete | None
222+
centerWindow: Incomplete | None
223+
nonFullScreenPageMode: Incomplete | None
224+
direction: Incomplete | None
225+
viewArea: Incomplete | None
226+
viewClip: Incomplete | None
227+
printArea: Incomplete | None
228+
printClip: Incomplete | None
229+
printScaling: Incomplete | None
230+
duplex: Incomplete | None
231+
184232
class BaseDocTemplate:
185233
filename: Incomplete
186234
pagesize: Incomplete
@@ -233,8 +281,7 @@ class BaseDocTemplate:
233281
page: int
234282
frame: Frame
235283
canv: Canvas
236-
# TODO: Use TypedDict with Unpack for **kw
237-
def __init__(self, filename: str | IO[bytes], **kw) -> None: ...
284+
def __init__(self, filename: str | IO[bytes], **kw: Unpack[_DocTemplateKwargs]) -> None: ...
238285
def setPageCallBack(self, func: Callable[[int], object] | None) -> None: ...
239286
def setProgressCallBack(self, func: Callable[[str, int], object] | None) -> None: ...
240287
def clean_hanging(self) -> None: ...

0 commit comments

Comments
 (0)