pixxio-client 0.4.2__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 (43) hide show
  1. pixxio_client-0.4.2/CHANGELOG.md +130 -0
  2. pixxio_client-0.4.2/LICENSE +21 -0
  3. pixxio_client-0.4.2/MANIFEST.in +3 -0
  4. pixxio_client-0.4.2/PKG-INFO +649 -0
  5. pixxio_client-0.4.2/README.md +609 -0
  6. pixxio_client-0.4.2/pixxio_client/__init__.py +272 -0
  7. pixxio_client-0.4.2/pixxio_client/_base.py +1056 -0
  8. pixxio_client-0.4.2/pixxio_client/collections.py +385 -0
  9. pixxio_client-0.4.2/pixxio_client/directlinks.py +296 -0
  10. pixxio_client-0.4.2/pixxio_client/directories.py +248 -0
  11. pixxio_client-0.4.2/pixxio_client/downloadformats.py +39 -0
  12. pixxio_client-0.4.2/pixxio_client/exceptions.py +480 -0
  13. pixxio_client-0.4.2/pixxio_client/externalshares.py +328 -0
  14. pixxio_client-0.4.2/pixxio_client/files.py +869 -0
  15. pixxio_client-0.4.2/pixxio_client/filestates.py +38 -0
  16. pixxio_client-0.4.2/pixxio_client/jobs.py +264 -0
  17. pixxio_client-0.4.2/pixxio_client/keywords.py +127 -0
  18. pixxio_client-0.4.2/pixxio_client/licensereleases.py +152 -0
  19. pixxio_client-0.4.2/pixxio_client/licenses.py +133 -0
  20. pixxio_client-0.4.2/pixxio_client/metadata.py +224 -0
  21. pixxio_client-0.4.2/pixxio_client/modelreleases.py +206 -0
  22. pixxio_client-0.4.2/pixxio_client/models.py +162 -0
  23. pixxio_client-0.4.2/pixxio_client/permissiongroups.py +38 -0
  24. pixxio_client-0.4.2/pixxio_client/pixxio_types.py +87 -0
  25. pixxio_client-0.4.2/pixxio_client/portals.py +144 -0
  26. pixxio_client-0.4.2/pixxio_client/properties.py +159 -0
  27. pixxio_client-0.4.2/pixxio_client/propertyreleases.py +212 -0
  28. pixxio_client-0.4.2/pixxio_client/synonyms.py +82 -0
  29. pixxio_client-0.4.2/pixxio_client/uploadlinks.py +292 -0
  30. pixxio_client-0.4.2/pixxio_client/users.py +177 -0
  31. pixxio_client-0.4.2/pixxio_client/variantstacks.py +117 -0
  32. pixxio_client-0.4.2/pixxio_client/webhook_middleware.py +378 -0
  33. pixxio_client-0.4.2/pixxio_client/webhook_parser.py +532 -0
  34. pixxio_client-0.4.2/pixxio_client.egg-info/PKG-INFO +649 -0
  35. pixxio_client-0.4.2/pixxio_client.egg-info/SOURCES.txt +41 -0
  36. pixxio_client-0.4.2/pixxio_client.egg-info/dependency_links.txt +1 -0
  37. pixxio_client-0.4.2/pixxio_client.egg-info/requires.txt +5 -0
  38. pixxio_client-0.4.2/pixxio_client.egg-info/top_level.txt +1 -0
  39. pixxio_client-0.4.2/publish_pypi.ps1 +78 -0
  40. pixxio_client-0.4.2/pyproject.toml +3 -0
  41. pixxio_client-0.4.2/requirements-release.txt +3 -0
  42. pixxio_client-0.4.2/setup.cfg +4 -0
  43. pixxio_client-0.4.2/setup.py +47 -0
@@ -0,0 +1,130 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ > **Maintenance note:** this log was not kept current between `0.1` and `0.3`. The
9
+ > `0.4.0`–`0.4.2` and `Unreleased` sections were reconstructed from git history in
10
+ > October 2026; the `0.1` and `0.2` sections are retrospective summaries because no
11
+ > per-release record was ever written for them.
12
+
13
+ ## [Unreleased]
14
+
15
+ ## [0.4.2] - 2026-10-14
16
+
17
+ First public PyPI release. Includes the earlier internal `0.4.2` changes and the
18
+ public-release preparation below.
19
+
20
+ ### Security
21
+ - Removed all hardcoded credentials from the repository ahead of the open-source release:
22
+ - Test modules read the API key and host from `PIXXIO_TEST_API_KEY` / `PIXXIO_TEST_HOST` through `tests/credentials.py`.
23
+ - Example scripts take credentials from `PIXXIO_API_KEY` / `PIXXIO_HOST` and fail with a clear message when neither the CLI flag nor the environment provides them.
24
+ - `webhook_stub` requires `PIXXIO_WEBHOOK_SECRET` instead of falling back to a built-in signing secret.
25
+ - Redacted the `applicationKey` values captured in `event_json_examples/` fixtures.
26
+ - Replaced demo credentials in `docs/TEST_ENVIRONMENT.md` with placeholders.
27
+ - Anonymized personal data in `event_json_examples/` fixtures and the webhook docs: real user logins, display names and internal user IDs became `demo_*` placeholders.
28
+ - Removed internal hostnames: test and example hosts now come from `PIXXIO_TEST_HOST` / `PIXXIO_HOST` with no defaults, captured host headers in fixtures were replaced with `webhook.example.com`, and deployment docs use placeholders.
29
+ - Added `.env.example` documenting every supported environment variable.
30
+
31
+ ### Added
32
+ - Added the MIT `LICENSE` file and declared `python_requires >= 3.10` in `setup.py`.
33
+ - Added a PEP 517 build configuration, PyPI README/Markdown description, repository and documentation links, search keywords, and SPDX MIT license metadata.
34
+ - Added `publish_pypi.ps1` and `requirements-release.txt` for validated wheel/source builds and PyPI uploads using an encrypted local Windows credential; Forgejo publishing remains unchanged.
35
+ - Real-world InDesign examples: `examples/analyze_indd_links_com.py`, `apply_pixxio_labels_to_indd.py`, `build_pixxio_image_mapping_csv.py`, `download_collection_assets.py` and `upload_changed_indd_files.py`.
36
+ - Webhook payload fixtures in `event_json_examples/` covering file, direct link, metadata, keyword, language, file state, collection, external share, marked-user and license events.
37
+ - `AGENTS.md` documentation contracts for the repository root and each major folder.
38
+ - `.vscode/settings.json` workspace settings and `diagnose_failing_files.py` helper.
39
+ - `tests/credentials.py` shared credential lookup and a complete `tests/README.md` inventory.
40
+
41
+ ### Changed
42
+ - Parameterized `webhook_stub/docker-compose.yml` through a local `.env` (`PIXXIO_WEBHOOK_SECRET`, `STUB_HOST`, `STUB_NETWORK`) and added `webhook_stub/.env.example`; dropped the obsolete compose `version` key.
43
+ - Rewrote `README.md` against the current API surface: all 27 resource classes, payload builders, webhooks, and complete documentation/example/test indexes.
44
+ - Pointed installation, development, repository and issue links at the public GitHub repository and documented installation from PyPI.
45
+ - Anchored the `.gitignore` test patterns to the repository root so the test suite under `tests/` is no longer ignored in Git; distribution archives contain the library rather than the repository tests.
46
+ - Documented the Python 3.10+ requirement (the `metadata` module uses PEP 604 union syntax).
47
+ - Added `pywin32` to `requirements.txt`.
48
+ - Turned `docs/README.md` into a real documentation index.
49
+
50
+ ### Removed
51
+ - Removed the internal push helper script from version control; it is now covered by the `push_*.bat` entry in `.gitignore`.
52
+ - Trimmed `.github/copilot-instructions.md` down to a pointer at the root `AGENTS.md`.
53
+
54
+ ### Fixed
55
+
56
+ - List requests no longer send pagination parameters to endpoints that do not support them.
57
+ - `ReadOnlyResourceBase` gained opt-out pagination handling through the `_paged` flag.
58
+ - Disabled pagination for `DownloadFormat`, `FileState`, `LicenseRelease`, `ModelRelease`, `Portal` and `PropertyRelease`.
59
+
60
+ ## [0.4.1] - 2026-05-04
61
+
62
+ ### Fixed
63
+ - Refactored response field handling in the file convert path so conversion requests no longer carry an unsupported `responseFields` parameter.
64
+
65
+ ### Documentation
66
+ - Expanded `docs/API_REFERENCE.md` and `docs/DEVELOPER_GUIDE.md` with builder usage for collections and the newer resources.
67
+ - Updated `examples/basic_usage.py` to the builder-based API.
68
+
69
+ ## [0.4.0] - 2026-04-29
70
+
71
+ ### Added
72
+ - Fluent payload builders plus `list()`, `create()` and `update()` convenience methods across the CRUD resources: `Collection`, `DirectLink`, `Directory`, `ExternalShare`, `File`, `License`, `LicenseRelease`, `Model`, `ModelRelease`, `Property`, `PropertyRelease`, `UploadLink`, `User` and `VariantStack`.
73
+ - `FileDeleteBuilder` and `File.delete()`.
74
+ - `CollectionDeleteBuilder` and `Collection.delete()`.
75
+ - Job helpers: `Job.get_status()`, `Job.abort()`, `wait_for_completion()` and `async_wait_for_completion()`.
76
+
77
+ ### Changed
78
+ - Reworked response handling in `File` and improved metadata option processing.
79
+ - Improved docstrings across the resource modules.
80
+
81
+ ## [0.3] - 2026-04-23
82
+
83
+ ### Fixed
84
+ - Prevented automatic `responseFields` injection on specialized GET endpoints that do not support it.
85
+ - Added a shared base opt-out mechanism and applied it to:
86
+ - `File.download()` convert endpoints
87
+ - `Directory.get_tree()`
88
+ - `Keyword.download()` CSV endpoint
89
+ - `Synonym.get_columns()`
90
+ - `PortalPage.get()` and `PortalUser.get()`
91
+
92
+ ### Added
93
+ - Focused unit tests for response field injection behavior in `tests/response_fields_injection_checks.py`.
94
+ - Method-specific response field filtering (`GET_LIST` / `GET_SINGLE`).
95
+ - Webhook parser support for metadata field truncate, keyword added and keyword removed events.
96
+ - `_ResponseObject` string formatting, `to_dict()`, and graceful handling of missing attributes.
97
+
98
+ ### Documentation
99
+ - Added developer guidance for specialized endpoint response field behavior.
100
+ - Added error handling notes for response field parameter mismatches.
101
+
102
+ ## [0.2] - 2025-11-12
103
+
104
+ ### Added
105
+ - Webhook parser (`pixxio_client/webhook_parser.py`) built around the generalized `EventData` model, plus `pixxio_client/webhook_middleware.py`.
106
+ - PIXXIO webhook stub application for local receiver testing, with Docker support, event storage and a web interface.
107
+ - HMAC-SHA256 webhook signature verification.
108
+ - `File.upload_url_and_wait()` for uploading an asset from a remote URL.
109
+ - `FileUpdateBuilder`, `FileUploadBuilder` and `File.update()`.
110
+ - Metadata value builders with field validation, bulk add/replace/remove and selection option lookup.
111
+ - Per-method response field filtering for `File`.
112
+
113
+ ### Changed
114
+ - Added pagination support to `ReadOnlyResourceBase` and the metadata resources.
115
+ - Introduced query parameter transformation helpers.
116
+ - Consolidated all documentation under `docs/` and added the webhook guides in `docs/webhook/`.
117
+
118
+ ### Fixed
119
+ - `CustomMetadata` and `StandardMetadata` now inherit from `ResourceBase`.
120
+ - Corrected package discovery in `setup.py`.
121
+ - The JSON `Accept` header is now sent with requests.
122
+
123
+ ## [0.1] - 2025-10-02
124
+
125
+ ### Added
126
+ - Initial release: `Client` and `Authentication`, `ReadOnlyResourceBase`, `ResourceBase`, `ResourceUploadMixin` and `ResourceJobMixin`.
127
+ - Resource classes for all endpoints: files, collections, users, directories, jobs, keywords, licenses, license releases, models, model releases, properties, property releases, variant stacks, upload links, direct links, external shares, portals, file states, download formats, permission groups and metadata.
128
+ - Custom exception hierarchy for HTTP status codes and business logic errors.
129
+ - OpenAPI-derived type hints, README, API reference and developer documentation.
130
+ - Example scripts and an integration test suite.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 everleah
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,3 @@
1
+ include LICENSE README.md CHANGELOG.md
2
+ include pyproject.toml requirements-release.txt publish_pypi.ps1
3
+ prune tests