Skip to content

Commit e2fa6a1

Browse files
Add new core functionality and enhance existing tasks
- Add editpdf_task.py for PDF editing capabilities with text, image, svg, and bottom elements - Add helpers.py with type definitions and constants for font families, styles, and layers - Add pagenumbers_task.py for adding page numbers to PDFs - Add pdftojpg_task.py for PDF to JPEG conversion - Add validate_pdfa_task.py for PDF/A validation - Update abstract_task_element.py with enhanced element handling - Update ilovepdf_api.py with improved API interactions - Update task.py with new task management features - Update existing tasks (imagepdf, office_pdf, rotate, sign, watermark) with enhancements - Update sign module with improved signer and signer_file classes - Update validators with bool, choice, and string validators
1 parent f9d551f commit e2fa6a1

28 files changed

Lines changed: 1313 additions & 222 deletions

ilovepdf/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@
22

33
from . import exceptions
44
from .compress_task import CompressTask
5+
from .editpdf_task import EditPdfTask
56
from .extract_task import ExtractTask
67
from .file import File
78
from .htmltopdf_task import HtmlToPdfTask
89
from .ilovepdf_api import Ilovepdf
910
from .imagepdf_task import ImagePdfTask
1011
from .merge_task import MergeTask
1112
from .office_pdf_task import OfficePdfTask
13+
from .pagenumbers_task import PageNumbersTask
1214
from .pdfocr_task import PdfOcrTask
15+
from .pdftojpg_task import PdfToJpgTask
1316
from .pdftopdfa_task import PdfToPdfATask
1417
from .protect_task import ProtectTask
1518
from .repair_task import RepairTask
@@ -18,6 +21,7 @@
1821
from .split_task import SplitTask
1922
from .task import Task
2023
from .unlock_task import UnlockTask
24+
from .validate_pdfa_task import ValidatePdfATask
2125
from .watermark_task import WatermarkTask
2226

2327
__all__ = [
@@ -40,4 +44,8 @@
4044
"SplitTask",
4145
"UnlockTask",
4246
"WatermarkTask",
47+
"PdfToJpgTask",
48+
"PageNumbersTask",
49+
"ValidatePdfATask",
50+
"EditPdfTask",
4351
]

ilovepdf/abstract_task_element.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
for API requests.
55
"""
66

7-
from typing import Any, Dict, Sequence
7+
from collections.abc import Sequence
8+
from typing import Any
89

910
from ilovepdf.exceptions import MissingPayloadFieldError
1011

11-
Payload = Dict[str, Any]
12+
Payload = dict[str, Any]
1213

1314

14-
# pylint: disable=too-few-public-methods
1515
class AbstractTaskElement:
1616
"""Base class for task elements that can be serialized to an API payload.
1717
@@ -51,7 +51,7 @@ def attr1(self, value: str):
5151

5252
def __init__(self) -> None:
5353
self._payload: Payload = self._get_default_payload()
54-
# self._payload: Payload = self._DEFAULT_PAYLOAD.copy()
54+
5555
for key in self._LIST_ATTRS:
5656
if key in self._payload:
5757
self._payload[key] = list(self._payload[key])
@@ -188,7 +188,7 @@ def _serialize_lists(cls, data: Payload) -> Payload:
188188
if key not in data:
189189
continue
190190
items = data[key]
191-
if not isinstance(items, Sequence) or isinstance(items, (str, bytes)):
191+
if not isinstance(items, Sequence) or isinstance(items, str | bytes):
192192
continue
193193
serialized = []
194194
for item in items:

0 commit comments

Comments
 (0)