pdfdancer-client-python 0.2.17__tar.gz → 0.2.18__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.

Potentially problematic release.


This version of pdfdancer-client-python might be problematic. Click here for more details.

Files changed (66) hide show
  1. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/.github/workflows/ci.yml +1 -1
  2. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/.gitignore +1 -0
  3. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/PKG-INFO +18 -18
  4. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/README.md +16 -16
  5. pdfdancer_client_python-0.2.18/TODO.md +4 -0
  6. pdfdancer_client_python-0.2.18/docs/openapi.yml +2446 -0
  7. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/pyproject.toml +2 -2
  8. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/src/pdfdancer/__init__.py +9 -1
  9. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/src/pdfdancer/exceptions.py +3 -3
  10. pdfdancer_client_python-0.2.18/src/pdfdancer/fingerprint.py +121 -0
  11. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/src/pdfdancer/models.py +243 -27
  12. pdfdancer_client_python-0.2.18/src/pdfdancer/path_builder.py +557 -0
  13. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/src/pdfdancer/pdfdancer_v1.py +865 -126
  14. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/src/pdfdancer_client_python.egg-info/PKG-INFO +18 -18
  15. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/src/pdfdancer_client_python.egg-info/SOURCES.txt +13 -0
  16. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/src/pdfdancer_client_python.egg-info/requires.txt +1 -1
  17. pdfdancer_client_python-0.2.18/test.sh +543 -0
  18. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/e2e/__init__.py +2 -2
  19. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/e2e/pdf_assertions.py +184 -4
  20. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/e2e/test_acroform.py +18 -18
  21. pdfdancer_client_python-0.2.18/tests/e2e/test_bezier_builder.py +251 -0
  22. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/e2e/test_context_manager.py +75 -73
  23. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/e2e/test_form_x_objects.py +5 -5
  24. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/e2e/test_image.py +14 -14
  25. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/e2e/test_line.py +24 -24
  26. pdfdancer_client_python-0.2.18/tests/e2e/test_line_builder.py +255 -0
  27. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/e2e/test_new_pdf.py +23 -23
  28. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/e2e/test_page.py +8 -8
  29. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/e2e/test_paragraph.py +87 -87
  30. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/e2e/test_path.py +14 -14
  31. pdfdancer_client_python-0.2.18/tests/e2e/test_path_builder.py +449 -0
  32. pdfdancer_client_python-0.2.18/tests/e2e/test_path_comprehensive.py +558 -0
  33. pdfdancer_client_python-0.2.18/tests/e2e/test_pdfdancer.py +47 -0
  34. pdfdancer_client_python-0.2.18/tests/e2e/test_snapshot.py +257 -0
  35. pdfdancer_client_python-0.2.18/tests/test_anonymous_token.py +192 -0
  36. pdfdancer_client_python-0.2.18/tests/test_fingerprint.py +114 -0
  37. pdfdancer_client_python-0.2.18/tests/test_path_models.py +275 -0
  38. pdfdancer_client_python-0.2.18/update-api-spec.sh +3 -0
  39. pdfdancer_client_python-0.2.17/docs/openapi.yml +0 -1190
  40. pdfdancer_client_python-0.2.17/tests/e2e/test_pdfdancer.py +0 -33
  41. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/.claude/commands/discuss.md +0 -0
  42. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/CLAUDE.md +0 -0
  43. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/LICENSE +0 -0
  44. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/NOTICE +0 -0
  45. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/release.py +0 -0
  46. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/setup.cfg +0 -0
  47. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/src/pdfdancer/image_builder.py +0 -0
  48. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/src/pdfdancer/paragraph_builder.py +0 -0
  49. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/src/pdfdancer/types.py +0 -0
  50. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/src/pdfdancer_client_python.egg-info/dependency_links.txt +0 -0
  51. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/src/pdfdancer_client_python.egg-info/top_level.txt +0 -0
  52. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/__init__.py +0 -0
  53. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/conftest.py +0 -0
  54. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/e2e/test_positioning.py +0 -0
  55. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/fixtures/DancingScript-Regular.ttf +0 -0
  56. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/fixtures/Empty.pdf +0 -0
  57. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/fixtures/JetBrainsMono-Regular.ttf +0 -0
  58. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/fixtures/ObviouslyAwesome.pdf +0 -0
  59. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/fixtures/basic-paths.pdf +0 -0
  60. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/fixtures/form-xobject-example.pdf +0 -0
  61. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/fixtures/logo-80.png +0 -0
  62. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/fixtures/mixed-form-types.pdf +0 -0
  63. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/test_models.py +0 -0
  64. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/test_openapi_compliance.py +0 -0
  65. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/test_pdf_object_equality.py +0 -0
  66. {pdfdancer_client_python-0.2.17 → pdfdancer_client_python-0.2.18}/tests/test_standard_fonts.py +0 -0
@@ -32,7 +32,7 @@ jobs:
32
32
  venv/bin/pip install -e ".[dev]"
33
33
 
34
34
  - name: Run tests
35
- run: PDFDANCER_BASE_URL=https://api.staging.pdfdancer.com PDFDANCER_TOKEN=42 venv/bin/python -m pytest tests/ -v --maxfail=3
35
+ run: PDFDANCER_BASE_URL=https://api-staging.pdfdancer.com PDFDANCER_TOKEN=42 venv/bin/python -m pytest tests/ -v --maxfail=3
36
36
 
37
37
  - name: Build distribution packages
38
38
  run: venv/bin/python -m build
@@ -8,3 +8,4 @@ src/pdfdancer_python.egg-info
8
8
  src/pdfdancer_client_python.egg-info
9
9
  /logs/
10
10
  /venv
11
+ /venv-*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pdfdancer-client-python
3
- Version: 0.2.17
3
+ Version: 0.2.18
4
4
  Summary: Python client for PDFDancer API
5
5
  Author-email: "The Famous Cat Ltd." <hi@thefamouscat.com>
6
6
  License:
@@ -219,7 +219,7 @@ Requires-Python: >=3.10
219
219
  Description-Content-Type: text/markdown
220
220
  License-File: LICENSE
221
221
  License-File: NOTICE
222
- Requires-Dist: requests>=2.25.0
222
+ Requires-Dist: httpx[http2]>=0.27.0
223
223
  Requires-Dist: pydantic>=1.8.0
224
224
  Requires-Dist: typing-extensions>=4.0.0
225
225
  Requires-Dist: python-dotenv>=0.19.0
@@ -357,11 +357,9 @@ with helpers such as `delete()`, `move_to(x, y)`, or `edit()` depending on the o
357
357
  ## Configuration
358
358
 
359
359
  - Set `PDFDANCER_TOKEN` for authentication (preferred for local development and CI).
360
- - Override the API host with `PDFDANCER_BASE_URL` (e.g., sandbox environments).
361
- - Tune HTTP read timeouts via the `timeout` argument on `PDFDancer.open()` and `PDFDancer.new()`.
362
- - The HTTP client now keeps TLS connections warm with aggressive pooling and retries. Fine-tune via
363
- environment variables such as `PDFDANCER_POOL_CONNECTIONS`, `PDFDANCER_POOL_MAXSIZE`,
364
- `PDFDANCER_RETRY_TOTAL`, and `PDFDANCER_TRUST_ENV=true` (if you want to honour system proxy settings).
360
+ - Override the API host with `PDFDANCER_BASE_URL` (e.g., sandbox or local environments). Defaults to `https://api.pdfdancer.com`.
361
+ - Tune HTTP read timeouts via the `timeout` argument on `PDFDancer.open()` and `PDFDancer.new()` (default: 30 seconds).
362
+ - For testing against self-signed certificates, call `pdfdancer.set_ssl_verify(False)` to temporarily disable TLS verification.
365
363
 
366
364
  ## Error Handling
367
365
 
@@ -413,14 +411,13 @@ You should see `(venv)` in your terminal prompt indicating the virtual environme
413
411
  # Install the package in editable mode with development dependencies
414
412
  pip install -e ".[dev]"
415
413
 
416
- # Alternatively, install dependencies separately:
414
+ # Alternatively, install runtime dependencies only:
417
415
  # pip install -e .
418
- # pip install -r requirements-dev.txt
419
416
  ```
420
417
 
421
418
  This installs:
422
419
  - The `pdfdancer` package in editable mode (changes reflect immediately)
423
- - Development dependencies: `pytest`, `build`, `twine`, etc.
420
+ - Development tooling including `pytest`, `pytest-cov`, `pytest-mock`, `black`, `isort`, `flake8`, `mypy`, `build`, and `twine`.
424
421
 
425
422
  #### 4. Configure API Token
426
423
 
@@ -452,7 +449,7 @@ pytest tests/test_models.py -v
452
449
  pytest tests/e2e/ -v
453
450
  ```
454
451
 
455
- All 123 tests should pass if everything is set up correctly.
452
+ All tests should pass if everything is set up correctly.
456
453
 
457
454
  ### Common Development Tasks
458
455
 
@@ -500,14 +497,15 @@ python release.py
500
497
  #### Code Quality
501
498
 
502
499
  ```bash
503
- # The project follows existing code style
504
- # No formatter is configured - match the existing patterns
500
+ # Format code
501
+ black src tests
502
+ isort src tests
505
503
 
506
- # Type checking (if using mypy)
507
- mypy src/pdfdancer/
504
+ # Lint
505
+ flake8 src tests
508
506
 
509
- # Run linting (if configured)
510
- pylint src/pdfdancer/
507
+ # Type checking
508
+ mypy src/pdfdancer/
511
509
  ```
512
510
 
513
511
  ### Project Structure
@@ -527,8 +525,10 @@ pdfdancer-client-python/_main/
527
525
  │ ├── e2e/ # End-to-end integration tests
528
526
  │ └── fixtures/ # Test fixtures and sample PDFs
529
527
  ├── docs/ # Documentation
528
+ ├── dist/ # Build artifacts (created after packaging)
529
+ ├── logs/ # Local execution logs (ignored in VCS)
530
530
  ├── pyproject.toml # Project metadata and dependencies
531
- ├── setup.py # Build configuration
531
+ ├── release.py # Helper for publishing releases
532
532
  └── README.md # This file
533
533
  ```
534
534
 
@@ -120,11 +120,9 @@ with helpers such as `delete()`, `move_to(x, y)`, or `edit()` depending on the o
120
120
  ## Configuration
121
121
 
122
122
  - Set `PDFDANCER_TOKEN` for authentication (preferred for local development and CI).
123
- - Override the API host with `PDFDANCER_BASE_URL` (e.g., sandbox environments).
124
- - Tune HTTP read timeouts via the `timeout` argument on `PDFDancer.open()` and `PDFDancer.new()`.
125
- - The HTTP client now keeps TLS connections warm with aggressive pooling and retries. Fine-tune via
126
- environment variables such as `PDFDANCER_POOL_CONNECTIONS`, `PDFDANCER_POOL_MAXSIZE`,
127
- `PDFDANCER_RETRY_TOTAL`, and `PDFDANCER_TRUST_ENV=true` (if you want to honour system proxy settings).
123
+ - Override the API host with `PDFDANCER_BASE_URL` (e.g., sandbox or local environments). Defaults to `https://api.pdfdancer.com`.
124
+ - Tune HTTP read timeouts via the `timeout` argument on `PDFDancer.open()` and `PDFDancer.new()` (default: 30 seconds).
125
+ - For testing against self-signed certificates, call `pdfdancer.set_ssl_verify(False)` to temporarily disable TLS verification.
128
126
 
129
127
  ## Error Handling
130
128
 
@@ -176,14 +174,13 @@ You should see `(venv)` in your terminal prompt indicating the virtual environme
176
174
  # Install the package in editable mode with development dependencies
177
175
  pip install -e ".[dev]"
178
176
 
179
- # Alternatively, install dependencies separately:
177
+ # Alternatively, install runtime dependencies only:
180
178
  # pip install -e .
181
- # pip install -r requirements-dev.txt
182
179
  ```
183
180
 
184
181
  This installs:
185
182
  - The `pdfdancer` package in editable mode (changes reflect immediately)
186
- - Development dependencies: `pytest`, `build`, `twine`, etc.
183
+ - Development tooling including `pytest`, `pytest-cov`, `pytest-mock`, `black`, `isort`, `flake8`, `mypy`, `build`, and `twine`.
187
184
 
188
185
  #### 4. Configure API Token
189
186
 
@@ -215,7 +212,7 @@ pytest tests/test_models.py -v
215
212
  pytest tests/e2e/ -v
216
213
  ```
217
214
 
218
- All 123 tests should pass if everything is set up correctly.
215
+ All tests should pass if everything is set up correctly.
219
216
 
220
217
  ### Common Development Tasks
221
218
 
@@ -263,14 +260,15 @@ python release.py
263
260
  #### Code Quality
264
261
 
265
262
  ```bash
266
- # The project follows existing code style
267
- # No formatter is configured - match the existing patterns
263
+ # Format code
264
+ black src tests
265
+ isort src tests
268
266
 
269
- # Type checking (if using mypy)
270
- mypy src/pdfdancer/
267
+ # Lint
268
+ flake8 src tests
271
269
 
272
- # Run linting (if configured)
273
- pylint src/pdfdancer/
270
+ # Type checking
271
+ mypy src/pdfdancer/
274
272
  ```
275
273
 
276
274
  ### Project Structure
@@ -290,8 +288,10 @@ pdfdancer-client-python/_main/
290
288
  │ ├── e2e/ # End-to-end integration tests
291
289
  │ └── fixtures/ # Test fixtures and sample PDFs
292
290
  ├── docs/ # Documentation
291
+ ├── dist/ # Build artifacts (created after packaging)
292
+ ├── logs/ # Local execution logs (ignored in VCS)
293
293
  ├── pyproject.toml # Project metadata and dependencies
294
- ├── setup.py # Build configuration
294
+ ├── release.py # Helper for publishing releases
295
295
  └── README.md # This file
296
296
  ```
297
297
 
@@ -0,0 +1,4 @@
1
+ # TODO
2
+
3
+ - [ ] handle missing htx
4
+ - [ ] remove pydantic dep, check other deps