spaps 0.5.0__tar.gz → 0.6.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.
- {spaps-0.5.0 → spaps-0.6.2}/.gitignore +33 -0
- spaps-0.6.2/CHANGELOG.md +137 -0
- {spaps-0.5.0 → spaps-0.6.2}/FULL_CHECKLIST.md +1 -1
- spaps-0.6.2/PKG-INFO +799 -0
- spaps-0.6.2/README.md +743 -0
- {spaps-0.5.0 → spaps-0.6.2}/TDD_PLAN.md +1 -1
- {spaps-0.5.0 → spaps-0.6.2}/pyproject.toml +5 -1
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/__init__.py +214 -4
- spaps-0.6.2/src/spaps_client/app_links.py +230 -0
- spaps-0.6.2/src/spaps_client/app_links_async.py +183 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/async_client.py +56 -1
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/auth.py +456 -26
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/auth_async.py +287 -15
- spaps-0.6.2/src/spaps_client/capability.py +785 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/client.py +114 -1
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/crypto.py +11 -6
- spaps-0.6.2/src/spaps_client/dayrate.py +239 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/dayrate_async.py +17 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/email.py +16 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/email_async.py +3 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/entitlements.py +281 -5
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/entitlements_async.py +230 -4
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/issue_reporting.py +248 -7
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/issue_reporting_async.py +147 -3
- spaps-0.6.2/src/spaps_client/marketing.py +306 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/payments.py +295 -55
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/payments_async.py +66 -65
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/sessions.py +4 -3
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/sessions_async.py +4 -4
- spaps-0.6.2/src/spaps_client/skill_evals.py +226 -0
- spaps-0.6.2/src/spaps_client/skill_evals_async.py +226 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/storage.py +39 -3
- spaps-0.6.2/src/spaps_client/usage.py +430 -0
- spaps-0.6.2/src/spaps_client/usage_async.py +216 -0
- spaps-0.6.2/src/spaps_client/users.py +409 -0
- spaps-0.6.2/src/spaps_client/users_async.py +272 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/whitelist.py +5 -8
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/whitelist_async.py +5 -9
- spaps-0.6.2/src/spaps_client/x402.py +201 -0
- spaps-0.6.2/src/spaps_client/x402_async.py +241 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/integration/test_build.py +23 -1
- spaps-0.6.2/tests/unit/test_app_links.py +177 -0
- spaps-0.6.2/tests/unit/test_async_client.py +838 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_auth.py +521 -3
- spaps-0.6.2/tests/unit/test_capability.py +215 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_client.py +4 -4
- spaps-0.6.2/tests/unit/test_dayrate.py +137 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_email.py +31 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_entitlements.py +343 -0
- spaps-0.6.2/tests/unit/test_issue_reporting.py +635 -0
- spaps-0.6.2/tests/unit/test_marketing.py +237 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_payments.py +343 -212
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_quickstart_full_adoption_async.py +80 -11
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_readme_snippets.py +17 -5
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_sessions.py +2 -4
- spaps-0.6.2/tests/unit/test_skill_evals.py +476 -0
- spaps-0.6.2/tests/unit/test_storage.py +110 -0
- spaps-0.6.2/tests/unit/test_usage.py +405 -0
- spaps-0.6.2/tests/unit/test_users.py +343 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_users_async.py +148 -1
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_whitelist.py +7 -10
- spaps-0.6.2/tests/unit/test_x402.py +206 -0
- spaps-0.5.0/CHANGELOG.md +0 -83
- spaps-0.5.0/PKG-INFO +0 -330
- spaps-0.5.0/README.md +0 -274
- spaps-0.5.0/src/spaps_client/usage.py +0 -266
- spaps-0.5.0/src/spaps_client/usage_async.py +0 -140
- spaps-0.5.0/src/spaps_client/users.py +0 -156
- spaps-0.5.0/src/spaps_client/users_async.py +0 -102
- spaps-0.5.0/tests/unit/test_async_client.py +0 -376
- spaps-0.5.0/tests/unit/test_issue_reporting.py +0 -189
- spaps-0.5.0/tests/unit/test_storage.py +0 -39
- spaps-0.5.0/tests/unit/test_usage.py +0 -205
- {spaps-0.5.0 → spaps-0.6.2}/LICENSE +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/TODO.md +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/docs/RELEASE_CHECKLIST.md +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/scripts/manage_version.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/config.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/crypto_async.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/device_flow.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/http.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/http_async.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/metrics.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/metrics_async.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/permissions.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/py.typed +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/secure_messages.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/secure_messages_async.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/support_telemetry.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/webhooks.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/conftest.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/integration/test_smoke.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_config.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_device_flow.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_http.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_metadata.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_metrics.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_permissions.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_secure_messages.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_support_telemetry.py +0 -0
- {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_webhooks.py +0 -0
|
@@ -22,6 +22,7 @@ coverage-*/
|
|
|
22
22
|
**/coverage/
|
|
23
23
|
**/coverage-*/
|
|
24
24
|
**/.coverage
|
|
25
|
+
**/.coverage.*
|
|
25
26
|
**/.pytest_cache/
|
|
26
27
|
**/.mypy_cache/
|
|
27
28
|
**/.ruff_cache/
|
|
@@ -78,7 +79,13 @@ storybook-static/
|
|
|
78
79
|
# IDE
|
|
79
80
|
.vscode/
|
|
80
81
|
.idea/
|
|
82
|
+
.codex/
|
|
83
|
+
.mcp.json
|
|
81
84
|
.claude/settings.local.json
|
|
85
|
+
.claude/skills/
|
|
86
|
+
.beads/*.db
|
|
87
|
+
.beads/*.db-shm
|
|
88
|
+
.beads/*.db-wal
|
|
82
89
|
*.swp
|
|
83
90
|
*.swo
|
|
84
91
|
*.swn
|
|
@@ -151,6 +158,18 @@ backup-feb8.sql
|
|
|
151
158
|
# Stripe CLI
|
|
152
159
|
.stripe-listen.pid
|
|
153
160
|
|
|
161
|
+
# Local Solana Devnet keypairs
|
|
162
|
+
*-devnet.json
|
|
163
|
+
|
|
164
|
+
# Local modes/swarm artifacts
|
|
165
|
+
.ntm/
|
|
166
|
+
.skillbox/
|
|
167
|
+
artifacts/openapi-contract/
|
|
168
|
+
MODES_ANALYSIS_PROGRESS.md
|
|
169
|
+
MODES_OF_REASONING_REPORT_AND_ANALYSIS_OF_PROJECT.md
|
|
170
|
+
MODE_OUTPUT_*.md
|
|
171
|
+
MODES_SWARM/
|
|
172
|
+
|
|
154
173
|
# OS files
|
|
155
174
|
Thumbs.db
|
|
156
175
|
Desktop.ini
|
|
@@ -164,6 +183,7 @@ Desktop.ini
|
|
|
164
183
|
test-results/
|
|
165
184
|
playwright-report/
|
|
166
185
|
playwright/.cache/
|
|
186
|
+
tests/artifacts/
|
|
167
187
|
|
|
168
188
|
# Lock files that shouldn't be committed for libraries
|
|
169
189
|
# (keep package-lock.json for applications)
|
|
@@ -171,3 +191,16 @@ playwright/.cache/
|
|
|
171
191
|
# pnpm-lock.yaml*.tgz
|
|
172
192
|
|
|
173
193
|
**/coverage.xml
|
|
194
|
+
|
|
195
|
+
context.yaml
|
|
196
|
+
MODES_OF_REASONING_SECOND_PASS_REPORT.md
|
|
197
|
+
skillbox-config/
|
|
198
|
+
|
|
199
|
+
# Simplify/refactor tool run artifacts
|
|
200
|
+
refactor/
|
|
201
|
+
|
|
202
|
+
# bv (beads viewer) local config and caches
|
|
203
|
+
.bv/
|
|
204
|
+
|
|
205
|
+
# Beads compliance audit dir (managed by /beads-compliance-and-completion-verification skill)
|
|
206
|
+
/beads_compliance_audit/
|
spaps-0.6.2/CHANGELOG.md
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [0.6.2] - 2026-06-16
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Accepted `stream`, `owner_id`, `subject_override`, and `body_override` on `EmailClient.send()` and accepted `stream` on `AsyncEmailClient.send()` so Python consumers can delegate SPAPS email sends without hand-rolling the `/api/email/send` envelope.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- Bumped the Python client package metadata to `0.6.2`.
|
|
18
|
+
|
|
19
|
+
## [0.6.1] - 2026-06-14
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- Added sync `DayrateClient` helpers and sync/async `AppLinksClient` helpers, with high-level `SpapsClient.dayrate`, `SpapsClient.app_links`, and `AsyncSpapsClient.app_links` accessors.
|
|
24
|
+
- Added sync and async `UsersClient.memberships` helpers for listing, inviting/adding, and removing app account users.
|
|
25
|
+
- Added sync and async `EntitlementsClient.project_grants` helpers for granting, revoking, listing, checking, and claiming project access grants.
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- Accepted canonical SPAPS password reset request envelopes that return `success`, `data.email`, `data.sent_at`, `request_id`, and `timestamp` without requiring a top-level English `message`.
|
|
30
|
+
- Exposed omitted password reset request messages as `None` instead of an empty string placeholder so apps keep ownership of success copy.
|
|
31
|
+
- Preserved password reset confirmation parsing for canonical envelopes where the success copy lives at `data.message`.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- Bumped the Python client package metadata to `0.6.1`; HTMA should consume `spaps>=0.6.1` or the matching unreleased local wheel/source checkout before retrying the reset flow.
|
|
36
|
+
|
|
37
|
+
## [0.6.0] - 2026-06-13
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
- Added sync and async auth helpers for OIDC nonce/sign-in, WebAuthn registration/assertion, TOTP MFA enrollment/verification/disable, and SMS OTP request/verify flows.
|
|
42
|
+
- Added typed MFA challenge responses so token-issuing auth methods can return either tokens or an MFA challenge without storing incomplete credentials.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- Bumped the Python client package metadata to `0.6.0`.
|
|
47
|
+
|
|
48
|
+
## [0.5.1] - 2026-06-04
|
|
49
|
+
|
|
50
|
+
### Added
|
|
51
|
+
|
|
52
|
+
- Added sync and async issue-reporting screenshot attachment helpers for private upload, list, access URL, delete, and attach-by-ID create/update/reply flows.
|
|
53
|
+
|
|
54
|
+
## [0.5.0] - 2026-03-29
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
|
|
58
|
+
- End-user issue-report flows across the Python client surface.
|
|
59
|
+
- Support-telemetry helpers aligned with the current SPAPS platform APIs.
|
|
60
|
+
|
|
61
|
+
### Changed
|
|
62
|
+
|
|
63
|
+
- Refreshed package docs and OSS-facing references for the published client surface.
|
|
64
|
+
|
|
65
|
+
## [0.4.1] - 2026-02-18
|
|
66
|
+
|
|
67
|
+
### Changed
|
|
68
|
+
|
|
69
|
+
- Relaxed required fields in email and entitlement schemas for forward compatibility.
|
|
70
|
+
- Relaxed `Entitlement.source` from `Literal` to `str` to accept newly introduced source types without forcing immediate client upgrades.
|
|
71
|
+
|
|
72
|
+
## [0.4.0] - 2026-02-17
|
|
73
|
+
|
|
74
|
+
### Added
|
|
75
|
+
|
|
76
|
+
- `UsersClient` and `AsyncUsersClient` for user management operations.
|
|
77
|
+
- Async quickstart parity wrappers aligned with server-side helpers.
|
|
78
|
+
- Referral fields in registration flow.
|
|
79
|
+
|
|
80
|
+
## [0.3.0] - 2026-02-11
|
|
81
|
+
|
|
82
|
+
### Changed
|
|
83
|
+
|
|
84
|
+
- Consolidated SPAPS integration patterns into published packages.
|
|
85
|
+
- Aligned Python client surface area with production SPAPS APIs.
|
|
86
|
+
|
|
87
|
+
## [0.2.0] - 2025-12-30
|
|
88
|
+
|
|
89
|
+
### Added
|
|
90
|
+
|
|
91
|
+
- Broader SDK coverage to support production cutover requirements.
|
|
92
|
+
- Email-service and set-password endpoint client stubs.
|
|
93
|
+
|
|
94
|
+
### Changed
|
|
95
|
+
|
|
96
|
+
- Standardized configuration defaults (including port `3301` and environment symlink conventions).
|
|
97
|
+
|
|
98
|
+
## [0.1.4] - 2025-11-09
|
|
99
|
+
|
|
100
|
+
### Fixed
|
|
101
|
+
|
|
102
|
+
- Session validation response parsing for the `valid` field contract.
|
|
103
|
+
|
|
104
|
+
## [0.1.3] - 2025-10-14
|
|
105
|
+
|
|
106
|
+
### Added
|
|
107
|
+
|
|
108
|
+
- Subscription list/detail/cancel/swap helpers to match TypeScript SDK behavior.
|
|
109
|
+
- Checkout session lookup/list/expire and guest checkout lifecycle helpers.
|
|
110
|
+
- Stripe payment history summaries and payment-detail retrieval.
|
|
111
|
+
- Client-side role/permission utilities in `spaps_client.permissions`.
|
|
112
|
+
|
|
113
|
+
### Changed
|
|
114
|
+
|
|
115
|
+
- Refreshed README examples for newly added helpers.
|
|
116
|
+
|
|
117
|
+
## [0.1.2] - 2025-10-12
|
|
118
|
+
|
|
119
|
+
### Changed
|
|
120
|
+
|
|
121
|
+
- Standardized crypto invoice lookup helper behavior and logging paths.
|
|
122
|
+
|
|
123
|
+
## [0.1.1] - 2025-10-11
|
|
124
|
+
|
|
125
|
+
### Changed
|
|
126
|
+
|
|
127
|
+
- Widened `httpx` dependency range to `<0.29` for FastAPI default-stack compatibility (`0.28.x`).
|
|
128
|
+
|
|
129
|
+
## [0.1.0] - 2025-10-11
|
|
130
|
+
|
|
131
|
+
### Added
|
|
132
|
+
|
|
133
|
+
- Initial public PyPI release under the `spaps` distribution name.
|
|
134
|
+
- Sync and async clients for sessions, payments (including crypto), usage, whitelist, secure messages, and metrics.
|
|
135
|
+
- Configurable retry/backoff behavior, logging hooks, and token storage abstractions.
|
|
136
|
+
- Linting/type-checking/coverage gates integrated with the release workflow.
|
|
137
|
+
- Python quickstart documentation and backend integration guide.
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
- [x] Payments: update payment method
|
|
13
13
|
- [x] Payments: Stripe checkout (existing)
|
|
14
14
|
- [x] Payments: Stripe payment intent (existing)
|
|
15
|
-
- [x] Payments: wallet deposit/status
|
|
15
|
+
- [x] Payments: wallet deposit/status helpers intentionally raise `NotImplementedError` for backend 501 stubs
|
|
16
16
|
- [x] Payments: subscription details/cancel (existing)
|
|
17
17
|
- [x] Payments: crypto invoices (create/get/reconcile)
|
|
18
18
|
- [x] Payments: crypto webhooks signature helper
|