Skip to content

Commit a46283c

Browse files
authored
Update fpdf2 stubs to 2.6 (#9236)
1 parent d2da97d commit a46283c

16 files changed

+619
-314
lines changed

stubs/fpdf2/@tests/stubtest_allowlist.txt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,12 @@ fpdf.FPDF.output
33
fpdf.fpdf.FPDF.output
44

55
# Unnecessary re-export from codecs
6-
fpdf.syntax.BOM_UTF16_BE
6+
fpdf.syntax.BOM_UTF16_BE
7+
8+
# stubtest doesn't recognize ImportError handler
9+
fpdf.linearization.signer
10+
fpdf.output.signer
11+
12+
# Argument has default at runtime, but using it raises a TypeError.
13+
fpdf.FPDF.set_creation_date
14+
fpdf.fpdf.FPDF.set_creation_date

stubs/fpdf2/METADATA.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version = "2.5.*"
1+
version = "2.6.*"
22
requires = ["types-Pillow"]
33

44
[tool.stubtest]

stubs/fpdf2/fpdf/actions.pyi

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,36 @@
11
from _typeshed import Incomplete
2-
from abc import ABC
2+
from abc import ABC, abstractmethod
33

44
from .syntax import PDFObject
55

66
class Action(ABC):
77
next: PDFObject | str | None
88
def __init__(self, next_action: PDFObject | str | None = ...) -> None: ...
9-
def dict_as_string(self, key_values: dict[str, Incomplete] | None = ...) -> str: ...
9+
@abstractmethod
10+
def serialize(self) -> str: ...
11+
12+
class URIAction(Action):
13+
uri: str
14+
def __init__(self, uri: str, next_action: PDFObject | str | None = ...) -> None: ...
15+
def serialize(self) -> str: ...
1016

1117
class NamedAction(Action):
12-
action_name: Incomplete
13-
def __init__(self, action_name, next_action: PDFObject | str | None = ...) -> None: ...
14-
def dict_as_string(self) -> str: ... # type: ignore[override]
18+
action_name: str
19+
def __init__(self, action_name: str, next_action: PDFObject | str | None = ...) -> None: ...
20+
def serialize(self) -> str: ...
1521

1622
class GoToAction(Action):
1723
dest: Incomplete
1824
def __init__(self, dest, next_action: PDFObject | str | None = ...) -> None: ...
19-
def dict_as_string(self) -> str: ... # type: ignore[override]
25+
def serialize(self) -> str: ...
2026

2127
class GoToRemoteAction(Action):
22-
file: Incomplete
28+
file: str
2329
dest: Incomplete
24-
def __init__(self, file, dest, next_action: PDFObject | str | None = ...) -> None: ...
25-
def dict_as_string(self) -> str: ... # type: ignore[override]
30+
def __init__(self, file: str, dest, next_action: PDFObject | str | None = ...) -> None: ...
31+
def serialize(self) -> str: ...
2632

2733
class LaunchAction(Action):
28-
file: Incomplete
29-
def __init__(self, file, next_action: PDFObject | str | None = ...) -> None: ...
30-
def dict_as_string(self) -> str: ... # type: ignore[override]
34+
file: str
35+
def __init__(self, file: str, next_action: PDFObject | str | None = ...) -> None: ...
36+
def serialize(self) -> str: ...

stubs/fpdf2/fpdf/annotations.pyi

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
from _typeshed import Incomplete
2+
from datetime import datetime
3+
from typing import NamedTuple
4+
5+
from .actions import Action
6+
from .enums import AnnotationFlag, AnnotationName, FileAttachmentAnnotationName
7+
from .syntax import Destination, Name, PDFContentStream, PDFObject
8+
9+
DEFAULT_ANNOT_FLAGS: Incomplete
10+
11+
class AnnotationMixin:
12+
type: Name
13+
subtype: Name
14+
rect: str
15+
border: str
16+
f_t: Name | None
17+
v: Incomplete | None
18+
f: int # AnnotationFlags
19+
contents: str | None
20+
a: Action | None
21+
dest: Destination | None
22+
c: str | None
23+
t: str | None
24+
m: str | None
25+
quad_points: str | None
26+
p: Incomplete | None
27+
name: AnnotationName | FileAttachmentAnnotationName | None
28+
ink_list: str | None
29+
f_s: str | None
30+
def __init__(
31+
self,
32+
subtype: str,
33+
x: int,
34+
y: int,
35+
width: int,
36+
height: int,
37+
flags: tuple[AnnotationFlag, ...] = ...,
38+
contents: str | None = ...,
39+
dest: Destination | None = ...,
40+
action: Action | None = ...,
41+
color: tuple[int, int, int] | None = ...,
42+
modification_time: datetime | None = ...,
43+
title: str | None = ...,
44+
quad_points: tuple[float, ...] | None = ..., # multiple of 8 floats
45+
border_width: int = ...,
46+
name: AnnotationName | FileAttachmentAnnotationName | None = ...,
47+
ink_list: tuple[int, ...] = ...,
48+
file_spec: str | None = ...,
49+
field_type: str | None = ...,
50+
value: Incomplete | None = ...,
51+
) -> None: ...
52+
53+
class PDFAnnotation(AnnotationMixin, PDFObject): ...
54+
55+
class AnnotationDict(AnnotationMixin):
56+
def serialize(self) -> str: ...
57+
58+
class PDFEmbeddedFile(PDFContentStream):
59+
type: Name
60+
params: str
61+
def __init__(
62+
self,
63+
basename: str,
64+
contents: bytes,
65+
desc: str = ...,
66+
creation_date: datetime | None = ...,
67+
modification_date: datetime | None = ...,
68+
compress: bool = ...,
69+
checksum: bool = ...,
70+
) -> None: ...
71+
def globally_enclosed(self) -> bool: ...
72+
def set_globally_enclosed(self, value: bool) -> None: ...
73+
def basename(self) -> str: ...
74+
def file_spec(self) -> FileSpec: ...
75+
76+
class FileSpec(NamedTuple):
77+
embedded_file: PDFEmbeddedFile
78+
basename: str
79+
desc: str
80+
def serialize(self) -> str: ...

stubs/fpdf2/fpdf/drawing.pyi

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,26 +30,43 @@ class GraphicsStateDictRegistry(OrderedDict[Raw, Name]):
3030
def number_to_str(number) -> str: ...
3131
def render_pdf_primitive(primitive) -> Raw: ...
3232

33-
class DeviceRGB:
34-
OPERATOR: str
35-
def __new__(cls, r, g, b, a: Incomplete | None = ...): ...
33+
class _DeviceRGBBase(NamedTuple):
34+
r: Number
35+
g: Number
36+
b: Number
37+
a: Number | None
38+
39+
class DeviceRGB(_DeviceRGBBase):
40+
OPERATOR: ClassVar[str]
41+
def __new__(cls: type[Self], r: Number, g: Number, b: Number, a: Number | None = ...) -> Self: ...
3642
@property
37-
def colors(self): ...
38-
def pdf_repr(self) -> str: ...
43+
def colors(self) -> tuple[Number, Number, Number]: ...
44+
def serialize(self) -> str: ...
45+
46+
class _DeviceGrayBase(NamedTuple):
47+
g: Number
48+
a: Number | None
3949

40-
class DeviceGray:
41-
OPERATOR: str
42-
def __new__(cls, g, a: Incomplete | None = ...): ...
50+
class DeviceGray(_DeviceGrayBase):
51+
OPERATOR: ClassVar[str]
52+
def __new__(cls: type[Self], g: Number, a: Number | None = ...) -> Self: ...
4353
@property
44-
def colors(self): ...
45-
def pdf_repr(self) -> str: ...
54+
def colors(self) -> tuple[Number]: ...
55+
def serialize(self) -> str: ...
56+
57+
class _DeviceCMYKBase(NamedTuple):
58+
c: Number
59+
m: Number
60+
y: Number
61+
k: Number
62+
a: Number | None
4663

47-
class DeviceCMYK:
48-
OPERATOR: str
49-
def __new__(cls, c, m, y, k, a: Incomplete | None = ...): ...
64+
class DeviceCMYK(_DeviceCMYKBase):
65+
OPERATOR: ClassVar[str]
66+
def __new__(cls: type[Self], c: Number, m: Number, y: Number, k: Number, a: Number | None = ...) -> Self: ...
5067
@property
51-
def colors(self): ...
52-
def pdf_repr(self) -> str: ...
68+
def colors(self) -> tuple[Number, Number, Number, Number]: ...
69+
def serialize(self) -> str: ...
5370

5471
def rgb8(r, g, b, a: Incomplete | None = ...) -> DeviceRGB: ...
5572
def gray8(g, a: Incomplete | None = ...) -> DeviceGray: ...
@@ -172,7 +189,7 @@ class GraphicsStyle:
172189
def stroke_dash_phase(self): ...
173190
@stroke_dash_phase.setter
174191
def stroke_dash_phase(self, value): ...
175-
def to_pdf_dict(self): ...
192+
def serialize(self) -> Raw | None: ...
176193
def resolve_paint_rule(self): ...
177194

178195
class Move(NamedTuple):
@@ -327,6 +344,7 @@ class PaintedPath:
327344
@contextmanager
328345
def transform_group(self: Self, transform) -> Iterator[Self]: ...
329346
def add_path_element(self, item, _copy: bool = ...) -> None: ...
347+
def remove_last_path_element(self) -> None: ...
330348
def rectangle(self: Self, x, y, w, h, rx: int = ..., ry: int = ...) -> Self: ...
331349
def circle(self: Self, cx, cy, r) -> Self: ...
332350
def ellipse(self: Self, cx, cy, rx, ry) -> Self: ...
@@ -372,6 +390,7 @@ class GraphicsContext:
372390
@clipping_path.setter
373391
def clipping_path(self, new_clipath) -> None: ...
374392
def add_item(self, item, _copy: bool = ...) -> None: ...
393+
def remove_last_item(self) -> None: ...
375394
def merge(self, other_context) -> None: ...
376395
def build_render_list(
377396
self,

stubs/fpdf2/fpdf/enums.pyi

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,6 @@ from enum import Enum, Flag, IntEnum
33

44
from .syntax import Name
55

6-
class DocumentState(IntEnum):
7-
UNINITIALIZED: int
8-
READY: int
9-
GENERATING_PAGE: int
10-
CLOSED: int
11-
126
class SignatureFlag(IntEnum):
137
SIGNATURES_EXIST: int
148
APPEND_ONLY: int

0 commit comments

Comments
 (0)