appforges 0.59.2__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.
- appforges-0.59.2/.gitignore +6 -0
- appforges-0.59.2/LICENSE +21 -0
- appforges-0.59.2/PKG-INFO +58 -0
- appforges-0.59.2/README.md +42 -0
- appforges-0.59.2/pyproject.toml +25 -0
- appforges-0.59.2/src/appforges/__init__.py +19 -0
- appforges-0.59.2/src/appforges/client.py +106 -0
- appforges-0.59.2/src/appforges/errors.py +2 -0
- appforges-0.59.2/src/appforges/models.py +5136 -0
- appforges-0.59.2/src/appforges/py.typed +1 -0
- appforges-0.59.2/src/appforges/resources.py +3292 -0
- appforges-0.59.2/src/appforges/runtime/__init__.py +1 -0
- appforges-0.59.2/src/appforges/runtime/auth.py +30 -0
- appforges-0.59.2/src/appforges/runtime/client.py +437 -0
- appforges-0.59.2/src/appforges/runtime/errors.py +111 -0
- appforges-0.59.2/src/appforges/runtime/models.py +41 -0
- appforges-0.59.2/src/appforges/runtime/oauth.py +296 -0
- appforges-0.59.2/src/appforges/runtime/streaming.py +24 -0
appforges-0.59.2/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 AppForges
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: appforges
|
|
3
|
+
Version: 0.59.2
|
|
4
|
+
Summary: Official AppForges Python SDK, generated from the OpenAPI specification.
|
|
5
|
+
Project-URL: Homepage, https://developer.appforges.com
|
|
6
|
+
Project-URL: Repository, https://github.com/appforges/appforges-sdk-python
|
|
7
|
+
Project-URL: Generator, https://github.com/appforges/sdk-gen
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Typing :: Typed
|
|
12
|
+
Requires-Python: >=3.11
|
|
13
|
+
Requires-Dist: httpx<1,>=0.28
|
|
14
|
+
Requires-Dist: pydantic<3,>=2.10
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
|
|
17
|
+
# AppForges Python SDK
|
|
18
|
+
|
|
19
|
+
Official synchronous and asynchronous Python SDK. Python 3.11 or newer.
|
|
20
|
+
Generated from the same OpenAPI specification tag as the TypeScript SDK.
|
|
21
|
+
|
|
22
|
+
Install: `pip install appforges==0.59.2`
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
import os
|
|
26
|
+
from appforges import AppForges, BearerAuth, APIError
|
|
27
|
+
|
|
28
|
+
with AppForges(auth=BearerAuth(os.environ["APPFORGES_ACCESS_TOKEN"])) as client:
|
|
29
|
+
try:
|
|
30
|
+
profile = client.users.get_profile()
|
|
31
|
+
print(profile.user_id)
|
|
32
|
+
except APIError as error:
|
|
33
|
+
print(error.http_status, error.reason, error.request_id, error.trace_id)
|
|
34
|
+
raise
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
import asyncio
|
|
39
|
+
import os
|
|
40
|
+
from appforges import AsyncAppForges, BearerAuth
|
|
41
|
+
|
|
42
|
+
async def main() -> None:
|
|
43
|
+
async with AsyncAppForges(auth=BearerAuth(os.environ["APPFORGES_ACCESS_TOKEN"])) as client:
|
|
44
|
+
profile = await client.users.get_profile()
|
|
45
|
+
print(profile.user_id)
|
|
46
|
+
|
|
47
|
+
asyncio.run(main())
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The profile endpoint requires a user OAuth access token. Set base_url to
|
|
51
|
+
https://api-staging.appforges.com for staging. Wire fields retain snake_case;
|
|
52
|
+
unset fields are omitted, explicit None is sent only for nullable fields.
|
|
53
|
+
Models use strict pydantic v2 validation. Both clients support Bearer/API key
|
|
54
|
+
authentication, OAuth helpers, typed errors, bounded safe retries (default two),
|
|
55
|
+
cursor iteration (`*_all()`) and SSE iterators where specified by the API.
|
|
56
|
+
Resources expose endpoint-specific methods from the complete specification.
|
|
57
|
+
Clients close owned HTTP transports; injected transports remain caller-owned.
|
|
58
|
+
See https://developer.appforges.com for authentication and API reference.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# AppForges Python SDK
|
|
2
|
+
|
|
3
|
+
Official synchronous and asynchronous Python SDK. Python 3.11 or newer.
|
|
4
|
+
Generated from the same OpenAPI specification tag as the TypeScript SDK.
|
|
5
|
+
|
|
6
|
+
Install: `pip install appforges==0.59.2`
|
|
7
|
+
|
|
8
|
+
```python
|
|
9
|
+
import os
|
|
10
|
+
from appforges import AppForges, BearerAuth, APIError
|
|
11
|
+
|
|
12
|
+
with AppForges(auth=BearerAuth(os.environ["APPFORGES_ACCESS_TOKEN"])) as client:
|
|
13
|
+
try:
|
|
14
|
+
profile = client.users.get_profile()
|
|
15
|
+
print(profile.user_id)
|
|
16
|
+
except APIError as error:
|
|
17
|
+
print(error.http_status, error.reason, error.request_id, error.trace_id)
|
|
18
|
+
raise
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
import asyncio
|
|
23
|
+
import os
|
|
24
|
+
from appforges import AsyncAppForges, BearerAuth
|
|
25
|
+
|
|
26
|
+
async def main() -> None:
|
|
27
|
+
async with AsyncAppForges(auth=BearerAuth(os.environ["APPFORGES_ACCESS_TOKEN"])) as client:
|
|
28
|
+
profile = await client.users.get_profile()
|
|
29
|
+
print(profile.user_id)
|
|
30
|
+
|
|
31
|
+
asyncio.run(main())
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The profile endpoint requires a user OAuth access token. Set base_url to
|
|
35
|
+
https://api-staging.appforges.com for staging. Wire fields retain snake_case;
|
|
36
|
+
unset fields are omitted, explicit None is sent only for nullable fields.
|
|
37
|
+
Models use strict pydantic v2 validation. Both clients support Bearer/API key
|
|
38
|
+
authentication, OAuth helpers, typed errors, bounded safe retries (default two),
|
|
39
|
+
cursor iteration (`*_all()`) and SSE iterators where specified by the API.
|
|
40
|
+
Resources expose endpoint-specific methods from the complete specification.
|
|
41
|
+
Clients close owned HTTP transports; injected transports remain caller-owned.
|
|
42
|
+
See https://developer.appforges.com for authentication and API reference.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling==1.27.0"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "appforges"
|
|
7
|
+
version = "0.59.2"
|
|
8
|
+
description = "Official AppForges Python SDK, generated from the OpenAPI specification."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
license-files = ["LICENSE"]
|
|
13
|
+
dependencies = ["httpx>=0.28,<1", "pydantic>=2.10,<3"]
|
|
14
|
+
classifiers = ["Programming Language :: Python :: 3", "Typing :: Typed"]
|
|
15
|
+
|
|
16
|
+
[project.urls]
|
|
17
|
+
Homepage = "https://developer.appforges.com"
|
|
18
|
+
Repository = "https://github.com/appforges/appforges-sdk-python"
|
|
19
|
+
Generator = "https://github.com/appforges/sdk-gen"
|
|
20
|
+
|
|
21
|
+
[tool.hatch.build.targets.wheel]
|
|
22
|
+
packages = ["src/appforges"]
|
|
23
|
+
|
|
24
|
+
[tool.hatch.build.targets.sdist]
|
|
25
|
+
include = ["src", "README.md", "LICENSE", "pyproject.toml", "sdk-manifest.json"]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Generated by sdk-gen; do not edit.
|
|
2
|
+
from . import errors as errors
|
|
3
|
+
from . import models as models
|
|
4
|
+
from .client import AppForges as AppForges
|
|
5
|
+
from .client import AsyncAppForges as AsyncAppForges
|
|
6
|
+
from .runtime.auth import APIKeyAuth as APIKeyAuth
|
|
7
|
+
from .runtime.auth import BearerAuth as BearerAuth
|
|
8
|
+
from .runtime.errors import APIError as APIError
|
|
9
|
+
from .runtime.errors import AppForgesError as AppForgesError
|
|
10
|
+
from .runtime.errors import RateLimitExceededError as RateLimitExceededError
|
|
11
|
+
from .runtime.errors import ResponseValidationError as ResponseValidationError
|
|
12
|
+
from .runtime.models import NOT_GIVEN as NOT_GIVEN
|
|
13
|
+
from .runtime.models import NotGiven as NotGiven
|
|
14
|
+
from .runtime.oauth import PKCE as PKCE
|
|
15
|
+
from .runtime.oauth import AsyncOAuthClient as AsyncOAuthClient
|
|
16
|
+
from .runtime.oauth import AsyncRefreshableBearer as AsyncRefreshableBearer
|
|
17
|
+
from .runtime.oauth import OAuthClient as OAuthClient
|
|
18
|
+
from .runtime.oauth import OAuthTokens as OAuthTokens
|
|
19
|
+
from .runtime.oauth import RefreshableBearer as RefreshableBearer
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Generated by sdk-gen; do not edit.
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import httpx
|
|
5
|
+
|
|
6
|
+
from . import resources
|
|
7
|
+
from .runtime.auth import AsyncAuthProvider, AuthProvider
|
|
8
|
+
from .runtime.client import AsyncBaseClient, BaseClient
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AppForges(BaseClient):
|
|
12
|
+
def __init__(
|
|
13
|
+
self,
|
|
14
|
+
*,
|
|
15
|
+
base_url: str = "https://api.appforges.com",
|
|
16
|
+
auth: AuthProvider | None = None,
|
|
17
|
+
max_retries: int = 2,
|
|
18
|
+
timeout: float = 60.0,
|
|
19
|
+
http_client: httpx.Client | None = None,
|
|
20
|
+
) -> None:
|
|
21
|
+
super().__init__(
|
|
22
|
+
base_url=base_url,
|
|
23
|
+
auth=auth,
|
|
24
|
+
max_retries=max_retries,
|
|
25
|
+
timeout=timeout,
|
|
26
|
+
http_client=http_client,
|
|
27
|
+
)
|
|
28
|
+
self.articles = resources.Articles(self)
|
|
29
|
+
self.assets = resources.Assets(self)
|
|
30
|
+
self.authorize = resources.Authorize(self)
|
|
31
|
+
self.creative_prompt = resources.CreativePrompt(self)
|
|
32
|
+
self.exports = resources.Exports(self)
|
|
33
|
+
self.instructions = resources.Instructions(self)
|
|
34
|
+
self.introspect = resources.Introspect(self)
|
|
35
|
+
self.jwks = resources.Jwks(self)
|
|
36
|
+
self.metadata = resources.Metadata(self)
|
|
37
|
+
self.pinpage_categories = resources.PinpageCategories(self)
|
|
38
|
+
self.pinpage_category_organization_jobs = resources.PinpageCategoryOrganizationJobs(self)
|
|
39
|
+
self.pinpage_category_preference = resources.PinpageCategoryPreference(self)
|
|
40
|
+
self.pinpage_jobs = resources.PinpageJobs(self)
|
|
41
|
+
self.pinpage_materials = resources.PinpageMaterials(self)
|
|
42
|
+
self.pinpage_pages = resources.PinpagePages(self)
|
|
43
|
+
self.pinpage_prompt = resources.PinpagePrompt(self)
|
|
44
|
+
self.pinpage_storage_protection = resources.PinpageStorageProtection(self)
|
|
45
|
+
self.pinpage_uploads = resources.PinpageUploads(self)
|
|
46
|
+
self.preview = resources.Preview(self)
|
|
47
|
+
self.progress = resources.Progress(self)
|
|
48
|
+
self.revoke = resources.Revoke(self)
|
|
49
|
+
self.scopes = resources.Scopes(self)
|
|
50
|
+
self.sign_urls = resources.SignUrls(self)
|
|
51
|
+
self.template_presets = resources.TemplatePresets(self)
|
|
52
|
+
self.templates = resources.Templates(self)
|
|
53
|
+
self.token = resources.Token(self)
|
|
54
|
+
self.users = resources.Users(self)
|
|
55
|
+
self.verify = resources.Verify(self)
|
|
56
|
+
self.versions = resources.Versions(self)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class AsyncAppForges(AsyncBaseClient):
|
|
60
|
+
def __init__(
|
|
61
|
+
self,
|
|
62
|
+
*,
|
|
63
|
+
base_url: str = "https://api.appforges.com",
|
|
64
|
+
auth: AuthProvider | AsyncAuthProvider | None = None,
|
|
65
|
+
max_retries: int = 2,
|
|
66
|
+
timeout: float = 60.0,
|
|
67
|
+
http_client: httpx.AsyncClient | None = None,
|
|
68
|
+
) -> None:
|
|
69
|
+
super().__init__(
|
|
70
|
+
base_url=base_url,
|
|
71
|
+
auth=auth,
|
|
72
|
+
max_retries=max_retries,
|
|
73
|
+
timeout=timeout,
|
|
74
|
+
http_client=http_client,
|
|
75
|
+
)
|
|
76
|
+
self.articles = resources.AsyncArticles(self)
|
|
77
|
+
self.assets = resources.AsyncAssets(self)
|
|
78
|
+
self.authorize = resources.AsyncAuthorize(self)
|
|
79
|
+
self.creative_prompt = resources.AsyncCreativePrompt(self)
|
|
80
|
+
self.exports = resources.AsyncExports(self)
|
|
81
|
+
self.instructions = resources.AsyncInstructions(self)
|
|
82
|
+
self.introspect = resources.AsyncIntrospect(self)
|
|
83
|
+
self.jwks = resources.AsyncJwks(self)
|
|
84
|
+
self.metadata = resources.AsyncMetadata(self)
|
|
85
|
+
self.pinpage_categories = resources.AsyncPinpageCategories(self)
|
|
86
|
+
self.pinpage_category_organization_jobs = resources.AsyncPinpageCategoryOrganizationJobs(
|
|
87
|
+
self
|
|
88
|
+
)
|
|
89
|
+
self.pinpage_category_preference = resources.AsyncPinpageCategoryPreference(self)
|
|
90
|
+
self.pinpage_jobs = resources.AsyncPinpageJobs(self)
|
|
91
|
+
self.pinpage_materials = resources.AsyncPinpageMaterials(self)
|
|
92
|
+
self.pinpage_pages = resources.AsyncPinpagePages(self)
|
|
93
|
+
self.pinpage_prompt = resources.AsyncPinpagePrompt(self)
|
|
94
|
+
self.pinpage_storage_protection = resources.AsyncPinpageStorageProtection(self)
|
|
95
|
+
self.pinpage_uploads = resources.AsyncPinpageUploads(self)
|
|
96
|
+
self.preview = resources.AsyncPreview(self)
|
|
97
|
+
self.progress = resources.AsyncProgress(self)
|
|
98
|
+
self.revoke = resources.AsyncRevoke(self)
|
|
99
|
+
self.scopes = resources.AsyncScopes(self)
|
|
100
|
+
self.sign_urls = resources.AsyncSignUrls(self)
|
|
101
|
+
self.template_presets = resources.AsyncTemplatePresets(self)
|
|
102
|
+
self.templates = resources.AsyncTemplates(self)
|
|
103
|
+
self.token = resources.AsyncToken(self)
|
|
104
|
+
self.users = resources.AsyncUsers(self)
|
|
105
|
+
self.verify = resources.AsyncVerify(self)
|
|
106
|
+
self.versions = resources.AsyncVersions(self)
|