Skip to content

Commit a5bcbe7

Browse files
authored
Merge pull request #837 from atlanhq/bump-to-release-9.2.0
[release] Bump to release `9.2.0`
2 parents d1184ee + b0ca756 commit a5bcbe7

12 files changed

Lines changed: 70 additions & 241 deletions

File tree

.claude/skills/generate-v9-models/SKILL.md

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ cd "$MODELS_DIR"
4545
STAGING_DIR="$(mktemp -d)"
4646
OVERLAYS_PATH="${SDK_DIR}/pyatlan_v9/model/assets/_overlays/"
4747

48-
pkl eval typedefs/*.pkl -m "$STAGING_DIR" -p sdkOnly=true -p sdk=true \
48+
pkl eval typedefs/*.pkl -m "$STAGING_DIR" -p sdkOnly=true \
4949
-p targetOutputDir=pyatlan_v9/model/assets/ \
5050
-p internalPackage=pyatlan_v9.model \
5151
-p sdkOverlaysBasePath="$OVERLAYS_PATH"
@@ -61,8 +61,6 @@ Copy generated files from the staging dir to the SDK, **excluding** these files
6161

6262
| File | Reason |
6363
|------|--------|
64-
| `__init__.py` | Generated post-sync by `_generate_pkg_init.py` |
65-
| `__init__.pyi` | Generated post-sync by `_generate_pkg_init.py` |
6664
| `entity.py` | Patched: `_metadata_proxies`, `type_name: Any`, `SaveSemantic` |
6765
| `referenceable.py` | Patched: `InternalKeywordField`, field descriptors, helper exports |
6866
| `atlas_glossary.py` | Patched: GTC anchor-in-attributes handling |
@@ -75,8 +73,6 @@ Copy generated files from the staging dir to the SDK, **excluding** these files
7573

7674
```bash
7775
rsync -av \
78-
--exclude='__init__.py' \
79-
--exclude='__init__.pyi' \
8076
--exclude='entity.py' \
8177
--exclude='referenceable.py' \
8278
--exclude='atlas_glossary.py' \
@@ -104,20 +100,7 @@ rm -rf "$STAGING_DIR"
104100
"""Attributes of the relationship itself (e.g., description, status, etc.)."""
105101
```
106102

107-
### 5. Regenerate `__init__.py` and `__init__.pyi`
108-
109-
After syncing, regenerate the package init files from the `_init_*.py` modules:
110-
111-
```bash
112-
cd "${SDK_DIR}"
113-
uv run python pyatlan_v9/model/assets/_generate_pkg_init.py
114-
```
115-
116-
This scans all `_init_*.py` files and generates:
117-
- `__init__.py` with `lazy_loader.attach()` for lazy imports
118-
- `__init__.pyi` with explicit imports for IDE type hints
119-
120-
### 6. Run ruff auto-fix and format
103+
### 5. Run ruff auto-fix and format
121104

122105
After syncing and patching, run ruff to fix unused imports and format the generated files:
123106

@@ -127,13 +110,13 @@ uv run ruff check --fix --select F401,F811 pyatlan_v9/
127110
uv run ruff format pyatlan_v9/
128111
```
129112

130-
### 7. Run tests (if args contain "test")
113+
### 6. Run tests (if args contain "test")
131114

132115
```bash
133116
cd "${SDK_DIR}" && python -m pytest tests_v9/unit/ -x -q
134117
```
135118

136-
### 8. Report summary
119+
### 7. Report summary
137120

138121
Report: how many files were generated, how many synced, how many excluded, and test results if applicable.
139122

HISTORY.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
1+
## 9.2.0 (March 9, 2026)
2+
3+
### Breaking Changes
4+
5+
- **Policy duplicate detection during retries**: When a policy creation request times out but actually succeeds on the backend, the SDK now detects the existing policy instead of blindly retrying and creating a duplicate. On retry, the transport layer searches for an existing `AuthPolicy` with the same name and persona GUID — if found, it returns a mock response containing the existing policy. Code that relied on retries always creating new policies will now receive the existing policy instead.
6+
7+
### Experimental: `pyatlan_v9`
8+
9+
- **IDE autocompletion**: Replaced custom AST-based lazy loading with `lazy_loader` + Pkl-generated `.pyi` stub file. All 860+ asset classes now have full IDE type hints and autocompletion while keeping lazy import performance.
10+
- **Pkl-generated `__init__.py` and `__init__.pyi`**: The Pkl renderer now aggregates all typedefs (via `import*` glob) to generate `__init__.py` (with `lazy_loader.attach()` mapping) and `__init__.pyi` (with explicit re-exports for IDEs) directly — no post-sync Python script needed. Hand-written types from `_init_manual.py` are included by reading the file at generation time.
11+
- **Model updates**: Regenerated all v9 models — GTC anchor regularization, entity lineage fields (`depth`, `immediate_upstream`, `immediate_downstream`), QuickSight `useLocalTypeAsPrefix`, fully Pkl-generated `DataQualityRule`, and referenceable field descriptors via overlays.
12+
- **`type_name` serialization fix**: `type_name` field default changed to `UNSET` so `omit_defaults=True` never omits `typeName` from API requests.
13+
- **Simplified `transform.py`**: Removed `_normalize_camel_key()` and related camelCase abbreviation handling — msgspec structs use explicit `field(name=...)` mappings. Asset registration now uses `cls.__name__` directly.
14+
15+
### QOL Improvements
16+
17+
- Regenerated latest typedef models.
18+
- Improved Claude Code review skill and added auto-review trigger on PR open.
19+
120
## 9.1.0 (March 6, 2026)
221

322
### Breaking Changes

pyatlan/client/common/transport.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
from pyatlan.client.constants import BULK_UPDATE, INDEX_SEARCH
1919
from pyatlan.errors import ErrorCode
20-
from pyatlan.model.search import Bool, DSL, IndexSearchRequest, Term
20+
from pyatlan.model.search import DSL, Bool, IndexSearchRequest, Term
2121

2222
logger = logging.getLogger(__name__)
2323

pyatlan/version.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
9.1.0
1+
9.2.0

pyatlan_v9/model/assets/__init__.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Auto-generated by _generate_pkg_init.py — DO NOT EDIT
1+
# Auto-generated by PythonMsgspecRenderer.pkl — DO NOT EDIT
22
# SPDX-License-Identifier: Apache-2.0
33
# Copyright 2024 Atlan Pte. Ltd.
44
# isort: skip_file
@@ -520,23 +520,23 @@
520520
"_init_manual": [
521521
"AccessControl",
522522
"AuthPolicy",
523-
"AzureEventHubConsumerGroup",
524523
"AzureEventHub",
524+
"AzureEventHubConsumerGroup",
525525
"Badge",
526526
"BadgeCondition",
527527
"Cognite3DModel",
528528
"DataContract",
529529
"Persona",
530530
"Purpose",
531+
"RelatedSuperset",
532+
"RelatedSupersetChart",
533+
"RelatedSupersetDashboard",
534+
"RelatedSupersetDataset",
531535
"SnowflakeDynamicTable",
532536
"Superset",
533537
"SupersetChart",
534538
"SupersetDashboard",
535539
"SupersetDataset",
536-
"RelatedSuperset",
537-
"RelatedSupersetChart",
538-
"RelatedSupersetDashboard",
539-
"RelatedSupersetDataset",
540540
],
541541
"_init_matillion": [
542542
"Matillion",
@@ -743,13 +743,7 @@
743743
"RelatedRedashQuery",
744744
"RelatedRedashVisualization",
745745
],
746-
"_init_referenceable": [
747-
"AtlasClassification",
748-
"Entity",
749-
"Referenceable",
750-
"RelatedReferenceable",
751-
"TermAssignment",
752-
],
746+
"_init_referenceable": ["Referenceable", "RelatedReferenceable"],
753747
"_init_resource": [
754748
"File",
755749
"Link",

pyatlan_v9/model/assets/__init__.pyi

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Auto-generated by _generate_pkg_init.py — DO NOT EDIT
1+
# Auto-generated by PythonMsgspecRenderer.pkl — DO NOT EDIT
22
# SPDX-License-Identifier: Apache-2.0
33
# Copyright 2024 Atlan Pte. Ltd.
44

@@ -442,23 +442,23 @@ __all__ = [
442442
"RelatedLookerView",
443443
"AccessControl",
444444
"AuthPolicy",
445-
"AzureEventHubConsumerGroup",
446445
"AzureEventHub",
446+
"AzureEventHubConsumerGroup",
447447
"Badge",
448448
"BadgeCondition",
449449
"Cognite3DModel",
450450
"DataContract",
451451
"Persona",
452452
"Purpose",
453+
"RelatedSuperset",
454+
"RelatedSupersetChart",
455+
"RelatedSupersetDashboard",
456+
"RelatedSupersetDataset",
453457
"SnowflakeDynamicTable",
454458
"Superset",
455459
"SupersetChart",
456460
"SupersetDashboard",
457461
"SupersetDataset",
458-
"RelatedSuperset",
459-
"RelatedSupersetChart",
460-
"RelatedSupersetDashboard",
461-
"RelatedSupersetDataset",
462462
"Matillion",
463463
"MatillionComponent",
464464
"MatillionGroup",
@@ -635,11 +635,8 @@ __all__ = [
635635
"RelatedRedashDashboard",
636636
"RelatedRedashQuery",
637637
"RelatedRedashVisualization",
638-
"AtlasClassification",
639-
"Entity",
640638
"Referenceable",
641639
"RelatedReferenceable",
642-
"TermAssignment",
643640
"File",
644641
"Link",
645642
"Readme",
@@ -1051,7 +1048,7 @@ from .cloud_related import RelatedAzure as RelatedAzure
10511048
from .cloud_related import RelatedCloud as RelatedCloud
10521049
from .cloud_related import RelatedGoogle as RelatedGoogle
10531050
from .cognite import Cognite as Cognite
1054-
from .cognite3_d_model import Cognite3DModel as Cognite3DModel
1051+
from .cognite3d_model import Cognite3DModel as Cognite3DModel
10551052
from .cognite_asset import CogniteAsset as CogniteAsset
10561053
from .cognite_event import CogniteEvent as CogniteEvent
10571054
from .cognite_file import CogniteFile as CogniteFile

pyatlan_v9/model/assets/_generate_pkg_init.py

Lines changed: 0 additions & 193 deletions
This file was deleted.

0 commit comments

Comments
 (0)