pdfdancer-client-python 0.2.17__py3-none-any.whl → 0.2.19__py3-none-any.whl

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/types.py CHANGED
@@ -266,6 +266,13 @@ class ParagraphObject(PDFObjectBase):
266
266
  super().__init__(client, object_ref.internal_id, object_ref.type, object_ref.position)
267
267
  self._object_ref = object_ref
268
268
 
269
+ def __getattr__(self, name):
270
+ """
271
+ Automatically delegate attribute/method lookup to _object_ref
272
+ if it's not found on this object.
273
+ """
274
+ return getattr(self._object_ref, name)
275
+
269
276
  def edit(self) -> ParagraphEdit:
270
277
  return ParagraphEdit(self, self.object_ref())
271
278
 
@@ -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.19
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
 
@@ -0,0 +1,15 @@
1
+ pdfdancer/__init__.py,sha256=ZZOarTVp9OJQUYA8PsBn8FWNCEHIaCcSHitd4dpBR5w,2150
2
+ pdfdancer/exceptions.py,sha256=WAcyTacykJwjiaURrQamEgizLxv0vSlSio6NMikg4D0,1558
3
+ pdfdancer/fingerprint.py,sha256=Ue5QzpqsKlbYefvKU0ULV4NgMU3AOTcseeV9HfiPJXI,3093
4
+ pdfdancer/image_builder.py,sha256=Omxc2LcieJ1MbvWBXR5_sfia--eAucTUe0KWgr22HYo,842
5
+ pdfdancer/models.py,sha256=kK2tIRwJ8XQJZZ__uSgvU6E0NRtj11Jzwwhy-d8EKSQ,32210
6
+ pdfdancer/paragraph_builder.py,sha256=x5XhPo-GUeovQuGbrH7MyyenITcy6in7bz6CD9r-ZqU,9458
7
+ pdfdancer/path_builder.py,sha256=KJC8toLhbCbtnxz8pphtpzgoBemGHlrcC1s02RAvCJ8,15862
8
+ pdfdancer/pdfdancer_v1.py,sha256=dSkrWfkbon-d5HcgOj1hoJwaFMnr7rWp_laGhXF64jE,87364
9
+ pdfdancer/types.py,sha256=fMYNmT73ism5bN8ij8G8hELKWQA8-8o7AlIX6YFcSEw,12652
10
+ pdfdancer_client_python-0.2.19.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
11
+ pdfdancer_client_python-0.2.19.dist-info/licenses/NOTICE,sha256=xaC4l-IChAmtViNDie8ZWzUk0O6XRMyzOl0zLmVZ2HE,232
12
+ pdfdancer_client_python-0.2.19.dist-info/METADATA,sha256=Ex5-8upudpJ8ZBvdppMnU_zB2OK58iIiD3um9xMfek4,24668
13
+ pdfdancer_client_python-0.2.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
14
+ pdfdancer_client_python-0.2.19.dist-info/top_level.txt,sha256=ICwSVRpcCKrdBF9QlaX9Y0e_N3Nk1p7QVxadGOnbxeY,10
15
+ pdfdancer_client_python-0.2.19.dist-info/RECORD,,
@@ -1,13 +0,0 @@
1
- pdfdancer/__init__.py,sha256=kMxx9nYmp_NdsnWTl6ebmqh2q6G7F-iYECJZfpgVSSo,1935
2
- pdfdancer/exceptions.py,sha256=Y5zwNVZprsv2hvKX304cXWobJt11nrEhCzLklu2wiO8,1567
3
- pdfdancer/image_builder.py,sha256=Omxc2LcieJ1MbvWBXR5_sfia--eAucTUe0KWgr22HYo,842
4
- pdfdancer/models.py,sha256=Tw77OWjELD4sfDqnCwmhczrKClwyLan9gXTqsvgoJxE,24765
5
- pdfdancer/paragraph_builder.py,sha256=x5XhPo-GUeovQuGbrH7MyyenITcy6in7bz6CD9r-ZqU,9458
6
- pdfdancer/pdfdancer_v1.py,sha256=WOhsRPQJew8162_lnkn9bvfFE6TJN1AziHkcbpk-xyA,56470
7
- pdfdancer/types.py,sha256=SYbyzFJu1nDartalqgrceSTiLtsqZgIFQndvHz5Tnxw,12435
8
- pdfdancer_client_python-0.2.17.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
9
- pdfdancer_client_python-0.2.17.dist-info/licenses/NOTICE,sha256=xaC4l-IChAmtViNDie8ZWzUk0O6XRMyzOl0zLmVZ2HE,232
10
- pdfdancer_client_python-0.2.17.dist-info/METADATA,sha256=ccmn874VVkUAXd_LmKPqnBw69VvhpdGzQ2yfJCdh3tI,24665
11
- pdfdancer_client_python-0.2.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
12
- pdfdancer_client_python-0.2.17.dist-info/top_level.txt,sha256=ICwSVRpcCKrdBF9QlaX9Y0e_N3Nk1p7QVxadGOnbxeY,10
13
- pdfdancer_client_python-0.2.17.dist-info/RECORD,,