release: publish Aphrody TypeSafe SDK facade

This commit is contained in:
aphrody-dev committed 2026-10-13 18:10:54 +00:00
1 parent e70bf99a89
commit 64fd6be32e
6 files changed
+89 -86

No files matched your search

@@ -12,7 +12,7 @@ from typesafe_sdk import AsyncTypeSafeClient, TypeSafeClient
async def main() -> None:
"""Check the installed version and initialize both clients."""
if version("typesafe-sdk") != sys.argv[1]:
if version("aphrody-typesafe-sdk") != sys.argv[1]:
raise RuntimeError("Installed distribution version does not match the release")
if typesafe_sdk.__version__ != sys.argv[1]:
raise RuntimeError("Exported SDK version does not match the release")
+2 -2
View File
@@ -7,10 +7,10 @@ Python SDK for [TypeSafe AI](https://typesafe.ai).
Install the SDK:
```
uv add typesafe-sdk
uv add aphrody-typesafe-sdk
```
Add the `http2` extra (`typesafe-sdk[http2]`) to enable [HTTP/2 support](https://docs.typesafe.ai/sdk/python/usage/#http2).
Add the `http2` extra (`aphrody-typesafe-sdk[http2]`) to enable HTTP/2 support.
Set `TYPESAFE_API_KEY` in your environment, then instantiate and use the client:
+10 -7
View File
@@ -1,6 +1,6 @@
[project]
name = "typesafe-sdk"
version = "0.7.4"
name = "aphrody-typesafe-sdk"
version = "0.7.5"
description = "Python SDK for TypeSafe AI API."
readme = "README.md"
license = "MIT"
@@ -49,16 +49,19 @@ http2 = [
]
[project.urls]
Homepage = "https://typesafe.ai"
Documentation = "https://docs.typesafe.ai/sdk/python/"
Changelog = "https://docs.typesafe.ai/sdk/python/changelog/"
Repository = "https://github.com/typesafe-ai/typesafe-sdk-python"
Issues = "https://github.com/typesafe-ai/typesafe-sdk-python/issues"
Homepage = "https://github.com/aphrody-labs/typesafe-sdk-python"
Documentation = "https://github.com/aphrody-labs/typesafe-sdk-python#readme"
Changelog = "https://github.com/aphrody-labs/typesafe-sdk-python/blob/main/docs/changelog.md"
Repository = "https://github.com/aphrody-labs/typesafe-sdk-python"
Issues = "https://github.com/aphrody-labs/typesafe-sdk-python/issues"
[build-system]
requires = ["uv_build>=0.12.5,<0.13"]
build-backend = "uv_build"
[tool.uv.build-backend]
module-name = "typesafe_sdk"
[dependency-groups]
dev = [
"gitpython>=3.1.62",
+1 -1
View File
@@ -2,4 +2,4 @@
from importlib.metadata import version
__version__ = version("typesafe-sdk")
__version__ = version("aphrody-typesafe-sdk")
+1 -1
View File
@@ -410,7 +410,7 @@ async def test_headers_timeout_and_logging(clients: ClientFactory, caplog: pytes
assert str(request.url) == "https://example.test/prefix/v1/systemone"
assert request.headers["authorization"] == "Bearer test-key"
assert request.headers["accept"] == "application/json"
assert request.headers["user-agent"] == f"typesafe-sdk/{version('typesafe-sdk')}"
assert request.headers["user-agent"] == f"typesafe-sdk/{version('aphrody-typesafe-sdk')}"
assert request.headers["x-typesafe-sdk"] == request.headers["user-agent"]
assert request.headers["x-typesafe-runtime"].startswith("python/")
assert "x-typesafe-retry-count" not in request.headers
Generated
+74 -74
View File
@@ -1,5 +1,5 @@
version = 1
revision = 3
revision = 5
requires-python = ">=3.10"
resolution-markers = [
"python_full_version >= '3.14' and sys_platform == 'emscripten'",
@@ -32,6 +32,79 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl", hash = "sha256:6152fdbbf9a77fdec97731721bebf7c4c44f7c29b424b0065826173efc7ed101", size = 132079, upload-time = "2026-09-05T10:42:37.923Z" },
]
[[package]]
name = "aphrody-typesafe-sdk"
version = "0.7.5"
source = { editable = "." }
dependencies = [
{ name = "httpx2" },
{ name = "packaging" },
{ name = "pydantic" },
{ name = "pydantic-core" },
{ name = "tenacity" },
{ name = "truststore", marker = "sys_platform != 'emscripten'" },
{ name = "typing-extensions" },
]
[package.optional-dependencies]
http2 = [
{ name = "httpx2", extra = ["http2"] },
]
[package.dev-dependencies]
codegen = [
{ name = "datamodel-code-generator" },
]
dev = [
{ name = "gitpython" },
{ name = "pyrefly" },
{ name = "pytest" },
{ name = "pytest-asyncio" },
{ name = "ruff" },
{ name = "sybil", version = "9.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
{ name = "sybil", version = "10.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
{ name = "syrupy" },
{ name = "tach" },
]
docs = [
{ name = "griffe-pydantic" },
{ name = "mkdocstrings", extra = ["python"] },
{ name = "ruff" },
{ name = "zensical" },
]
[package.metadata]
requires-dist = [
{ name = "httpx2", specifier = ">=2.0.0" },
{ name = "httpx2", extras = ["http2"], marker = "extra == 'http2'", specifier = ">=2.0.0" },
{ name = "packaging", specifier = ">=24.0" },
{ name = "pydantic", specifier = ">=2.12.0" },
{ name = "pydantic-core", specifier = ">=2.41.1" },
{ name = "tenacity", specifier = ">=9.0.0" },
{ name = "truststore", marker = "sys_platform != 'emscripten'", specifier = ">=0.10.0" },
{ name = "typing-extensions", specifier = ">=4.13.0" },
]
provides-extras = ["http2"]
[package.metadata.requires-dev]
codegen = [{ name = "datamodel-code-generator", specifier = ">=0.81.0" }]
dev = [
{ name = "gitpython", specifier = ">=3.1.62" },
{ name = "pyrefly", specifier = ">=1.2.0" },
{ name = "pytest", specifier = ">=9.1.1" },
{ name = "pytest-asyncio", specifier = ">=1.4.0" },
{ name = "ruff", specifier = ">=0.16.6" },
{ name = "sybil", specifier = ">=9.3.0" },
{ name = "syrupy", specifier = ">=6.0.0" },
{ name = "tach", specifier = ">=0.35.0" },
]
docs = [
{ name = "griffe-pydantic", specifier = ">=1.3.1" },
{ name = "mkdocstrings", extras = ["python"], specifier = ">=1.0.6" },
{ name = "ruff", specifier = ">=0.16.6" },
{ name = "zensical", specifier = ">=0.0.60" },
]
[[package]]
name = "argcomplete"
version = "3.7.2"
@@ -1236,79 +1309,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/8f/eb/461d5f167b6f5c7d97696f397c82f82e3480e003fce3f0a1cd1dd26e2eb2/typeguard-4.6.0-py3-none-any.whl", hash = "sha256:79878165bb86f2cf5d41d159a0ff1792a796cf496882d2fe1b1c6c7049b9cdd7", size = 36884, upload-time = "2026-07-26T08:40:21.868Z" },
]
[[package]]
name = "typesafe-sdk"
version = "0.7.4"
source = { editable = "." }
dependencies = [
{ name = "httpx2" },
{ name = "packaging" },
{ name = "pydantic" },
{ name = "pydantic-core" },
{ name = "tenacity" },
{ name = "truststore", marker = "sys_platform != 'emscripten'" },
{ name = "typing-extensions" },
]
[package.optional-dependencies]
http2 = [
{ name = "httpx2", extra = ["http2"] },
]
[package.dev-dependencies]
codegen = [
{ name = "datamodel-code-generator" },
]
dev = [
{ name = "gitpython" },
{ name = "pyrefly" },
{ name = "pytest" },
{ name = "pytest-asyncio" },
{ name = "ruff" },
{ name = "sybil", version = "9.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
{ name = "sybil", version = "10.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
{ name = "syrupy" },
{ name = "tach" },
]
docs = [
{ name = "griffe-pydantic" },
{ name = "mkdocstrings", extra = ["python"] },
{ name = "ruff" },
{ name = "zensical" },
]
[package.metadata]
requires-dist = [
{ name = "httpx2", specifier = ">=2.0.0" },
{ name = "httpx2", extras = ["http2"], marker = "extra == 'http2'", specifier = ">=2.0.0" },
{ name = "packaging", specifier = ">=24.0" },
{ name = "pydantic", specifier = ">=2.12.0" },
{ name = "pydantic-core", specifier = ">=2.41.1" },
{ name = "tenacity", specifier = ">=9.0.0" },
{ name = "truststore", marker = "sys_platform != 'emscripten'", specifier = ">=0.10.0" },
{ name = "typing-extensions", specifier = ">=4.13.0" },
]
provides-extras = ["http2"]
[package.metadata.requires-dev]
codegen = [{ name = "datamodel-code-generator", specifier = ">=0.81.0" }]
dev = [
{ name = "gitpython", specifier = ">=3.1.62" },
{ name = "pyrefly", specifier = ">=1.2.0" },
{ name = "pytest", specifier = ">=9.1.1" },
{ name = "pytest-asyncio", specifier = ">=1.4.0" },
{ name = "ruff", specifier = ">=0.16.6" },
{ name = "sybil", specifier = ">=9.3.0" },
{ name = "syrupy", specifier = ">=6.0.0" },
{ name = "tach", specifier = ">=0.35.0" },
]
docs = [
{ name = "griffe-pydantic", specifier = ">=1.3.1" },
{ name = "mkdocstrings", extras = ["python"], specifier = ">=1.0.6" },
{ name = "ruff", specifier = ">=0.16.6" },
{ name = "zensical", specifier = ">=0.0.60" },
]
[[package]]
name = "typing-extensions"
version = "4.16.0"