aiinbx 0.5.1__tar.gz → 0.23.0__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.
- aiinbx-0.23.0/.release-please-manifest.json +3 -0
- aiinbx-0.23.0/CHANGELOG.md +267 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/PKG-INFO +4 -5
- {aiinbx-0.5.1 → aiinbx-0.23.0}/README.md +2 -2
- {aiinbx-0.5.1 → aiinbx-0.23.0}/pyproject.toml +3 -4
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_models.py +37 -15
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_utils/_sync.py +3 -31
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_utils/_utils.py +1 -1
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_version.py +1 -1
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/resources/emails.py +9 -1
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/resources/threads.py +5 -1
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/domain_list_response.py +2 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/domain_retrieve_response.py +2 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/domain_verify_response.py +2 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/email_reply_params.py +17 -3
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/email_send_params.py +17 -3
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/thread_forward_params.py +17 -3
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/api_resources/test_emails.py +36 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/api_resources/test_threads.py +18 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/test_client.py +198 -164
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/test_models.py +4 -4
- aiinbx-0.5.1/.release-please-manifest.json +0 -3
- aiinbx-0.5.1/CHANGELOG.md +0 -92
- {aiinbx-0.5.1 → aiinbx-0.23.0}/.gitignore +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/CONTRIBUTING.md +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/LICENSE +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/SECURITY.md +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/api.md +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/bin/check-release-environment +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/bin/publish-pypi +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/examples/.keep +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/noxfile.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/release-please-config.json +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/requirements-dev.lock +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/requirements.lock +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/ai_inbx/lib/.keep +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/__init__.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_base_client.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_client.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_compat.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_constants.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_exceptions.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_files.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_qs.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_resource.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_response.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_streaming.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_types.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_utils/__init__.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_utils/_compat.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_utils/_datetime_parse.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_utils/_logs.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_utils/_proxy.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_utils/_reflection.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_utils/_resources_proxy.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_utils/_streams.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_utils/_transform.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/_utils/_typing.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/lib/.keep +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/py.typed +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/resources/__init__.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/resources/domains.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/resources/meta.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/resources/webhooks.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/__init__.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/domain_create_params.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/domain_create_response.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/domain_delete_response.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/email_reply_response.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/email_retrieve_response.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/email_send_response.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/inbound_email_received_webhook_event.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/meta_webhooks_schema_response.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/outbound_email_bounced_webhook_event.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/outbound_email_clicked_webhook_event.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/outbound_email_complained_webhook_event.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/outbound_email_delivered_webhook_event.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/outbound_email_opened_webhook_event.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/outbound_email_rejected_webhook_event.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/thread_forward_response.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/thread_retrieve_response.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/thread_search_params.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/thread_search_response.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/src/aiinbx/types/unwrap_webhook_event.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/__init__.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/api_resources/__init__.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/api_resources/test_domains.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/api_resources/test_meta.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/api_resources/test_webhooks.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/conftest.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/sample_file.txt +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/test_deepcopy.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/test_extract_files.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/test_files.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/test_qs.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/test_required_args.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/test_response.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/test_streaming.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/test_transform.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/test_utils/test_proxy.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/test_utils/test_typing.py +0 -0
- {aiinbx-0.5.1 → aiinbx-0.23.0}/tests/utils.py +0 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.23.0 (2025-11-17)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.22.0...v0.23.0](https://github.com/aiinbx/aiinbx-py/compare/v0.22.0...v0.23.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** api update ([4bd1404](https://github.com/aiinbx/aiinbx-py/commit/4bd14043d5d312aea548de04165cd4a94b838321))
|
|
10
|
+
|
|
11
|
+
## 0.22.0 (2025-11-17)
|
|
12
|
+
|
|
13
|
+
Full Changelog: [v0.21.0...v0.22.0](https://github.com/aiinbx/aiinbx-py/compare/v0.21.0...v0.22.0)
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **api:** api update ([77853f3](https://github.com/aiinbx/aiinbx-py/commit/77853f3028819561553f4d00a200d9eacc5ef089))
|
|
18
|
+
|
|
19
|
+
## 0.21.0 (2025-11-17)
|
|
20
|
+
|
|
21
|
+
Full Changelog: [v0.20.0...v0.21.0](https://github.com/aiinbx/aiinbx-py/compare/v0.20.0...v0.21.0)
|
|
22
|
+
|
|
23
|
+
### Features
|
|
24
|
+
|
|
25
|
+
* **api:** api update ([6bbbe93](https://github.com/aiinbx/aiinbx-py/commit/6bbbe93fa42c2facf5c6b1d84ba32bf47658c300))
|
|
26
|
+
|
|
27
|
+
## 0.20.0 (2025-11-16)
|
|
28
|
+
|
|
29
|
+
Full Changelog: [v0.19.0...v0.20.0](https://github.com/aiinbx/aiinbx-py/compare/v0.19.0...v0.20.0)
|
|
30
|
+
|
|
31
|
+
### Features
|
|
32
|
+
|
|
33
|
+
* **api:** api update ([87c105a](https://github.com/aiinbx/aiinbx-py/commit/87c105a99df202f9a3dc388b0cfe078251998d5f))
|
|
34
|
+
|
|
35
|
+
## 0.19.0 (2025-11-16)
|
|
36
|
+
|
|
37
|
+
Full Changelog: [v0.18.0...v0.19.0](https://github.com/aiinbx/aiinbx-py/compare/v0.18.0...v0.19.0)
|
|
38
|
+
|
|
39
|
+
### Features
|
|
40
|
+
|
|
41
|
+
* **api:** api update ([07beb52](https://github.com/aiinbx/aiinbx-py/commit/07beb52d40745cbcf5193c85a7efbdc90ad1ef31))
|
|
42
|
+
|
|
43
|
+
## 0.18.0 (2025-11-16)
|
|
44
|
+
|
|
45
|
+
Full Changelog: [v0.17.0...v0.18.0](https://github.com/aiinbx/aiinbx-py/compare/v0.17.0...v0.18.0)
|
|
46
|
+
|
|
47
|
+
### Features
|
|
48
|
+
|
|
49
|
+
* **api:** api update ([24490c8](https://github.com/aiinbx/aiinbx-py/commit/24490c8805342f13b6ff919d27feaf0d7dfb71ed))
|
|
50
|
+
|
|
51
|
+
## 0.17.0 (2025-11-16)
|
|
52
|
+
|
|
53
|
+
Full Changelog: [v0.16.0...v0.17.0](https://github.com/aiinbx/aiinbx-py/compare/v0.16.0...v0.17.0)
|
|
54
|
+
|
|
55
|
+
### Features
|
|
56
|
+
|
|
57
|
+
* **api:** api update ([4db8f52](https://github.com/aiinbx/aiinbx-py/commit/4db8f52e507e287f71e36f2ce1816e7147d97d39))
|
|
58
|
+
|
|
59
|
+
## 0.16.0 (2025-11-16)
|
|
60
|
+
|
|
61
|
+
Full Changelog: [v0.15.0...v0.16.0](https://github.com/aiinbx/aiinbx-py/compare/v0.15.0...v0.16.0)
|
|
62
|
+
|
|
63
|
+
### Features
|
|
64
|
+
|
|
65
|
+
* **api:** api update ([b423628](https://github.com/aiinbx/aiinbx-py/commit/b423628767b266a14d0e9b385d6ed057dfae1f78))
|
|
66
|
+
|
|
67
|
+
## 0.15.0 (2025-11-16)
|
|
68
|
+
|
|
69
|
+
Full Changelog: [v0.14.0...v0.15.0](https://github.com/aiinbx/aiinbx-py/compare/v0.14.0...v0.15.0)
|
|
70
|
+
|
|
71
|
+
### Features
|
|
72
|
+
|
|
73
|
+
* **api:** api update ([e85c831](https://github.com/aiinbx/aiinbx-py/commit/e85c831870cdc8e101cd4c08ab665babda9fe089))
|
|
74
|
+
|
|
75
|
+
## 0.14.0 (2025-11-16)
|
|
76
|
+
|
|
77
|
+
Full Changelog: [v0.13.0...v0.14.0](https://github.com/aiinbx/aiinbx-py/compare/v0.13.0...v0.14.0)
|
|
78
|
+
|
|
79
|
+
### Features
|
|
80
|
+
|
|
81
|
+
* **api:** api update ([4f72d75](https://github.com/aiinbx/aiinbx-py/commit/4f72d758e209039a5293d53750b224c18ca8025a))
|
|
82
|
+
|
|
83
|
+
## 0.13.0 (2025-11-16)
|
|
84
|
+
|
|
85
|
+
Full Changelog: [v0.12.0...v0.13.0](https://github.com/aiinbx/aiinbx-py/compare/v0.12.0...v0.13.0)
|
|
86
|
+
|
|
87
|
+
### Features
|
|
88
|
+
|
|
89
|
+
* **api:** api update ([13b6d23](https://github.com/aiinbx/aiinbx-py/commit/13b6d23df33c278b1f17ab41a0df7495500bf553))
|
|
90
|
+
|
|
91
|
+
## 0.12.0 (2025-11-16)
|
|
92
|
+
|
|
93
|
+
Full Changelog: [v0.11.0...v0.12.0](https://github.com/aiinbx/aiinbx-py/compare/v0.11.0...v0.12.0)
|
|
94
|
+
|
|
95
|
+
### Features
|
|
96
|
+
|
|
97
|
+
* **api:** api update ([f2d9176](https://github.com/aiinbx/aiinbx-py/commit/f2d91769b6ab82a2a234f76b59f9b273d7850c8d))
|
|
98
|
+
|
|
99
|
+
## 0.11.0 (2025-11-15)
|
|
100
|
+
|
|
101
|
+
Full Changelog: [v0.10.0...v0.11.0](https://github.com/aiinbx/aiinbx-py/compare/v0.10.0...v0.11.0)
|
|
102
|
+
|
|
103
|
+
### Features
|
|
104
|
+
|
|
105
|
+
* **api:** api update ([1bf1047](https://github.com/aiinbx/aiinbx-py/commit/1bf1047914ccbdb79141933797ee2153f57928a2))
|
|
106
|
+
|
|
107
|
+
## 0.10.0 (2025-11-15)
|
|
108
|
+
|
|
109
|
+
Full Changelog: [v0.9.0...v0.10.0](https://github.com/aiinbx/aiinbx-py/compare/v0.9.0...v0.10.0)
|
|
110
|
+
|
|
111
|
+
### Features
|
|
112
|
+
|
|
113
|
+
* **api:** api update ([ef0d36f](https://github.com/aiinbx/aiinbx-py/commit/ef0d36f67a8254350e4d6d08e2ea340666df5286))
|
|
114
|
+
|
|
115
|
+
## 0.9.0 (2025-11-15)
|
|
116
|
+
|
|
117
|
+
Full Changelog: [v0.8.0...v0.9.0](https://github.com/aiinbx/aiinbx-py/compare/v0.8.0...v0.9.0)
|
|
118
|
+
|
|
119
|
+
### Features
|
|
120
|
+
|
|
121
|
+
* **api:** api update ([43ed250](https://github.com/aiinbx/aiinbx-py/commit/43ed250785d0b96f48c3a46b6db9b017f080aebc))
|
|
122
|
+
|
|
123
|
+
## 0.8.0 (2025-11-15)
|
|
124
|
+
|
|
125
|
+
Full Changelog: [v0.7.2...v0.8.0](https://github.com/aiinbx/aiinbx-py/compare/v0.7.2...v0.8.0)
|
|
126
|
+
|
|
127
|
+
### Features
|
|
128
|
+
|
|
129
|
+
* **api:** api update ([73ba8b5](https://github.com/aiinbx/aiinbx-py/commit/73ba8b5c88cf196e502f10cf975dd5c58620fd90))
|
|
130
|
+
|
|
131
|
+
## 0.7.2 (2025-11-12)
|
|
132
|
+
|
|
133
|
+
Full Changelog: [v0.7.1...v0.7.2](https://github.com/aiinbx/aiinbx-py/compare/v0.7.1...v0.7.2)
|
|
134
|
+
|
|
135
|
+
### Bug Fixes
|
|
136
|
+
|
|
137
|
+
* **compat:** update signatures of `model_dump` and `model_dump_json` for Pydantic v1 ([63fdaba](https://github.com/aiinbx/aiinbx-py/commit/63fdaba20d9bfe35d1d1358ef229d28c222b5ecf))
|
|
138
|
+
|
|
139
|
+
## 0.7.1 (2025-11-11)
|
|
140
|
+
|
|
141
|
+
Full Changelog: [v0.7.0...v0.7.1](https://github.com/aiinbx/aiinbx-py/compare/v0.7.0...v0.7.1)
|
|
142
|
+
|
|
143
|
+
### Bug Fixes
|
|
144
|
+
|
|
145
|
+
* compat with Python 3.14 ([17da3dd](https://github.com/aiinbx/aiinbx-py/commit/17da3dd00711f92f515ab05562b79eb784d0ce24))
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
### Chores
|
|
149
|
+
|
|
150
|
+
* **internal:** codegen related update ([2976852](https://github.com/aiinbx/aiinbx-py/commit/2976852cdedba8ffdaed6879fd51d87708419503))
|
|
151
|
+
|
|
152
|
+
## 0.7.0 (2025-11-04)
|
|
153
|
+
|
|
154
|
+
Full Changelog: [v0.6.0...v0.7.0](https://github.com/aiinbx/aiinbx-py/compare/v0.6.0...v0.7.0)
|
|
155
|
+
|
|
156
|
+
### Features
|
|
157
|
+
|
|
158
|
+
* **api:** api update ([0f82ed1](https://github.com/aiinbx/aiinbx-py/commit/0f82ed1bf1a6d34c2e63ecbc9cf0a5b43f53e89a))
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
### Chores
|
|
162
|
+
|
|
163
|
+
* **internal:** grammar fix (it's -> its) ([4398c76](https://github.com/aiinbx/aiinbx-py/commit/4398c76c2f4f5cd115df6f40f9948dc9d439a9b6))
|
|
164
|
+
|
|
165
|
+
## 0.6.0 (2025-10-31)
|
|
166
|
+
|
|
167
|
+
Full Changelog: [v0.5.1...v0.6.0](https://github.com/aiinbx/aiinbx-py/compare/v0.5.1...v0.6.0)
|
|
168
|
+
|
|
169
|
+
### Features
|
|
170
|
+
|
|
171
|
+
* **api:** api update ([e0ee97a](https://github.com/aiinbx/aiinbx-py/commit/e0ee97a7568dc6839f1c011b5312ec34ce3d9f7d))
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
### Chores
|
|
175
|
+
|
|
176
|
+
* **internal/tests:** avoid race condition with implicit client cleanup ([4cf6938](https://github.com/aiinbx/aiinbx-py/commit/4cf6938564097419455a6219e0b217e7921a9ea2))
|
|
177
|
+
|
|
178
|
+
## 0.5.1 (2025-10-30)
|
|
179
|
+
|
|
180
|
+
Full Changelog: [v0.5.0...v0.5.1](https://github.com/aiinbx/aiinbx-py/compare/v0.5.0...v0.5.1)
|
|
181
|
+
|
|
182
|
+
### Bug Fixes
|
|
183
|
+
|
|
184
|
+
* **client:** close streams without requiring full consumption ([d824bbb](https://github.com/aiinbx/aiinbx-py/commit/d824bbbd517355748039bf7f5edfbee0e802a606))
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
### Chores
|
|
188
|
+
|
|
189
|
+
* bump `httpx-aiohttp` version to 0.1.9 ([8c932fb](https://github.com/aiinbx/aiinbx-py/commit/8c932fb49aa74fe9174deb5c7b4e71cccd41f119))
|
|
190
|
+
|
|
191
|
+
## 0.5.0 (2025-10-15)
|
|
192
|
+
|
|
193
|
+
Full Changelog: [v0.4.0...v0.5.0](https://github.com/aiinbx/aiinbx-py/compare/v0.4.0...v0.5.0)
|
|
194
|
+
|
|
195
|
+
### Features
|
|
196
|
+
|
|
197
|
+
* **api:** manual updates ([ddacc81](https://github.com/aiinbx/aiinbx-py/commit/ddacc8158fd4079c1ee4b8ae04f89f22e2fcd46a))
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
### Chores
|
|
201
|
+
|
|
202
|
+
* **internal:** detect missing future annotations with ruff ([6f6a3da](https://github.com/aiinbx/aiinbx-py/commit/6f6a3da5978b34e1a2959b38715d4311474f1c5e))
|
|
203
|
+
|
|
204
|
+
## 0.4.0 (2025-10-05)
|
|
205
|
+
|
|
206
|
+
Full Changelog: [v0.3.0...v0.4.0](https://github.com/aiinbx/aiinbx-py/compare/v0.3.0...v0.4.0)
|
|
207
|
+
|
|
208
|
+
### Features
|
|
209
|
+
|
|
210
|
+
* **api:** manual updates ([601d5ea](https://github.com/aiinbx/aiinbx-py/commit/601d5eade9216549a200c26584a2cc18176835fd))
|
|
211
|
+
* improve future compat with pydantic v3 ([dcc1c80](https://github.com/aiinbx/aiinbx-py/commit/dcc1c804ec998e7948395f7c1ea3aac371a539fb))
|
|
212
|
+
* **types:** replace List[str] with SequenceNotStr in params ([a31a999](https://github.com/aiinbx/aiinbx-py/commit/a31a999a8dd553a067fdd4368d147f773418dc02))
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
### Chores
|
|
216
|
+
|
|
217
|
+
* do not install brew dependencies in ./scripts/bootstrap by default ([b4c08e3](https://github.com/aiinbx/aiinbx-py/commit/b4c08e37dfa25b784a2cd7d5e9778f3318c365b9))
|
|
218
|
+
* **internal:** add Sequence related utils ([879c21a](https://github.com/aiinbx/aiinbx-py/commit/879c21ac262c2c10c0e1bfa03d5d1c40470f889b))
|
|
219
|
+
* **internal:** move mypy configurations to `pyproject.toml` file ([3108a79](https://github.com/aiinbx/aiinbx-py/commit/3108a794e35f868d1e21a210abbda837eecc64d1))
|
|
220
|
+
* **internal:** update pydantic dependency ([6dcd694](https://github.com/aiinbx/aiinbx-py/commit/6dcd694e2ab6b8246892ebef85e95bff9b0338a9))
|
|
221
|
+
* **tests:** simplify `get_platform` test ([0f14d8c](https://github.com/aiinbx/aiinbx-py/commit/0f14d8cd43342f3fda7ccda30717c01d20679593))
|
|
222
|
+
* **types:** change optional parameter type from NotGiven to Omit ([1b12faa](https://github.com/aiinbx/aiinbx-py/commit/1b12faa48dbcc8fedf5dc8e4a410c58fcfac7853))
|
|
223
|
+
|
|
224
|
+
## 0.3.0 (2025-08-28)
|
|
225
|
+
|
|
226
|
+
Full Changelog: [v0.2.0...v0.3.0](https://github.com/aiinbx/aiinbx-py/compare/v0.2.0...v0.3.0)
|
|
227
|
+
|
|
228
|
+
### Features
|
|
229
|
+
|
|
230
|
+
* **api:** api update ([2de3cb7](https://github.com/aiinbx/aiinbx-py/commit/2de3cb73d4178e81925fd6d04b3683b81e7da30d))
|
|
231
|
+
|
|
232
|
+
## 0.2.0 (2025-08-28)
|
|
233
|
+
|
|
234
|
+
Full Changelog: [v0.1.1...v0.2.0](https://github.com/aiinbx/aiinbx-py/compare/v0.1.1...v0.2.0)
|
|
235
|
+
|
|
236
|
+
### Features
|
|
237
|
+
|
|
238
|
+
* **api:** manual updates ([f4e60fe](https://github.com/aiinbx/aiinbx-py/commit/f4e60fed47de83248dbcef3cd28590643c0b9bff))
|
|
239
|
+
|
|
240
|
+
## 0.1.1 (2025-08-27)
|
|
241
|
+
|
|
242
|
+
Full Changelog: [v0.1.0...v0.1.1](https://github.com/aiinbx/aiinbx-py/compare/v0.1.0...v0.1.1)
|
|
243
|
+
|
|
244
|
+
### Bug Fixes
|
|
245
|
+
|
|
246
|
+
* avoid newer type syntax ([85f2191](https://github.com/aiinbx/aiinbx-py/commit/85f21914439dbd7e3ef751a1010eaf023b33ef70))
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
### Chores
|
|
250
|
+
|
|
251
|
+
* **internal:** change ci workflow machines ([7e210c5](https://github.com/aiinbx/aiinbx-py/commit/7e210c590a8a7659cbbf3f087b869ca580bd9b1b))
|
|
252
|
+
* **internal:** update pyright exclude list ([a4d4c96](https://github.com/aiinbx/aiinbx-py/commit/a4d4c9626f42577c535516072216bc82c6b2d551))
|
|
253
|
+
* update github action ([d06abee](https://github.com/aiinbx/aiinbx-py/commit/d06abee5f995ce020da7ab44160eaab348c8c18a))
|
|
254
|
+
|
|
255
|
+
## 0.1.0 (2025-08-13)
|
|
256
|
+
|
|
257
|
+
Full Changelog: [v0.0.1...v0.1.0](https://github.com/aiinbx/aiinbx-py/compare/v0.0.1...v0.1.0)
|
|
258
|
+
|
|
259
|
+
### Features
|
|
260
|
+
|
|
261
|
+
* **api:** manual updates ([9f338c0](https://github.com/aiinbx/aiinbx-py/commit/9f338c08cf76e9482a9529c761654cdd250483ea))
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
### Chores
|
|
265
|
+
|
|
266
|
+
* configure new SDK language ([3cc34fc](https://github.com/aiinbx/aiinbx-py/commit/3cc34fcf8b0325986076726a774c419992b5aafa))
|
|
267
|
+
* update SDK settings ([9251ee7](https://github.com/aiinbx/aiinbx-py/commit/9251ee7b47185255692e59f672e6158f4af32541))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: aiinbx
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.23.0
|
|
4
4
|
Summary: The official Python library for the AIInbx API
|
|
5
5
|
Project-URL: Homepage, https://github.com/aiinbx/aiinbx-py
|
|
6
6
|
Project-URL: Repository, https://github.com/aiinbx/aiinbx-py
|
|
@@ -13,7 +13,6 @@ Classifier: Operating System :: Microsoft :: Windows
|
|
|
13
13
|
Classifier: Operating System :: OS Independent
|
|
14
14
|
Classifier: Operating System :: POSIX
|
|
15
15
|
Classifier: Operating System :: POSIX :: Linux
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.9
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.10
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.11
|
|
@@ -21,7 +20,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.13
|
|
22
21
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
22
|
Classifier: Typing :: Typed
|
|
24
|
-
Requires-Python: >=3.
|
|
23
|
+
Requires-Python: >=3.9
|
|
25
24
|
Requires-Dist: anyio<5,>=3.5.0
|
|
26
25
|
Requires-Dist: distro<2,>=1.7.0
|
|
27
26
|
Requires-Dist: httpx<1,>=0.23.0
|
|
@@ -38,7 +37,7 @@ Description-Content-Type: text/markdown
|
|
|
38
37
|
<!-- prettier-ignore -->
|
|
39
38
|
[)](https://pypi.org/project/aiinbx/)
|
|
40
39
|
|
|
41
|
-
The AI Inbx Python library provides convenient access to the AI Inbx REST API from any Python 3.
|
|
40
|
+
The AI Inbx Python library provides convenient access to the AI Inbx REST API from any Python 3.9+
|
|
42
41
|
application. The library includes type definitions for all request params and response fields,
|
|
43
42
|
and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
|
|
44
43
|
|
|
@@ -391,7 +390,7 @@ print(aiinbx.__version__)
|
|
|
391
390
|
|
|
392
391
|
## Requirements
|
|
393
392
|
|
|
394
|
-
Python 3.
|
|
393
|
+
Python 3.9 or higher.
|
|
395
394
|
|
|
396
395
|
## Contributing
|
|
397
396
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<!-- prettier-ignore -->
|
|
4
4
|
[)](https://pypi.org/project/aiinbx/)
|
|
5
5
|
|
|
6
|
-
The AI Inbx Python library provides convenient access to the AI Inbx REST API from any Python 3.
|
|
6
|
+
The AI Inbx Python library provides convenient access to the AI Inbx REST API from any Python 3.9+
|
|
7
7
|
application. The library includes type definitions for all request params and response fields,
|
|
8
8
|
and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
|
|
9
9
|
|
|
@@ -356,7 +356,7 @@ print(aiinbx.__version__)
|
|
|
356
356
|
|
|
357
357
|
## Requirements
|
|
358
358
|
|
|
359
|
-
Python 3.
|
|
359
|
+
Python 3.9 or higher.
|
|
360
360
|
|
|
361
361
|
## Contributing
|
|
362
362
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "aiinbx"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.23.0"
|
|
4
4
|
description = "The official Python library for the AIInbx API"
|
|
5
5
|
dynamic = ["readme"]
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -15,11 +15,10 @@ dependencies = [
|
|
|
15
15
|
"distro>=1.7.0, <2",
|
|
16
16
|
"sniffio",
|
|
17
17
|
]
|
|
18
|
-
requires-python = ">= 3.
|
|
18
|
+
requires-python = ">= 3.9"
|
|
19
19
|
classifiers = [
|
|
20
20
|
"Typing :: Typed",
|
|
21
21
|
"Intended Audience :: Developers",
|
|
22
|
-
"Programming Language :: Python :: 3.8",
|
|
23
22
|
"Programming Language :: Python :: 3.9",
|
|
24
23
|
"Programming Language :: Python :: 3.10",
|
|
25
24
|
"Programming Language :: Python :: 3.11",
|
|
@@ -141,7 +140,7 @@ filterwarnings = [
|
|
|
141
140
|
# there are a couple of flags that are still disabled by
|
|
142
141
|
# default in strict mode as they are experimental and niche.
|
|
143
142
|
typeCheckingMode = "strict"
|
|
144
|
-
pythonVersion = "3.
|
|
143
|
+
pythonVersion = "3.9"
|
|
145
144
|
|
|
146
145
|
exclude = [
|
|
147
146
|
"_dev",
|
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import os
|
|
4
4
|
import inspect
|
|
5
|
+
import weakref
|
|
5
6
|
from typing import TYPE_CHECKING, Any, Type, Union, Generic, TypeVar, Callable, Optional, cast
|
|
6
7
|
from datetime import date, datetime
|
|
7
8
|
from typing_extensions import (
|
|
@@ -256,15 +257,16 @@ class BaseModel(pydantic.BaseModel):
|
|
|
256
257
|
mode: Literal["json", "python"] | str = "python",
|
|
257
258
|
include: IncEx | None = None,
|
|
258
259
|
exclude: IncEx | None = None,
|
|
260
|
+
context: Any | None = None,
|
|
259
261
|
by_alias: bool | None = None,
|
|
260
262
|
exclude_unset: bool = False,
|
|
261
263
|
exclude_defaults: bool = False,
|
|
262
264
|
exclude_none: bool = False,
|
|
265
|
+
exclude_computed_fields: bool = False,
|
|
263
266
|
round_trip: bool = False,
|
|
264
267
|
warnings: bool | Literal["none", "warn", "error"] = True,
|
|
265
|
-
context: dict[str, Any] | None = None,
|
|
266
|
-
serialize_as_any: bool = False,
|
|
267
268
|
fallback: Callable[[Any], Any] | None = None,
|
|
269
|
+
serialize_as_any: bool = False,
|
|
268
270
|
) -> dict[str, Any]:
|
|
269
271
|
"""Usage docs: https://docs.pydantic.dev/2.4/concepts/serialization/#modelmodel_dump
|
|
270
272
|
|
|
@@ -272,16 +274,24 @@ class BaseModel(pydantic.BaseModel):
|
|
|
272
274
|
|
|
273
275
|
Args:
|
|
274
276
|
mode: The mode in which `to_python` should run.
|
|
275
|
-
If mode is 'json', the
|
|
276
|
-
If mode is 'python', the
|
|
277
|
-
include: A
|
|
278
|
-
exclude: A
|
|
277
|
+
If mode is 'json', the output will only contain JSON serializable types.
|
|
278
|
+
If mode is 'python', the output may contain non-JSON-serializable Python objects.
|
|
279
|
+
include: A set of fields to include in the output.
|
|
280
|
+
exclude: A set of fields to exclude from the output.
|
|
281
|
+
context: Additional context to pass to the serializer.
|
|
279
282
|
by_alias: Whether to use the field's alias in the dictionary key if defined.
|
|
280
|
-
exclude_unset: Whether to exclude fields that
|
|
281
|
-
exclude_defaults: Whether to exclude fields that are set to their default value
|
|
282
|
-
exclude_none: Whether to exclude fields that have a value of `None
|
|
283
|
-
|
|
284
|
-
|
|
283
|
+
exclude_unset: Whether to exclude fields that have not been explicitly set.
|
|
284
|
+
exclude_defaults: Whether to exclude fields that are set to their default value.
|
|
285
|
+
exclude_none: Whether to exclude fields that have a value of `None`.
|
|
286
|
+
exclude_computed_fields: Whether to exclude computed fields.
|
|
287
|
+
While this can be useful for round-tripping, it is usually recommended to use the dedicated
|
|
288
|
+
`round_trip` parameter instead.
|
|
289
|
+
round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T].
|
|
290
|
+
warnings: How to handle serialization errors. False/"none" ignores them, True/"warn" logs errors,
|
|
291
|
+
"error" raises a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError].
|
|
292
|
+
fallback: A function to call when an unknown value is encountered. If not provided,
|
|
293
|
+
a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError] error is raised.
|
|
294
|
+
serialize_as_any: Whether to serialize fields with duck-typing serialization behavior.
|
|
285
295
|
|
|
286
296
|
Returns:
|
|
287
297
|
A dictionary representation of the model.
|
|
@@ -298,6 +308,8 @@ class BaseModel(pydantic.BaseModel):
|
|
|
298
308
|
raise ValueError("serialize_as_any is only supported in Pydantic v2")
|
|
299
309
|
if fallback is not None:
|
|
300
310
|
raise ValueError("fallback is only supported in Pydantic v2")
|
|
311
|
+
if exclude_computed_fields != False:
|
|
312
|
+
raise ValueError("exclude_computed_fields is only supported in Pydantic v2")
|
|
301
313
|
dumped = super().dict( # pyright: ignore[reportDeprecated]
|
|
302
314
|
include=include,
|
|
303
315
|
exclude=exclude,
|
|
@@ -314,15 +326,17 @@ class BaseModel(pydantic.BaseModel):
|
|
|
314
326
|
self,
|
|
315
327
|
*,
|
|
316
328
|
indent: int | None = None,
|
|
329
|
+
ensure_ascii: bool = False,
|
|
317
330
|
include: IncEx | None = None,
|
|
318
331
|
exclude: IncEx | None = None,
|
|
332
|
+
context: Any | None = None,
|
|
319
333
|
by_alias: bool | None = None,
|
|
320
334
|
exclude_unset: bool = False,
|
|
321
335
|
exclude_defaults: bool = False,
|
|
322
336
|
exclude_none: bool = False,
|
|
337
|
+
exclude_computed_fields: bool = False,
|
|
323
338
|
round_trip: bool = False,
|
|
324
339
|
warnings: bool | Literal["none", "warn", "error"] = True,
|
|
325
|
-
context: dict[str, Any] | None = None,
|
|
326
340
|
fallback: Callable[[Any], Any] | None = None,
|
|
327
341
|
serialize_as_any: bool = False,
|
|
328
342
|
) -> str:
|
|
@@ -354,6 +368,10 @@ class BaseModel(pydantic.BaseModel):
|
|
|
354
368
|
raise ValueError("serialize_as_any is only supported in Pydantic v2")
|
|
355
369
|
if fallback is not None:
|
|
356
370
|
raise ValueError("fallback is only supported in Pydantic v2")
|
|
371
|
+
if ensure_ascii != False:
|
|
372
|
+
raise ValueError("ensure_ascii is only supported in Pydantic v2")
|
|
373
|
+
if exclude_computed_fields != False:
|
|
374
|
+
raise ValueError("exclude_computed_fields is only supported in Pydantic v2")
|
|
357
375
|
return super().json( # type: ignore[reportDeprecated]
|
|
358
376
|
indent=indent,
|
|
359
377
|
include=include,
|
|
@@ -573,6 +591,9 @@ class CachedDiscriminatorType(Protocol):
|
|
|
573
591
|
__discriminator__: DiscriminatorDetails
|
|
574
592
|
|
|
575
593
|
|
|
594
|
+
DISCRIMINATOR_CACHE: weakref.WeakKeyDictionary[type, DiscriminatorDetails] = weakref.WeakKeyDictionary()
|
|
595
|
+
|
|
596
|
+
|
|
576
597
|
class DiscriminatorDetails:
|
|
577
598
|
field_name: str
|
|
578
599
|
"""The name of the discriminator field in the variant class, e.g.
|
|
@@ -615,8 +636,9 @@ class DiscriminatorDetails:
|
|
|
615
636
|
|
|
616
637
|
|
|
617
638
|
def _build_discriminated_union_meta(*, union: type, meta_annotations: tuple[Any, ...]) -> DiscriminatorDetails | None:
|
|
618
|
-
|
|
619
|
-
|
|
639
|
+
cached = DISCRIMINATOR_CACHE.get(union)
|
|
640
|
+
if cached is not None:
|
|
641
|
+
return cached
|
|
620
642
|
|
|
621
643
|
discriminator_field_name: str | None = None
|
|
622
644
|
|
|
@@ -669,7 +691,7 @@ def _build_discriminated_union_meta(*, union: type, meta_annotations: tuple[Any,
|
|
|
669
691
|
discriminator_field=discriminator_field_name,
|
|
670
692
|
discriminator_alias=discriminator_alias,
|
|
671
693
|
)
|
|
672
|
-
|
|
694
|
+
DISCRIMINATOR_CACHE.setdefault(union, details)
|
|
673
695
|
return details
|
|
674
696
|
|
|
675
697
|
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import sys
|
|
4
3
|
import asyncio
|
|
5
4
|
import functools
|
|
6
|
-
import
|
|
7
|
-
from typing import Any, TypeVar, Callable, Awaitable
|
|
5
|
+
from typing import TypeVar, Callable, Awaitable
|
|
8
6
|
from typing_extensions import ParamSpec
|
|
9
7
|
|
|
10
8
|
import anyio
|
|
@@ -15,34 +13,11 @@ T_Retval = TypeVar("T_Retval")
|
|
|
15
13
|
T_ParamSpec = ParamSpec("T_ParamSpec")
|
|
16
14
|
|
|
17
15
|
|
|
18
|
-
if sys.version_info >= (3, 9):
|
|
19
|
-
_asyncio_to_thread = asyncio.to_thread
|
|
20
|
-
else:
|
|
21
|
-
# backport of https://docs.python.org/3/library/asyncio-task.html#asyncio.to_thread
|
|
22
|
-
# for Python 3.8 support
|
|
23
|
-
async def _asyncio_to_thread(
|
|
24
|
-
func: Callable[T_ParamSpec, T_Retval], /, *args: T_ParamSpec.args, **kwargs: T_ParamSpec.kwargs
|
|
25
|
-
) -> Any:
|
|
26
|
-
"""Asynchronously run function *func* in a separate thread.
|
|
27
|
-
|
|
28
|
-
Any *args and **kwargs supplied for this function are directly passed
|
|
29
|
-
to *func*. Also, the current :class:`contextvars.Context` is propagated,
|
|
30
|
-
allowing context variables from the main thread to be accessed in the
|
|
31
|
-
separate thread.
|
|
32
|
-
|
|
33
|
-
Returns a coroutine that can be awaited to get the eventual result of *func*.
|
|
34
|
-
"""
|
|
35
|
-
loop = asyncio.events.get_running_loop()
|
|
36
|
-
ctx = contextvars.copy_context()
|
|
37
|
-
func_call = functools.partial(ctx.run, func, *args, **kwargs)
|
|
38
|
-
return await loop.run_in_executor(None, func_call)
|
|
39
|
-
|
|
40
|
-
|
|
41
16
|
async def to_thread(
|
|
42
17
|
func: Callable[T_ParamSpec, T_Retval], /, *args: T_ParamSpec.args, **kwargs: T_ParamSpec.kwargs
|
|
43
18
|
) -> T_Retval:
|
|
44
19
|
if sniffio.current_async_library() == "asyncio":
|
|
45
|
-
return await
|
|
20
|
+
return await asyncio.to_thread(func, *args, **kwargs)
|
|
46
21
|
|
|
47
22
|
return await anyio.to_thread.run_sync(
|
|
48
23
|
functools.partial(func, *args, **kwargs),
|
|
@@ -53,10 +28,7 @@ async def to_thread(
|
|
|
53
28
|
def asyncify(function: Callable[T_ParamSpec, T_Retval]) -> Callable[T_ParamSpec, Awaitable[T_Retval]]:
|
|
54
29
|
"""
|
|
55
30
|
Take a blocking function and create an async one that receives the same
|
|
56
|
-
positional and keyword arguments.
|
|
57
|
-
asyncio.to_thread to run the function in a separate thread. For python version
|
|
58
|
-
3.8, it uses locally defined copy of the asyncio.to_thread function which was
|
|
59
|
-
introduced in python 3.9.
|
|
31
|
+
positional and keyword arguments.
|
|
60
32
|
|
|
61
33
|
Usage:
|
|
62
34
|
|
|
@@ -133,7 +133,7 @@ def is_given(obj: _T | NotGiven | Omit) -> TypeGuard[_T]:
|
|
|
133
133
|
# Type safe methods for narrowing types with TypeVars.
|
|
134
134
|
# The default narrowing for isinstance(obj, dict) is dict[unknown, unknown],
|
|
135
135
|
# however this cause Pyright to rightfully report errors. As we know we don't
|
|
136
|
-
# care about the contained types we can safely use `object` in
|
|
136
|
+
# care about the contained types we can safely use `object` in its place.
|
|
137
137
|
#
|
|
138
138
|
# There are two separate functions defined, `is_*` and `is_*_t` for different use cases.
|
|
139
139
|
# `is_*` is for when you're dealing with an unknown input
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Union
|
|
5
|
+
from typing import Union, Iterable
|
|
6
6
|
|
|
7
7
|
import httpx
|
|
8
8
|
|
|
@@ -84,6 +84,7 @@ class EmailsResource(SyncAPIResource):
|
|
|
84
84
|
*,
|
|
85
85
|
from_: str,
|
|
86
86
|
html: str,
|
|
87
|
+
attachments: Iterable[email_reply_params.Attachment] | Omit = omit,
|
|
87
88
|
bcc: Union[str, SequenceNotStr[str]] | Omit = omit,
|
|
88
89
|
cc: Union[str, SequenceNotStr[str]] | Omit = omit,
|
|
89
90
|
from_name: str | Omit = omit,
|
|
@@ -122,6 +123,7 @@ class EmailsResource(SyncAPIResource):
|
|
|
122
123
|
{
|
|
123
124
|
"from_": from_,
|
|
124
125
|
"html": html,
|
|
126
|
+
"attachments": attachments,
|
|
125
127
|
"bcc": bcc,
|
|
126
128
|
"cc": cc,
|
|
127
129
|
"from_name": from_name,
|
|
@@ -146,6 +148,7 @@ class EmailsResource(SyncAPIResource):
|
|
|
146
148
|
html: str,
|
|
147
149
|
subject: str,
|
|
148
150
|
to: Union[str, SequenceNotStr[str]],
|
|
151
|
+
attachments: Iterable[email_send_params.Attachment] | Omit = omit,
|
|
149
152
|
bcc: Union[str, SequenceNotStr[str]] | Omit = omit,
|
|
150
153
|
cc: Union[str, SequenceNotStr[str]] | Omit = omit,
|
|
151
154
|
from_name: str | Omit = omit,
|
|
@@ -185,6 +188,7 @@ class EmailsResource(SyncAPIResource):
|
|
|
185
188
|
"html": html,
|
|
186
189
|
"subject": subject,
|
|
187
190
|
"to": to,
|
|
191
|
+
"attachments": attachments,
|
|
188
192
|
"bcc": bcc,
|
|
189
193
|
"cc": cc,
|
|
190
194
|
"from_name": from_name,
|
|
@@ -263,6 +267,7 @@ class AsyncEmailsResource(AsyncAPIResource):
|
|
|
263
267
|
*,
|
|
264
268
|
from_: str,
|
|
265
269
|
html: str,
|
|
270
|
+
attachments: Iterable[email_reply_params.Attachment] | Omit = omit,
|
|
266
271
|
bcc: Union[str, SequenceNotStr[str]] | Omit = omit,
|
|
267
272
|
cc: Union[str, SequenceNotStr[str]] | Omit = omit,
|
|
268
273
|
from_name: str | Omit = omit,
|
|
@@ -301,6 +306,7 @@ class AsyncEmailsResource(AsyncAPIResource):
|
|
|
301
306
|
{
|
|
302
307
|
"from_": from_,
|
|
303
308
|
"html": html,
|
|
309
|
+
"attachments": attachments,
|
|
304
310
|
"bcc": bcc,
|
|
305
311
|
"cc": cc,
|
|
306
312
|
"from_name": from_name,
|
|
@@ -325,6 +331,7 @@ class AsyncEmailsResource(AsyncAPIResource):
|
|
|
325
331
|
html: str,
|
|
326
332
|
subject: str,
|
|
327
333
|
to: Union[str, SequenceNotStr[str]],
|
|
334
|
+
attachments: Iterable[email_send_params.Attachment] | Omit = omit,
|
|
328
335
|
bcc: Union[str, SequenceNotStr[str]] | Omit = omit,
|
|
329
336
|
cc: Union[str, SequenceNotStr[str]] | Omit = omit,
|
|
330
337
|
from_name: str | Omit = omit,
|
|
@@ -364,6 +371,7 @@ class AsyncEmailsResource(AsyncAPIResource):
|
|
|
364
371
|
"html": html,
|
|
365
372
|
"subject": subject,
|
|
366
373
|
"to": to,
|
|
374
|
+
"attachments": attachments,
|
|
367
375
|
"bcc": bcc,
|
|
368
376
|
"cc": cc,
|
|
369
377
|
"from_name": from_name,
|