matelab-python-sdk 0.1.0a6__tar.gz → 0.1.0a7__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.
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/AGENTS.md +2 -2
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/CHANGELOG.md +9 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/PKG-INFO +24 -26
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/README.md +22 -25
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/docs/operation-coverage.yaml +0 -71
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/pyproject.toml +6 -3
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/scripts/check_release.py +1 -1
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/scripts/generate_models.py +84 -1
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/__init__.py +2 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/_generated/models.py +751 -111
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/_transport.py +41 -32
- matelab_python_sdk-0.1.0a7/src/matelab/_wire_validation.py +89 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/client.py +13 -5
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/domains/cloud_drive.py +64 -49
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/domains/literature.py +121 -103
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/domains/notebooks.py +59 -47
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/domains/records.py +380 -325
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/domains/templates.py +91 -58
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/domains/uploads.py +18 -16
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/domains/users.py +6 -5
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/errors.py +16 -4
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/streaming.py +4 -4
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_client.py +38 -8
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_cloud_drive.py +4 -1
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_generation.py +44 -1
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_notebook_lifecycle.py +7 -2
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_operation_coverage.py +6 -51
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_record_mutations.py +2 -1
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_records.py +2 -1
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_release.py +6 -2
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_streaming.py +27 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_transport.py +52 -5
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_users.py +3 -2
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/uv.lock +176 -1
- matelab_python_sdk-0.1.0a6/docs/roadmap.md +0 -934
- matelab_python_sdk-0.1.0a6/src/matelab/_wire_validation.py +0 -217
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/.env.example +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/.github/workflows/release.yml +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/.gitignore +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/LICENSE +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/NOTICE +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/contracts/matelab-integration-v1.lock.json +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/contracts/matelab-integration-v1.openapi.yaml +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/scripts/check_installed_package.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/_generated/__init__.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/domains/__init__.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/domains/groups.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/py.typed +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/src/matelab/session.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/conftest.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/provider/test_provider_smoke.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_comments_and_downloads.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_consumer_smoke.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_extended_records.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_groups.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_notebooks.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_record_lifecycle.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_template_lifecycle.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_templates.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/test_uploads_and_literature.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/typing/consumer.py +0 -0
- {matelab_python_sdk-0.1.0a6 → matelab_python_sdk-0.1.0a7}/tests/typing/pyproject.toml +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# AGENTS.md
|
|
2
2
|
|
|
3
3
|
本文档只保留维护 `matelab-python-sdk` 必须长期遵守的项目约束。当前能力和使用方式见
|
|
4
|
-
`README.md
|
|
5
|
-
|
|
4
|
+
`README.md`,版本历史见 `CHANGELOG.md`,operation 状态以 `docs/operation-coverage.yaml` 为机器权威。
|
|
5
|
+
不要在本文记录阶段性完成状态、一次性验收数字或迁移历史。
|
|
6
6
|
|
|
7
7
|
## 权威与范围
|
|
8
8
|
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.0a7 - 2026-08-04
|
|
4
|
+
|
|
5
|
+
- Replaces the hand-maintained wire-validation rule tables with deterministic generated JSON Schema 2020-12 rules.
|
|
6
|
+
- Simplifies transport, streaming, error mapping, and domain adapters while retaining the pinned `matelab-spec v0.3.0`
|
|
7
|
+
behavior and automatic Session refresh guarantees.
|
|
8
|
+
- Breaking: tightens several public domain inputs and results, and exposes stable `MatelabProviderErrorKind` values
|
|
9
|
+
instead of raw Provider error codes.
|
|
10
|
+
- Removes completed roadmap and work-package bookkeeping; refreshes release checks, documentation, and tests.
|
|
11
|
+
|
|
3
12
|
## 0.1.0a6 - 2026-08-01
|
|
4
13
|
|
|
5
14
|
- Adopts the immutable `matelab-spec v0.3.0` Contract release and its form-encoding updates.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: matelab-python-sdk
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.0a7
|
|
4
4
|
Summary: Reusable async Python client for the Matelab Integration Contract
|
|
5
5
|
Author-email: 朱天念 <zhutiannian@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -21,6 +21,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
21
21
|
Classifier: Typing :: Typed
|
|
22
22
|
Requires-Python: >=3.11
|
|
23
23
|
Requires-Dist: httpx2<3,>=2.9.1
|
|
24
|
+
Requires-Dist: jsonschema<5,>=4.26
|
|
24
25
|
Requires-Dist: pydantic<3,>=2.13.4
|
|
25
26
|
Description-Content-Type: text/markdown
|
|
26
27
|
|
|
@@ -28,7 +29,7 @@ Description-Content-Type: text/markdown
|
|
|
28
29
|
|
|
29
30
|
Reusable async Python client for the Matelab Integration Contract.
|
|
30
31
|
|
|
31
|
-
The current alpha is `0.1.
|
|
32
|
+
The current alpha is `0.1.0a7`. `[project].version` in `pyproject.toml` is the sole SDK version source;
|
|
32
33
|
`uv.lock` only mirrors that source.
|
|
33
34
|
|
|
34
35
|
The SDK is pinned to the immutable `matelab-spec v0.3.0` Contract Release. The sole release pin is
|
|
@@ -57,7 +58,7 @@ To test the same artifact a downstream Consumer will install, build and install
|
|
|
57
58
|
|
|
58
59
|
```bash
|
|
59
60
|
uv build --no-build-isolation --out-dir dist/release
|
|
60
|
-
python -m pip install dist/release/matelab_python_sdk-0.1.
|
|
61
|
+
python -m pip install dist/release/matelab_python_sdk-0.1.0a7-py3-none-any.whl
|
|
61
62
|
```
|
|
62
63
|
|
|
63
64
|
Do not infer Provider compatibility from the SDK version alone. A release is also bound to the Contract
|
|
@@ -90,12 +91,19 @@ Catch `MatelabError` for one application-level fallback, or a specific subclass
|
|
|
90
91
|
|---|---|
|
|
91
92
|
| `MatelabUsageError` | The call cannot be represented safely; correct its arguments. |
|
|
92
93
|
| `MatelabAuthenticationError` | The Session is missing, expired, invalid, or rejected; refresh or authenticate again as appropriate. |
|
|
93
|
-
| `MatelabProviderError` | The Provider
|
|
94
|
+
| `MatelabProviderError` | The Provider returned a non-authentication error; inspect its stable `kind` and do not assume a mutation was applied. |
|
|
94
95
|
| `MatelabTransportError` | The HTTP exchange failed; `status_code` is present for HTTP failures, and a mutation outcome may be unknown. |
|
|
95
96
|
| `MatelabProtocolError` | The Provider response does not match the pinned Contract; treat it as Provider drift or an SDK defect. A mutation may already have been applied. |
|
|
96
97
|
|
|
97
|
-
`
|
|
98
|
-
|
|
98
|
+
`MatelabProviderError.kind` is a `MatelabProviderErrorKind`: `REJECTED` covers input, permission, and business
|
|
99
|
+
rejections; `SERVER` identifies Provider server failures; `VALIDATION` identifies multi-error validation failures; and
|
|
100
|
+
`UNKNOWN` safely represents all other non-success, non-authentication Provider codes. Authentication codes are hidden
|
|
101
|
+
behind `MatelabAuthenticationError`; raw Provider codes are not part of the public error interface.
|
|
102
|
+
Codes `0` and `10` remain operation-specific successes selected by the pinned Contract; an operation that receives a
|
|
103
|
+
success code it does not allow raises `MatelabProtocolError` rather than assigning an error kind.
|
|
104
|
+
`MatelabTransportError.status_code` remains available for HTTP failures. Provider response bodies and caller inputs are
|
|
105
|
+
never attached to exceptions. Never automatically retry a mutation solely because it raised a transport or protocol
|
|
106
|
+
error.
|
|
99
107
|
|
|
100
108
|
### Session ownership
|
|
101
109
|
|
|
@@ -340,11 +348,7 @@ plain text and that a hash-based URI can fall back to an existing quote, so neit
|
|
|
340
348
|
Existing `RecordRichTextUpdate` remains legal only with record-scoped `StagedRecordAttachment`. Attachment-bearing
|
|
341
349
|
multi-record import is also forbidden; callers must split it into single-record finalizers.
|
|
342
350
|
|
|
343
|
-
##
|
|
344
|
-
|
|
345
|
-
`docs/roadmap.md` is the complete SDK-only execution plan. It assigns all 71
|
|
346
|
-
`matelab-spec v0.3.0` operations to ordered work packages, defines the machine-readable coverage that
|
|
347
|
-
must be added, records Provider-risk gates, and specifies the final completion checks.
|
|
351
|
+
## Operation coverage
|
|
348
352
|
|
|
349
353
|
The SDK tracks all 71 Contract operations and exposes 70 through public domain interfaces; one identity-bootstrap
|
|
350
354
|
operation is intentionally unexposed. It deliberately excludes MCP migration, adjacent-repository changes, external
|
|
@@ -352,7 +356,7 @@ publishing, and automatic mutation against a real Provider.
|
|
|
352
356
|
|
|
353
357
|
Machine-readable status lives in
|
|
354
358
|
`docs/operation-coverage.yaml`. An exact-coverage test keeps its 71
|
|
355
|
-
operation IDs, methods, paths,
|
|
359
|
+
operation IDs, methods, paths, states, public interfaces, and Provider issue references aligned with the pinned
|
|
356
360
|
OpenAPI snapshot.
|
|
357
361
|
|
|
358
362
|
| Domain | Implemented | Planned | Current public surface |
|
|
@@ -590,19 +594,11 @@ deletion is named `permanently_delete_files` and is non-recoverable. Cloud downl
|
|
|
590
594
|
resolve bytes from the final file identity and reuse `DownloadStream`, thumbnail/preview choices and the PVD-002-safe
|
|
591
595
|
range subset. Cloud mutations are not automatically retried.
|
|
592
596
|
|
|
593
|
-
To run the implementation as a persistent Codex goal, start a task in this repository and use:
|
|
594
|
-
|
|
595
|
-
> 完整阅读并严格遵循 `AGENTS.md`、`README.md` 和 `docs/roadmap.md`。创建并持续执行一个 goal:
|
|
596
|
-
> 只修改当前仓库,按照 roadmap 从第一个未完成 work package 开始,完成 71-operation 精确覆盖和全部
|
|
597
|
-
> SDK 领域 interface;每个 package 通过局部验证后自动继续,最终让 generation `--check`、Ruff、
|
|
598
|
-
> Ruff format、Basedpyright、Pytest 和 package build 全部通过。不要修改相邻仓库,不执行生产 Provider
|
|
599
|
-
> mutation,不 commit、push、tag 或发布。
|
|
600
|
-
|
|
601
597
|
Owned/shared `NotebookRef`, public `PublicNotebookRef`, `RecordRef`, and `RecordVersionRef` keep
|
|
602
598
|
Provider identifiers distinct. Historical reads first re-read the authorized current record and confirm
|
|
603
599
|
that the requested version is still present in its `modify_log`; both reads write Provider audit entries.
|
|
604
600
|
|
|
605
|
-
Errors are separated into Provider
|
|
601
|
+
Errors are separated into semantic Provider errors, authentication errors, HTTP/transport errors,
|
|
606
602
|
Integration Contract response errors, and client-side usage errors. Provider response bodies and caller inputs do not
|
|
607
603
|
enter exceptions.
|
|
608
604
|
|
|
@@ -621,11 +617,13 @@ uv build
|
|
|
621
617
|
|
|
622
618
|
The generator first verifies the contract lock, OpenAPI release metadata, and snapshot digest. It then
|
|
623
619
|
creates a temporary OpenAPI 3.1 generation projection, resolves references without network access, and
|
|
624
|
-
generates private component, operation-response, and parameter models. The projection
|
|
625
|
-
object inheritance
|
|
626
|
-
snapshot remains unchanged. `--check` performs the same validation and deterministic generation without
|
|
627
|
-
writing the checked-in models.
|
|
628
|
-
`
|
|
620
|
+
generates private component, operation-response, and parameter models. The projection flattens pure
|
|
621
|
+
object inheritance and preserves constraints the model generator cannot express as self-contained JSON Schema
|
|
622
|
+
2020-12 metadata; the checked-in release snapshot remains unchanged. `--check` performs the same validation and deterministic generation without
|
|
623
|
+
writing the checked-in models. `WireModel` applies that metadata with the standard
|
|
624
|
+
`jsonschema` Draft 2020-12 validator; the SDK does not maintain a second hand-written schema interpreter. The current lock resolves
|
|
625
|
+
`datamodel-code-generator 0.71.0` and
|
|
626
|
+
`hatchling 1.31.0`. Published metadata requires `httpx2>=2.9.1,<3`, `jsonschema>=4.26,<5`, and
|
|
629
627
|
`pydantic>=2.13.4,<3`; the build backend requires `hatchling>=1.27,<2`. These lower bounds are verified
|
|
630
628
|
against the complete test suite on the supported Python boundary versions rather than inferred from
|
|
631
629
|
`uv.lock`. The exact toolchain remains locked for development and release builds. Basedpyright and its
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Reusable async Python client for the Matelab Integration Contract.
|
|
4
4
|
|
|
5
|
-
The current alpha is `0.1.
|
|
5
|
+
The current alpha is `0.1.0a7`. `[project].version` in `pyproject.toml` is the sole SDK version source;
|
|
6
6
|
`uv.lock` only mirrors that source.
|
|
7
7
|
|
|
8
8
|
The SDK is pinned to the immutable `matelab-spec v0.3.0` Contract Release. The sole release pin is
|
|
@@ -31,7 +31,7 @@ To test the same artifact a downstream Consumer will install, build and install
|
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
33
|
uv build --no-build-isolation --out-dir dist/release
|
|
34
|
-
python -m pip install dist/release/matelab_python_sdk-0.1.
|
|
34
|
+
python -m pip install dist/release/matelab_python_sdk-0.1.0a7-py3-none-any.whl
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
Do not infer Provider compatibility from the SDK version alone. A release is also bound to the Contract
|
|
@@ -64,12 +64,19 @@ Catch `MatelabError` for one application-level fallback, or a specific subclass
|
|
|
64
64
|
|---|---|
|
|
65
65
|
| `MatelabUsageError` | The call cannot be represented safely; correct its arguments. |
|
|
66
66
|
| `MatelabAuthenticationError` | The Session is missing, expired, invalid, or rejected; refresh or authenticate again as appropriate. |
|
|
67
|
-
| `MatelabProviderError` | The Provider
|
|
67
|
+
| `MatelabProviderError` | The Provider returned a non-authentication error; inspect its stable `kind` and do not assume a mutation was applied. |
|
|
68
68
|
| `MatelabTransportError` | The HTTP exchange failed; `status_code` is present for HTTP failures, and a mutation outcome may be unknown. |
|
|
69
69
|
| `MatelabProtocolError` | The Provider response does not match the pinned Contract; treat it as Provider drift or an SDK defect. A mutation may already have been applied. |
|
|
70
70
|
|
|
71
|
-
`
|
|
72
|
-
|
|
71
|
+
`MatelabProviderError.kind` is a `MatelabProviderErrorKind`: `REJECTED` covers input, permission, and business
|
|
72
|
+
rejections; `SERVER` identifies Provider server failures; `VALIDATION` identifies multi-error validation failures; and
|
|
73
|
+
`UNKNOWN` safely represents all other non-success, non-authentication Provider codes. Authentication codes are hidden
|
|
74
|
+
behind `MatelabAuthenticationError`; raw Provider codes are not part of the public error interface.
|
|
75
|
+
Codes `0` and `10` remain operation-specific successes selected by the pinned Contract; an operation that receives a
|
|
76
|
+
success code it does not allow raises `MatelabProtocolError` rather than assigning an error kind.
|
|
77
|
+
`MatelabTransportError.status_code` remains available for HTTP failures. Provider response bodies and caller inputs are
|
|
78
|
+
never attached to exceptions. Never automatically retry a mutation solely because it raised a transport or protocol
|
|
79
|
+
error.
|
|
73
80
|
|
|
74
81
|
### Session ownership
|
|
75
82
|
|
|
@@ -314,11 +321,7 @@ plain text and that a hash-based URI can fall back to an existing quote, so neit
|
|
|
314
321
|
Existing `RecordRichTextUpdate` remains legal only with record-scoped `StagedRecordAttachment`. Attachment-bearing
|
|
315
322
|
multi-record import is also forbidden; callers must split it into single-record finalizers.
|
|
316
323
|
|
|
317
|
-
##
|
|
318
|
-
|
|
319
|
-
`docs/roadmap.md` is the complete SDK-only execution plan. It assigns all 71
|
|
320
|
-
`matelab-spec v0.3.0` operations to ordered work packages, defines the machine-readable coverage that
|
|
321
|
-
must be added, records Provider-risk gates, and specifies the final completion checks.
|
|
324
|
+
## Operation coverage
|
|
322
325
|
|
|
323
326
|
The SDK tracks all 71 Contract operations and exposes 70 through public domain interfaces; one identity-bootstrap
|
|
324
327
|
operation is intentionally unexposed. It deliberately excludes MCP migration, adjacent-repository changes, external
|
|
@@ -326,7 +329,7 @@ publishing, and automatic mutation against a real Provider.
|
|
|
326
329
|
|
|
327
330
|
Machine-readable status lives in
|
|
328
331
|
`docs/operation-coverage.yaml`. An exact-coverage test keeps its 71
|
|
329
|
-
operation IDs, methods, paths,
|
|
332
|
+
operation IDs, methods, paths, states, public interfaces, and Provider issue references aligned with the pinned
|
|
330
333
|
OpenAPI snapshot.
|
|
331
334
|
|
|
332
335
|
| Domain | Implemented | Planned | Current public surface |
|
|
@@ -564,19 +567,11 @@ deletion is named `permanently_delete_files` and is non-recoverable. Cloud downl
|
|
|
564
567
|
resolve bytes from the final file identity and reuse `DownloadStream`, thumbnail/preview choices and the PVD-002-safe
|
|
565
568
|
range subset. Cloud mutations are not automatically retried.
|
|
566
569
|
|
|
567
|
-
To run the implementation as a persistent Codex goal, start a task in this repository and use:
|
|
568
|
-
|
|
569
|
-
> 完整阅读并严格遵循 `AGENTS.md`、`README.md` 和 `docs/roadmap.md`。创建并持续执行一个 goal:
|
|
570
|
-
> 只修改当前仓库,按照 roadmap 从第一个未完成 work package 开始,完成 71-operation 精确覆盖和全部
|
|
571
|
-
> SDK 领域 interface;每个 package 通过局部验证后自动继续,最终让 generation `--check`、Ruff、
|
|
572
|
-
> Ruff format、Basedpyright、Pytest 和 package build 全部通过。不要修改相邻仓库,不执行生产 Provider
|
|
573
|
-
> mutation,不 commit、push、tag 或发布。
|
|
574
|
-
|
|
575
570
|
Owned/shared `NotebookRef`, public `PublicNotebookRef`, `RecordRef`, and `RecordVersionRef` keep
|
|
576
571
|
Provider identifiers distinct. Historical reads first re-read the authorized current record and confirm
|
|
577
572
|
that the requested version is still present in its `modify_log`; both reads write Provider audit entries.
|
|
578
573
|
|
|
579
|
-
Errors are separated into Provider
|
|
574
|
+
Errors are separated into semantic Provider errors, authentication errors, HTTP/transport errors,
|
|
580
575
|
Integration Contract response errors, and client-side usage errors. Provider response bodies and caller inputs do not
|
|
581
576
|
enter exceptions.
|
|
582
577
|
|
|
@@ -595,11 +590,13 @@ uv build
|
|
|
595
590
|
|
|
596
591
|
The generator first verifies the contract lock, OpenAPI release metadata, and snapshot digest. It then
|
|
597
592
|
creates a temporary OpenAPI 3.1 generation projection, resolves references without network access, and
|
|
598
|
-
generates private component, operation-response, and parameter models. The projection
|
|
599
|
-
object inheritance
|
|
600
|
-
snapshot remains unchanged. `--check` performs the same validation and deterministic generation without
|
|
601
|
-
writing the checked-in models.
|
|
602
|
-
`
|
|
593
|
+
generates private component, operation-response, and parameter models. The projection flattens pure
|
|
594
|
+
object inheritance and preserves constraints the model generator cannot express as self-contained JSON Schema
|
|
595
|
+
2020-12 metadata; the checked-in release snapshot remains unchanged. `--check` performs the same validation and deterministic generation without
|
|
596
|
+
writing the checked-in models. `WireModel` applies that metadata with the standard
|
|
597
|
+
`jsonschema` Draft 2020-12 validator; the SDK does not maintain a second hand-written schema interpreter. The current lock resolves
|
|
598
|
+
`datamodel-code-generator 0.71.0` and
|
|
599
|
+
`hatchling 1.31.0`. Published metadata requires `httpx2>=2.9.1,<3`, `jsonschema>=4.26,<5`, and
|
|
603
600
|
`pydantic>=2.13.4,<3`; the build backend requires `hatchling>=1.27,<2`. These lower bounds are verified
|
|
604
601
|
against the complete test suite on the supported Python boundary versions rather than inferred from
|
|
605
602
|
`uv.lock`. The exact toolchain remains locked for development and release builds. Basedpyright and its
|