ateve 0.0.1__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.

Potentially problematic release.


This version of ateve might be problematic. Click here for more details.

ateve-0.0.1/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ .mypy_cache/
4
+ .pytest_cache/
5
+ .ruff_cache/
6
+ .venv/
7
+ build/
8
+ dist/
9
+ *.egg-info/
ateve-0.0.1/PKG-INFO ADDED
@@ -0,0 +1,80 @@
1
+ Metadata-Version: 2.4
2
+ Name: ateve
3
+ Version: 0.0.1
4
+ Summary: Official Python SDK for the Ateve Search API
5
+ Project-URL: Homepage, https://ateve.ai
6
+ Project-URL: Documentation, https://ateve.ai/docs
7
+ Project-URL: Repository, https://github.com/ateve-inc/ateve-sdks
8
+ Author-email: "Ateve Inc." <ops@ateve-inc.com>
9
+ License: Apache-2.0
10
+ Keywords: AI,RAG,ateve,search
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
20
+ Classifier: Typing :: Typed
21
+ Requires-Python: >=3.11
22
+ Requires-Dist: httpx<1,>=0.28.1
23
+ Requires-Dist: pydantic<3,>=2.10
24
+ Requires-Dist: tzdata>=2025.2; platform_system == 'Windows'
25
+ Description-Content-Type: text/markdown
26
+
27
+ # Ateve Python SDK
28
+
29
+ Official typed client for `POST /v1/search`. Requires Python 3.11+.
30
+
31
+ ## Install
32
+
33
+ ```bash
34
+ pip install ateve
35
+ ```
36
+
37
+ ## Synchronous
38
+
39
+ ```python
40
+ from ateve import Ateve, ContentOptions, Topic
41
+
42
+ with Ateve() as client: # reads ATEVE_API_KEY
43
+ response = client.search(
44
+ query="quantum computing",
45
+ date_range="week",
46
+ topic=Topic.NEWS,
47
+ content=ContentOptions(summary=True, highlights=True),
48
+ )
49
+ print(response.results[0].title, response.usage.credits)
50
+ ```
51
+
52
+ ## Asynchronous
53
+
54
+ ```python
55
+ from ateve import AsyncAteve
56
+
57
+ async with AsyncAteve() as client:
58
+ response = await client.search("quantum computing", limit=10)
59
+ ```
60
+
61
+ `Ateve` owns and closes its default `httpx.Client`; `AsyncAteve` does the same
62
+ for its default `httpx.AsyncClient`. An injected `http_client` is borrowed and
63
+ never closed by the SDK. Reuse one Ateve client for its connection pool instead
64
+ of constructing one per request.
65
+
66
+ Each `search` call sends exactly one HTTP request. The SDK never retries,
67
+ backs off, or switches endpoints. This is intentional: a timeout/reset can
68
+ happen after the billable search already ran. `ApiConnectionError` exposes
69
+ `request_may_have_been_sent`; only DNS/connect/connect-timeout/pool-timeout
70
+ failures are classified as definitely not sent.
71
+
72
+ The built-in path defaults to a 60-second request timeout, 5-second connect
73
+ timeout, a 32 MiB response cap, and no redirects. Use
74
+ `max_concurrent_requests` for an optional fail-fast bulkhead.
75
+
76
+ Typed errors include `AuthenticationError`, `PaymentRequiredError`,
77
+ `RateLimitError`, `InvalidRequestError`, `ServerError`,
78
+ `ApiConnectionError`, `ApiResponseError`, and `ConcurrencyLimitError`.
79
+ `RateLimitError` preserves `retry_after_seconds` and `limit_scope`; retry
80
+ decisions remain caller-owned.
ateve-0.0.1/README.md ADDED
@@ -0,0 +1,54 @@
1
+ # Ateve Python SDK
2
+
3
+ Official typed client for `POST /v1/search`. Requires Python 3.11+.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pip install ateve
9
+ ```
10
+
11
+ ## Synchronous
12
+
13
+ ```python
14
+ from ateve import Ateve, ContentOptions, Topic
15
+
16
+ with Ateve() as client: # reads ATEVE_API_KEY
17
+ response = client.search(
18
+ query="quantum computing",
19
+ date_range="week",
20
+ topic=Topic.NEWS,
21
+ content=ContentOptions(summary=True, highlights=True),
22
+ )
23
+ print(response.results[0].title, response.usage.credits)
24
+ ```
25
+
26
+ ## Asynchronous
27
+
28
+ ```python
29
+ from ateve import AsyncAteve
30
+
31
+ async with AsyncAteve() as client:
32
+ response = await client.search("quantum computing", limit=10)
33
+ ```
34
+
35
+ `Ateve` owns and closes its default `httpx.Client`; `AsyncAteve` does the same
36
+ for its default `httpx.AsyncClient`. An injected `http_client` is borrowed and
37
+ never closed by the SDK. Reuse one Ateve client for its connection pool instead
38
+ of constructing one per request.
39
+
40
+ Each `search` call sends exactly one HTTP request. The SDK never retries,
41
+ backs off, or switches endpoints. This is intentional: a timeout/reset can
42
+ happen after the billable search already ran. `ApiConnectionError` exposes
43
+ `request_may_have_been_sent`; only DNS/connect/connect-timeout/pool-timeout
44
+ failures are classified as definitely not sent.
45
+
46
+ The built-in path defaults to a 60-second request timeout, 5-second connect
47
+ timeout, a 32 MiB response cap, and no redirects. Use
48
+ `max_concurrent_requests` for an optional fail-fast bulkhead.
49
+
50
+ Typed errors include `AuthenticationError`, `PaymentRequiredError`,
51
+ `RateLimitError`, `InvalidRequestError`, `ServerError`,
52
+ `ApiConnectionError`, `ApiResponseError`, and `ConcurrencyLimitError`.
53
+ `RateLimitError` preserves `retry_after_seconds` and `limit_scope`; retry
54
+ decisions remain caller-owned.
@@ -0,0 +1,65 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.27,<2"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "ateve"
7
+ version = "0.0.1"
8
+ description = "Official Python SDK for the Ateve Search API"
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ license = { text = "Apache-2.0" }
12
+ authors = [{ name = "Ateve Inc.", email = "ops@ateve-inc.com" }]
13
+ keywords = ["ateve", "search", "RAG", "AI"]
14
+ classifiers = [
15
+ "Development Status :: 3 - Alpha",
16
+ "Intended Audience :: Developers",
17
+ "License :: OSI Approved :: Apache Software License",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3 :: Only",
20
+ "Programming Language :: Python :: 3.11",
21
+ "Programming Language :: Python :: 3.12",
22
+ "Programming Language :: Python :: 3.13",
23
+ "Programming Language :: Python :: 3.14",
24
+ "Typing :: Typed",
25
+ ]
26
+ dependencies = [
27
+ "httpx>=0.28.1,<1",
28
+ "pydantic>=2.10,<3",
29
+ "tzdata>=2025.2; platform_system == 'Windows'",
30
+ ]
31
+
32
+ [project.urls]
33
+ Homepage = "https://ateve.ai"
34
+ Documentation = "https://ateve.ai/docs"
35
+ Repository = "https://github.com/ateve-inc/ateve-sdks"
36
+
37
+ [dependency-groups]
38
+ dev = [
39
+ "hatch>=1.14,<2",
40
+ "mypy>=1.15,<2",
41
+ "pytest>=8.3,<9",
42
+ "pytest-asyncio>=0.25,<2",
43
+ "ruff>=0.11,<1",
44
+ ]
45
+
46
+ [tool.hatch.build.targets.wheel]
47
+ packages = ["src/ateve"]
48
+
49
+ [tool.pytest.ini_options]
50
+ testpaths = ["tests"]
51
+ addopts = "-q"
52
+
53
+ [tool.ruff]
54
+ target-version = "py311"
55
+ line-length = 100
56
+
57
+ [tool.ruff.lint]
58
+ # Type syntax remains deliberately conservative so generated documentation is
59
+ # easy to read across the currently supported Python versions.
60
+ select = ["E", "F", "I", "B", "SIM"]
61
+
62
+ [tool.mypy]
63
+ python_version = "3.11"
64
+ strict = true
65
+ packages = ["ateve"]
@@ -0,0 +1,64 @@
1
+ """Official Python SDK for the Ateve Search API."""
2
+
3
+ from ._version import __version__
4
+ from .client import AsyncAteve, Ateve
5
+ from .errors import (
6
+ ApiConnectionError,
7
+ ApiError,
8
+ ApiResponseError,
9
+ AteveError,
10
+ AuthenticationError,
11
+ ConcurrencyLimitError,
12
+ InvalidRequestError,
13
+ PaymentRequiredError,
14
+ RateLimitError,
15
+ ServerError,
16
+ )
17
+ from .models import (
18
+ AnswerBlock,
19
+ Citation,
20
+ ContentFormat,
21
+ ContentOptions,
22
+ ImageItem,
23
+ LocaleSettings,
24
+ QueryInfo,
25
+ SearchRequest,
26
+ SearchResponse,
27
+ SearchResult,
28
+ Topic,
29
+ Usage,
30
+ UsageBreakdown,
31
+ UserLocation,
32
+ VideoItem,
33
+ )
34
+
35
+ __all__ = [
36
+ "AnswerBlock",
37
+ "ApiConnectionError",
38
+ "ApiError",
39
+ "ApiResponseError",
40
+ "AsyncAteve",
41
+ "Ateve",
42
+ "AteveError",
43
+ "AuthenticationError",
44
+ "Citation",
45
+ "ConcurrencyLimitError",
46
+ "ContentFormat",
47
+ "ContentOptions",
48
+ "ImageItem",
49
+ "InvalidRequestError",
50
+ "LocaleSettings",
51
+ "PaymentRequiredError",
52
+ "QueryInfo",
53
+ "RateLimitError",
54
+ "SearchRequest",
55
+ "SearchResponse",
56
+ "SearchResult",
57
+ "ServerError",
58
+ "Topic",
59
+ "Usage",
60
+ "UsageBreakdown",
61
+ "UserLocation",
62
+ "VideoItem",
63
+ "__version__",
64
+ ]
@@ -0,0 +1 @@
1
+ __version__ = "0.0.1"