You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: HISTORY.md
+80Lines changed: 80 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,3 +1,83 @@
1
+
## 8.0.0 (August 20, 2025)
2
+
3
+
### New Features
4
+
5
+
#### Full `async/await` support
6
+
7
+
- Added `async/await` support to the SDK. All existing `clients` and `caches` now have async variants, plus new models (mainly search result models that require `async` iteration). Following `aio` directory convention for all async components.
8
+
- Implemented `AsyncAtlanClient` for all async operations (extends `AtlanClient` for reusability).
9
+
- For methods that accept client parameters, we've added corresponding `*_async()` variants:
- Extracted common functionality (request preparation and response processing) into a separate `common` sub-package. This enables reuse across both sync and async operations - only the middle layer (API calling with respective clients) differs.
27
+
28
+
Example:
29
+
```python
30
+
from pyatlan.client.common import FindPurposesByName
31
+
32
+
@validate_arguments
33
+
asyncdeffind_purposes_by_name(
34
+
self,
35
+
name: str,
36
+
attributes: Optional[List[str]] =None,
37
+
) -> List[Purpose]:
38
+
"""
39
+
Async find purposes by name using shared business logic.
40
+
:param name: of the purpose
41
+
:param attributes: (optional) collection of attributes to retrieve for the purpose
42
+
:returns: all purposes with that name, if found
43
+
:raises NotFoundError: if no purpose with the provided name exists
While these aren't direct breaking changes to the SDK API, they may affect your code if you depend on these libraries:
59
+
60
+
-**Migrated from [`requests`](https://requests.readthedocs.io/en/latest) to [`httpx`](https://www.python-httpx.org)**: Completely removed support for `requests` library and migrated to `httpx`, which provides similar API for `sync` operations plus `async` client support for async operations.
61
+
-**Replaced [`urllib3`](https://urllib3.readthedocs.io/en/stable) with [`httpx-retries`](https://will-ockmore.github.io/httpx-retries)**: Removed support for `urllib3` retry mechanism and implemented retries using `httpx-retries` library (API remains similar).
62
+
63
+
### QOL Improvements
64
+
65
+
- Generated latest typedef models.
66
+
- Removed redundant requirements files (no longer needed since migration to `uv` in previous releases).
67
+
- Updated GitHub workflows for Docker image builds to use `uv sync` (without dev dependencies).
68
+
- Added unit and integration tests for `async` SDK.
69
+
- Added `x-atlan-client-type: sync` or `x-atlan-client-type: async` to SDK headers and logging for better observability.
70
+
- Added `async-integration-tests` job to `pyatlan-pr.yaml` workflow. Triggers when there are changes to async SDK code or can be triggered manually via `run-async-tests` label on PR.
71
+
- Async SDK unit tests run by default on every commit push as they have minimal time impact on test suite.
72
+
- Used module-scoped asyncio test fixtures similar to sync integration tests:
73
+
```toml
74
+
# pyproject.toml
75
+
asyncio_mode = "auto"
76
+
asyncio_default_test_loop_scope = "module"
77
+
asyncio_default_fixture_loop_scope = "module"
78
+
```
79
+
- Used `token_client` fixtures when creating/deleting API tokens with `retry=0` to avoid token overpopulation in test tenants.
0 commit comments