pdfdancer-client-python 0.3.3__tar.gz → 0.3.5__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.
Files changed (80) hide show
  1. pdfdancer_client_python-0.3.5/.claude/commands/implement-new-api-features.md +8 -0
  2. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/CLAUDE.md +1 -1
  3. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/PKG-INFO +7 -7
  4. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/README.md +6 -6
  5. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/docs/api-schemas/v0.yml +1661 -1463
  6. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/docs/api-schemas/v1.yml +228 -682
  7. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/pyproject.toml +1 -1
  8. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer/__init__.py +8 -0
  9. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer/models.py +118 -0
  10. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer/pdfdancer_v1.py +41 -9
  11. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer/types.py +147 -0
  12. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer_client_python.egg-info/PKG-INFO +7 -7
  13. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer_client_python.egg-info/SOURCES.txt +2 -0
  14. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/test.sh +10 -6
  15. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/__init__.py +3 -2
  16. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/pdf_assertions.py +266 -1
  17. pdfdancer_client_python-0.3.5/tests/e2e/test_image_transform.py +564 -0
  18. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_path_comprehensive.py +9 -8
  19. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_pdfdancer.py +8 -2
  20. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_redact.py +9 -7
  21. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/test_anonymous_token.py +25 -5
  22. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/.claude/commands/discuss.md +0 -0
  23. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/.flake8 +0 -0
  24. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/.github/workflows/ci.yml +0 -0
  25. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/.github/workflows/daily-tests.yml +0 -0
  26. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/.gitignore +0 -0
  27. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/LICENSE +0 -0
  28. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/NOTICE +0 -0
  29. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/TODO.md +0 -0
  30. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/check.py +0 -0
  31. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/media/logo-orange-512h.webp +0 -0
  32. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/media/logo-orange-60h.webp +0 -0
  33. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/release.py +0 -0
  34. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/setup.cfg +0 -0
  35. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer/exceptions.py +0 -0
  36. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer/fingerprint.py +0 -0
  37. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer/image_builder.py +0 -0
  38. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer/page_builder.py +0 -0
  39. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer/paragraph_builder.py +0 -0
  40. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer/path_builder.py +0 -0
  41. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer/text_line_builder.py +0 -0
  42. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer_client_python.egg-info/dependency_links.txt +0 -0
  43. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer_client_python.egg-info/requires.txt +0 -0
  44. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/src/pdfdancer_client_python.egg-info/top_level.txt +0 -0
  45. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/__init__.py +0 -0
  46. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/conftest.py +0 -0
  47. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_acroform.py +0 -0
  48. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_bezier_builder.py +0 -0
  49. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_context_manager.py +0 -0
  50. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_form_x_objects.py +0 -0
  51. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_image.py +0 -0
  52. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_line.py +0 -0
  53. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_line_builder.py +0 -0
  54. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_new_pdf.py +0 -0
  55. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_page.py +0 -0
  56. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_paragraph.py +0 -0
  57. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_path.py +0 -0
  58. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_path_builder.py +0 -0
  59. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_path_builder_rectangle.py +0 -0
  60. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_positioning.py +0 -0
  61. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_rectangle_builder.py +0 -0
  62. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_singular_selection.py +0 -0
  63. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_snapshot.py +0 -0
  64. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/e2e/test_text_line_edit.py +0 -0
  65. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/fixtures/DancingScript-Regular.ttf +0 -0
  66. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/fixtures/Empty.pdf +0 -0
  67. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/fixtures/JetBrainsMono-Regular.ttf +0 -0
  68. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/fixtures/Showcase.pdf +0 -0
  69. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/fixtures/basic-paths.pdf +0 -0
  70. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/fixtures/form-xobject-example.pdf +0 -0
  71. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/fixtures/logo-80.png +0 -0
  72. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/fixtures/mixed-form-types.pdf +0 -0
  73. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/test_fingerprint.py +0 -0
  74. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/test_models.py +0 -0
  75. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/test_openapi_compliance.py +0 -0
  76. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/test_path_models.py +0 -0
  77. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/test_pdf_object_equality.py +0 -0
  78. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/test_rate_limit.py +0 -0
  79. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/tests/test_standard_fonts.py +0 -0
  80. {pdfdancer_client_python-0.3.3 → pdfdancer_client_python-0.3.5}/update-api-spec.sh +0 -0
@@ -0,0 +1,8 @@
1
+ Check the updates in docs/api-schemas (use diff).
2
+ Analyze which new features are available in the api. Ignore anything backoffice related, like tenant management, api keys management or similar.
3
+ We are interested in PDF features.
4
+ For each change you encounter:
5
+ - analyze the current implementation and tests
6
+ - make a plan how to fully support the new api feature including e2e tests
7
+ - Show me a brief summary of what you found and what your plan is
8
+ - Wait for my approval
@@ -95,7 +95,7 @@ pdf.save("output.pdf")
95
95
  ### Initialization
96
96
 
97
97
  ```python
98
- # Open existing PDF with token from env var PDFDANCER_TOKEN
98
+ # Open existing PDF with token from env var PDFDANCER_API_TOKEN
99
99
  pdf = PDFDancer.open(pdf_data="document.pdf")
100
100
 
101
101
  # Open with explicit token
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pdfdancer-client-python
3
- Version: 0.3.3
3
+ Version: 0.3.5
4
4
  Summary: Python client for PDFDancer API
5
5
  Author-email: "The Famous Cat Ltd." <hi@thefamouscat.com>
6
6
  License:
@@ -289,7 +289,7 @@ from pdfdancer import Color, PDFDancer, StandardFonts
289
289
 
290
290
  with PDFDancer.open(
291
291
  pdf_data=Path("input.pdf"),
292
- token="your-api-token", # optional when PDFDANCER_TOKEN is set
292
+ token="your-api-token", # optional when PDFDANCER_API_TOKEN is set
293
293
  base_url="https://api.pdfdancer.com",
294
294
  ) as pdf:
295
295
  # Locate and update an existing paragraph
@@ -443,7 +443,7 @@ with PDFDancer.open("confidential.pdf") as pdf:
443
443
 
444
444
  ## Configuration
445
445
 
446
- - Set `PDFDANCER_TOKEN` for authentication (preferred for local development and CI).
446
+ - Set `PDFDANCER_API_TOKEN` for authentication (preferred). `PDFDANCER_TOKEN` is also supported for backwards compatibility.
447
447
  - Override the API host with `PDFDANCER_BASE_URL` (e.g., sandbox or local environments). Defaults to `https://api.pdfdancer.com`.
448
448
  - Tune HTTP read timeouts via the `timeout` argument on `PDFDancer.open()` and `PDFDancer.new()` (default: 30 seconds).
449
449
  - For testing against self-signed certificates, call `pdfdancer.set_ssl_verify(False)` to temporarily disable TLS verification.
@@ -513,13 +513,13 @@ Set your PDFDancer API token as an environment variable:
513
513
 
514
514
  ```bash
515
515
  # On macOS/Linux:
516
- export PDFDANCER_TOKEN="your-api-token-here"
516
+ export PDFDANCER_API_TOKEN="your-api-token-here"
517
517
 
518
518
  # On Windows (Command Prompt):
519
- set PDFDANCER_TOKEN=your-api-token-here
519
+ set PDFDANCER_API_TOKEN=your-api-token-here
520
520
 
521
521
  # On Windows (PowerShell):
522
- $env:PDFDANCER_TOKEN="your-api-token-here"
522
+ $env:PDFDANCER_API_TOKEN="your-api-token-here"
523
523
  ```
524
524
 
525
525
  For permanent configuration, add this to your shell profile (`~/.bashrc`, `~/.zshrc`, etc.).
@@ -651,7 +651,7 @@ pip install -e .
651
651
 
652
652
  #### Test Failures
653
653
 
654
- - Ensure `PDFDANCER_TOKEN` is set for e2e tests
654
+ - Ensure `PDFDANCER_API_TOKEN` is set for e2e tests
655
655
  - Check network connectivity to the PDFDancer API
656
656
  - Verify you're using Python 3.10 or higher
657
657
 
@@ -50,7 +50,7 @@ from pdfdancer import Color, PDFDancer, StandardFonts
50
50
 
51
51
  with PDFDancer.open(
52
52
  pdf_data=Path("input.pdf"),
53
- token="your-api-token", # optional when PDFDANCER_TOKEN is set
53
+ token="your-api-token", # optional when PDFDANCER_API_TOKEN is set
54
54
  base_url="https://api.pdfdancer.com",
55
55
  ) as pdf:
56
56
  # Locate and update an existing paragraph
@@ -204,7 +204,7 @@ with PDFDancer.open("confidential.pdf") as pdf:
204
204
 
205
205
  ## Configuration
206
206
 
207
- - Set `PDFDANCER_TOKEN` for authentication (preferred for local development and CI).
207
+ - Set `PDFDANCER_API_TOKEN` for authentication (preferred). `PDFDANCER_TOKEN` is also supported for backwards compatibility.
208
208
  - Override the API host with `PDFDANCER_BASE_URL` (e.g., sandbox or local environments). Defaults to `https://api.pdfdancer.com`.
209
209
  - Tune HTTP read timeouts via the `timeout` argument on `PDFDancer.open()` and `PDFDancer.new()` (default: 30 seconds).
210
210
  - For testing against self-signed certificates, call `pdfdancer.set_ssl_verify(False)` to temporarily disable TLS verification.
@@ -274,13 +274,13 @@ Set your PDFDancer API token as an environment variable:
274
274
 
275
275
  ```bash
276
276
  # On macOS/Linux:
277
- export PDFDANCER_TOKEN="your-api-token-here"
277
+ export PDFDANCER_API_TOKEN="your-api-token-here"
278
278
 
279
279
  # On Windows (Command Prompt):
280
- set PDFDANCER_TOKEN=your-api-token-here
280
+ set PDFDANCER_API_TOKEN=your-api-token-here
281
281
 
282
282
  # On Windows (PowerShell):
283
- $env:PDFDANCER_TOKEN="your-api-token-here"
283
+ $env:PDFDANCER_API_TOKEN="your-api-token-here"
284
284
  ```
285
285
 
286
286
  For permanent configuration, add this to your shell profile (`~/.bashrc`, `~/.zshrc`, etc.).
@@ -412,7 +412,7 @@ pip install -e .
412
412
 
413
413
  #### Test Failures
414
414
 
415
- - Ensure `PDFDANCER_TOKEN` is set for e2e tests
415
+ - Ensure `PDFDANCER_API_TOKEN` is set for e2e tests
416
416
  - Check network connectivity to the PDFDancer API
417
417
  - Verify you're using Python 3.10 or higher
418
418