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.
@@ -0,0 +1,6 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.pyc
4
+ dist/
5
+ .mypy_cache/
6
+ .ruff_cache/
@@ -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)
@@ -0,0 +1,2 @@
1
+ # Generated by sdk-gen; do not edit.
2
+