anaplan-sdk 0.4.4a1__tar.gz → 0.4.4a3__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.
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/PKG-INFO +1 -1
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_auth.py +10 -7
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_oauth.py +6 -6
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/guides/authentication.md +5 -6
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/pyproject.toml +1 -1
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/uv.lock +1164 -1164
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/.github/dependabot.yml +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/.github/workflows/docs.yml +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/.github/workflows/lint.yml +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/.github/workflows/tests.yml +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/.gitignore +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/.pre-commit-config.yaml +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/LICENSE +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/README.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/__init__.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_async_clients/__init__.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_async_clients/_alm.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_async_clients/_audit.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_async_clients/_bulk.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_async_clients/_cloud_works.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_async_clients/_cw_flow.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_async_clients/_transactional.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_base.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_clients/__init__.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_clients/_alm.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_clients/_audit.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_clients/_bulk.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_clients/_cloud_works.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_clients/_cw_flow.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/_clients/_transactional.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/exceptions.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/models/__init__.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/models/_alm.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/models/_base.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/models/_bulk.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/models/_transactional.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/models/cloud_works.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/anaplan_sdk/models/flows.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/anaplan_explained.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/async/async_alm_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/async/async_audit_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/async/async_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/async/async_cw_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/async/async_flows_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/async/async_oauth_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/async/async_transactional_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/exceptions.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/models/alm.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/models/bulk.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/models/cloud_works.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/models/flows.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/models/transactional.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/sync/sync_alm_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/sync/sync_audit_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/sync/sync_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/sync/sync_cw_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/sync/sync_flows_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/sync/sync_oauth_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/api/sync/sync_transactional_client.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/assets/overview.html +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/css/styles.css +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/guides/alm.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/guides/audit.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/guides/bulk.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/guides/bulk_vs_transactional.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/guides/cloud_works.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/guides/index.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/guides/logging.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/guides/multiple_models.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/guides/transactional.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/img/anaplan-sdk.webp +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/index.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/installation.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/js/assets/hljs.js +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/js/assets/hljs.min.js +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/js/assets/python.js +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/js/assets/python.min.js +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/js/highlight.js +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/js/highlight.min.js +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/docs/quickstart.md +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/mkdocs.yml +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/async/conftest.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/async/test_async_alm_client.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/async/test_async_audit_client.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/async/test_async_client.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/async/test_async_cloud_works_client.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/async/test_async_flows_client.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/async/test_async_transactional_client.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/conftest.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/sync/conftest.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/sync/test_alm_client.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/sync/test_audit_client.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/sync/test_client.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/sync/test_cloud_works_client.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/sync/test_flows_client.py +0 -0
- {anaplan_sdk-0.4.4a1 → anaplan_sdk-0.4.4a3}/tests/sync/test_transactional_client.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: anaplan-sdk
|
3
|
-
Version: 0.4.
|
3
|
+
Version: 0.4.4a3
|
4
4
|
Summary: Streamlined Python Interface for Anaplan
|
5
5
|
Project-URL: Homepage, https://vinzenzklass.github.io/anaplan-sdk/
|
6
6
|
Project-URL: Repository, https://github.com/VinzenzKlass/anaplan-sdk
|
@@ -159,7 +159,7 @@ class AnaplanOAuthCodeAuth(_AnaplanAuth):
|
|
159
159
|
self,
|
160
160
|
client_id: str,
|
161
161
|
client_secret: str,
|
162
|
-
|
162
|
+
redirect_uri: str,
|
163
163
|
token: dict[str, str] | None = None,
|
164
164
|
authorization_url: str = "https://us1a.app.anaplan.com/auth/prelogin",
|
165
165
|
token_url: str = "https://us1a.app.anaplan.com/oauth/token",
|
@@ -175,7 +175,7 @@ class AnaplanOAuthCodeAuth(_AnaplanAuth):
|
|
175
175
|
:param client_id: The client ID of your Anaplan Oauth 2.0 application. This Application
|
176
176
|
must be an Authorization Code Grant application.
|
177
177
|
:param client_secret: The client secret of your Anaplan Oauth 2.0 application.
|
178
|
-
:param
|
178
|
+
:param redirect_uri: The URL to which the user will be redirected after authorizing the
|
179
179
|
application.
|
180
180
|
:param authorization_url: The URL to which the user will be redirected to authorize the
|
181
181
|
application. Defaults to the Anaplan Prelogin Page, where the user can select the
|
@@ -193,7 +193,7 @@ class AnaplanOAuthCodeAuth(_AnaplanAuth):
|
|
193
193
|
self._oauth = _OAuthRequestFactory(
|
194
194
|
client_id=client_id,
|
195
195
|
client_secret=client_secret,
|
196
|
-
|
196
|
+
redirect_uri=redirect_uri,
|
197
197
|
scope=scope,
|
198
198
|
authorization_url=authorization_url,
|
199
199
|
token_url=token_url,
|
@@ -237,7 +237,7 @@ class AnaplanRefreshTokenAuth(_AnaplanAuth):
|
|
237
237
|
self,
|
238
238
|
client_id: str,
|
239
239
|
client_secret: str,
|
240
|
-
|
240
|
+
redirect_uri: str,
|
241
241
|
token: dict[str, str],
|
242
242
|
token_url: str = "https://us1a.app.anaplan.com/oauth/token",
|
243
243
|
):
|
@@ -245,11 +245,14 @@ class AnaplanRefreshTokenAuth(_AnaplanAuth):
|
|
245
245
|
This class is a utility class for long-lived `Client` or `AsyncClient` instances that use
|
246
246
|
OAuth. It expects that you have a valid OAuth token with a refresh token, which will be used
|
247
247
|
to refresh the access token when it expires.
|
248
|
+
|
248
249
|
:param client_id: The client ID of your Anaplan Oauth 2.0 application. This Application
|
249
250
|
must be an Authorization Code Grant application.
|
250
251
|
:param client_secret: The client secret of your Anaplan Oauth 2.0 application.
|
251
|
-
:param
|
252
|
+
:param redirect_uri: The URL to which the user will be redirected after authorizing the
|
252
253
|
application.
|
254
|
+
:param token: The OAuth token dictionary containing at least the `access_token` and
|
255
|
+
`refresh_token`.
|
253
256
|
:param token_url: The URL to post the refresh token request to in order to fetch the access
|
254
257
|
token.
|
255
258
|
"""
|
@@ -257,10 +260,10 @@ class AnaplanRefreshTokenAuth(_AnaplanAuth):
|
|
257
260
|
self._oauth = _OAuthRequestFactory(
|
258
261
|
client_id=client_id,
|
259
262
|
client_secret=client_secret,
|
260
|
-
|
263
|
+
redirect_uri=redirect_uri,
|
261
264
|
token_url=token_url,
|
262
265
|
)
|
263
|
-
super().__init__(self.
|
266
|
+
super().__init__(self._oauth_token["access_token"])
|
264
267
|
|
265
268
|
def _build_auth_request(self) -> httpx.Request:
|
266
269
|
return self._oauth.refresh_token_request(self._oauth_token["refresh_token"])
|
@@ -13,7 +13,7 @@ class _BaseOauth:
|
|
13
13
|
self,
|
14
14
|
client_id: str,
|
15
15
|
client_secret: str,
|
16
|
-
|
16
|
+
redirect_uri: str,
|
17
17
|
authorization_url: str = "https://us1a.app.anaplan.com/auth/prelogin",
|
18
18
|
token_url: str = "https://us1a.app.anaplan.com/oauth/token",
|
19
19
|
validation_url: str = "https://auth.anaplan.com/token/validate",
|
@@ -38,7 +38,7 @@ class _BaseOauth:
|
|
38
38
|
:param client_id: The client ID of your Anaplan Oauth 2.0 application. This Application
|
39
39
|
must be an Authorization Code Grant application.
|
40
40
|
:param client_secret: The client secret of your Anaplan Oauth 2.0 application.
|
41
|
-
:param
|
41
|
+
:param redirect_uri: The URL to which the user will be redirected after authorizing the
|
42
42
|
application.
|
43
43
|
:param authorization_url: The URL to which the user will be redirected to authorize the
|
44
44
|
application. Defaults to the Anaplan Prelogin Page, where the user can select the
|
@@ -53,7 +53,7 @@ class _BaseOauth:
|
|
53
53
|
"""
|
54
54
|
self._client_id = client_id
|
55
55
|
self._client_secret = client_secret
|
56
|
-
self.
|
56
|
+
self._redirect_uri = redirect_uri
|
57
57
|
self._authorization_url = authorization_url
|
58
58
|
self._token_url = token_url
|
59
59
|
self._validation_url = validation_url
|
@@ -86,7 +86,7 @@ class _BaseOauth:
|
|
86
86
|
auth_url = authorization_url or self._authorization_url
|
87
87
|
state = state or self._state_generator()
|
88
88
|
url, _, _ = self._oauth.prepare_authorization_request(
|
89
|
-
auth_url, state, self.
|
89
|
+
auth_url, state, self._redirect_uri, self._scope
|
90
90
|
)
|
91
91
|
return url, state
|
92
92
|
|
@@ -94,7 +94,7 @@ class _BaseOauth:
|
|
94
94
|
url, headers, body = self._oauth.prepare_token_request(
|
95
95
|
authorization_response=authorization_response,
|
96
96
|
token_url=self._token_url,
|
97
|
-
redirect_url=self.
|
97
|
+
redirect_url=self._redirect_uri,
|
98
98
|
client_secret=self._client_secret,
|
99
99
|
)
|
100
100
|
return httpx.Request(method="POST", url=url, headers=headers, content=body)
|
@@ -206,7 +206,7 @@ class Oauth(_BaseOauth):
|
|
206
206
|
url, headers, body = self._oauth.prepare_token_request(
|
207
207
|
authorization_response=authorization_response,
|
208
208
|
token_url=self._token_url,
|
209
|
-
redirect_url=self.
|
209
|
+
redirect_url=self._redirect_uri,
|
210
210
|
client_secret=self._client_secret,
|
211
211
|
)
|
212
212
|
with httpx.Client() as client:
|
@@ -114,7 +114,6 @@ An example for FastAPI is shown below, but you can use any other Web Framework.
|
|
114
114
|
```
|
115
115
|
This will install [OAuthLib](https://oauthlib.readthedocs.io/en/latest/index.html) to securely construct the authentication request.
|
116
116
|
|
117
|
-
|
118
117
|
```python
|
119
118
|
import os
|
120
119
|
from typing import Annotated
|
@@ -127,7 +126,7 @@ from anaplan_sdk import AsyncClient, AsyncOauth, exceptions
|
|
127
126
|
_oauth = AsyncOauth(
|
128
127
|
client_id=os.environ["OAUTH_CLIENT_ID"],
|
129
128
|
client_secret=os.environ["OAUTH_CLIENT_SECRET"],
|
130
|
-
|
129
|
+
redirect_uri="https://vinzenzklass.github.io/anaplan-sdk/oauth/callback",
|
131
130
|
)
|
132
131
|
|
133
132
|
app = FastAPI()
|
@@ -182,7 +181,7 @@ when it expires.
|
|
182
181
|
token=token,
|
183
182
|
client_id=os.environ["OAUTH_CLIENT_ID"],
|
184
183
|
client_secret=os.environ["OAUTH_CLIENT_SECRET"],
|
185
|
-
|
184
|
+
redirect_uri="https://vinzenzklass.github.io/anaplan-sdk",
|
186
185
|
)
|
187
186
|
)
|
188
187
|
```
|
@@ -193,7 +192,7 @@ when it expires.
|
|
193
192
|
token=token,
|
194
193
|
client_id=os.environ["OAUTH_CLIENT_ID"],
|
195
194
|
client_secret=os.environ["OAUTH_CLIENT_SECRET"],
|
196
|
-
|
195
|
+
redirect_uri="https://vinzenzklass.github.io/anaplan-sdk",
|
197
196
|
)
|
198
197
|
)
|
199
198
|
```
|
@@ -226,7 +225,7 @@ and the subsequent token refreshes.
|
|
226
225
|
auth=AnaplanOAuthCodeAuth(
|
227
226
|
client_id=os.environ["OAUTH_CLIENT_ID"],
|
228
227
|
client_secret=os.environ["OAUTH_CLIENT_SECRET"],
|
229
|
-
|
228
|
+
redirect_uri="https://vinzenzklass.github.io/anaplan-sdk",
|
230
229
|
)
|
231
230
|
)
|
232
231
|
```
|
@@ -236,7 +235,7 @@ and the subsequent token refreshes.
|
|
236
235
|
auth=AnaplanOAuthCodeAuth(
|
237
236
|
client_id=os.environ["OAUTH_CLIENT_ID"],
|
238
237
|
client_secret=os.environ["OAUTH_CLIENT_SECRET"],
|
239
|
-
|
238
|
+
redirect_uri="https://vinzenzklass.github.io/anaplan-sdk",
|
240
239
|
)
|
241
240
|
)
|
242
241
|
```
|