pdfdancer-client-python 0.2.24__tar.gz → 0.2.26__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/.github/workflows/ci.yml +1 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/.github/workflows/daily-tests.yml +2 -1
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/PKG-INFO +7 -6
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/README.md +6 -5
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/docs/openapi.yml +1766 -758
- pdfdancer_client_python-0.2.26/media/logo-orange-512h.webp +0 -0
- pdfdancer_client_python-0.2.26/media/logo-orange-60h.webp +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/pyproject.toml +1 -1
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer/__init__.py +2 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer/models.py +47 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer/pdfdancer_v1.py +28 -0
- pdfdancer_client_python-0.2.26/src/pdfdancer/text_line_builder.py +290 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer/types.py +54 -7
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer_client_python.egg-info/PKG-INFO +7 -6
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer_client_python.egg-info/SOURCES.txt +4 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/pdf_assertions.py +3 -1
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_context_manager.py +1 -1
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_page.py +1 -1
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_paragraph.py +11 -7
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_singular_selection.py +4 -2
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_snapshot.py +1 -1
- pdfdancer_client_python-0.2.26/tests/e2e/test_text_line_edit.py +298 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/test_rate_limit.py +1 -1
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/.claude/commands/discuss.md +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/.flake8 +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/.gitignore +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/CLAUDE.md +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/LICENSE +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/NOTICE +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/TODO.md +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/check.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/release.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/setup.cfg +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer/exceptions.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer/fingerprint.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer/image_builder.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer/page_builder.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer/paragraph_builder.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer/path_builder.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer_client_python.egg-info/dependency_links.txt +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer_client_python.egg-info/requires.txt +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/src/pdfdancer_client_python.egg-info/top_level.txt +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/test.sh +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/__init__.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/conftest.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/__init__.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_acroform.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_bezier_builder.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_form_x_objects.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_image.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_line.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_line_builder.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_new_pdf.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_path.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_path_builder.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_path_builder_rectangle.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_path_comprehensive.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_pdfdancer.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_positioning.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/e2e/test_rectangle_builder.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/fixtures/DancingScript-Regular.ttf +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/fixtures/Empty.pdf +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/fixtures/JetBrainsMono-Regular.ttf +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/fixtures/Showcase.pdf +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/fixtures/basic-paths.pdf +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/fixtures/form-xobject-example.pdf +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/fixtures/logo-80.png +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/fixtures/mixed-form-types.pdf +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/test_anonymous_token.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/test_fingerprint.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/test_models.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/test_openapi_compliance.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/test_path_models.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/test_pdf_object_equality.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/tests/test_standard_fonts.py +0 -0
- {pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/update-api-spec.sh +0 -0
{pdfdancer_client_python-0.2.24 → pdfdancer_client_python-0.2.26}/.github/workflows/daily-tests.yml
RENAMED
|
@@ -3,7 +3,7 @@ name: Daily Tests
|
|
|
3
3
|
on:
|
|
4
4
|
schedule:
|
|
5
5
|
# Run daily at 9:00 PM UTC
|
|
6
|
-
- cron: '
|
|
6
|
+
- cron: '40 10 * * *'
|
|
7
7
|
workflow_dispatch: # Allow manual triggering
|
|
8
8
|
|
|
9
9
|
jobs:
|
|
@@ -11,6 +11,7 @@ jobs:
|
|
|
11
11
|
runs-on: ${{ matrix.os }}
|
|
12
12
|
strategy:
|
|
13
13
|
fail-fast: false
|
|
14
|
+
max-parallel: 4
|
|
14
15
|
matrix:
|
|
15
16
|
os: [ ubuntu-latest, windows-latest ]
|
|
16
17
|
python-version: [ '3.10', '3.11', '3.12', '3.13' ]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pdfdancer-client-python
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.26
|
|
4
4
|
Summary: Python client for PDFDancer API
|
|
5
5
|
Author-email: "The Famous Cat Ltd." <hi@thefamouscat.com>
|
|
6
6
|
License:
|
|
@@ -239,11 +239,12 @@ Dynamic: license-file
|
|
|
239
239
|
|
|
240
240
|
# PDFDancer Python Client
|
|
241
241
|
|
|
242
|
-
|
|
242
|
+

|
|
243
243
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
244
|
+
**Stop fighting PDFs. Start editing them.**
|
|
245
|
+
|
|
246
|
+
Edit text in real-world PDFs—even ones you didn't create. Move images, reposition headers, and change fonts with
|
|
247
|
+
pixel-perfect control from Python. The same API is also available for TypeScript and Java.
|
|
247
248
|
|
|
248
249
|
> Need the raw API schema? The latest OpenAPI description lives in `docs/openapi.yml` and is published at
|
|
249
250
|
> https://bucket.pdfdancer.com/api-doc/development-0.0.yml.
|
|
@@ -258,7 +259,7 @@ same API is also available for TypeScript and Java, so teams can orchestrate ide
|
|
|
258
259
|
|
|
259
260
|
## What Makes PDFDancer Different
|
|
260
261
|
|
|
261
|
-
- **Edit
|
|
262
|
+
- **Edit text in real-world PDFs**: Work with documents from customers, governments, or vendors—even ones you didn't create.
|
|
262
263
|
- **Pixel-perfect positioning**: Move or add elements at exact coordinates and keep the original layout intact.
|
|
263
264
|
- **Surgical text replacement**: Swap or rewrite paragraphs without reflowing the rest of the page.
|
|
264
265
|
- **Form manipulation**: Inspect, fill, and update AcroForm fields programmatically.
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# PDFDancer Python Client
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+

|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
**Stop fighting PDFs. Start editing them.**
|
|
6
|
+
|
|
7
|
+
Edit text in real-world PDFs—even ones you didn't create. Move images, reposition headers, and change fonts with
|
|
8
|
+
pixel-perfect control from Python. The same API is also available for TypeScript and Java.
|
|
8
9
|
|
|
9
10
|
> Need the raw API schema? The latest OpenAPI description lives in `docs/openapi.yml` and is published at
|
|
10
11
|
> https://bucket.pdfdancer.com/api-doc/development-0.0.yml.
|
|
@@ -19,7 +20,7 @@ same API is also available for TypeScript and Java, so teams can orchestrate ide
|
|
|
19
20
|
|
|
20
21
|
## What Makes PDFDancer Different
|
|
21
22
|
|
|
22
|
-
- **Edit
|
|
23
|
+
- **Edit text in real-world PDFs**: Work with documents from customers, governments, or vendors—even ones you didn't create.
|
|
23
24
|
- **Pixel-perfect positioning**: Move or add elements at exact coordinates and keep the original layout intact.
|
|
24
25
|
- **Surgical text replacement**: Swap or rewrite paragraphs without reflowing the rest of the page.
|
|
25
26
|
- **Form manipulation**: Inspect, fill, and update AcroForm fields programmatically.
|