Skip to content

Commit fe55a62

Browse files
author
Convilyn Release
committed
Release v2.2.0b2
Generated public mirror snapshot.
1 parent 6524e8f commit fe55a62

4 files changed

Lines changed: 27 additions & 2 deletions

File tree

.secrets.baseline

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,19 @@ versioning follows [Semantic Versioning](https://semver.org/).
55

66
## [Unreleased]
77

8+
## [2.2.0b2] — 2026-07-12
9+
810
### Docs
911

12+
- **`register()` (and every client method) is an async coroutine — the
13+
docstrings now say so.** A bare `ConvilynClient().register(...)` from sync
14+
code returns an un-awaited coroutine and silently never sends the request;
15+
the `ConvilynClient` class docstring and the `register()` docstring now
16+
spell out the `await` / `asyncio.run(...)` requirement with an example.
17+
(Reported by an SDK user during the 2026-07-12 registration-outage
18+
investigation — the outage itself was a platform-side infrastructure gap,
19+
not an SDK defect; no calling-code change is needed once the platform
20+
answers 201.)
1021
- **QUICKSTART now starts at the actual step 0**: minting a `cvl_` developer
1122
key via `ConvilynClient().register(...)` (the consumer `ck_` key does not
1223
work on the author track, and there is no console UI for developer

src/convilyn_sdk/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@
1111
hardcoded constant in two places.
1212
"""
1313

14-
__version__ = "2.2.0b1"
14+
__version__ = "2.2.0b2"

src/convilyn_sdk/client.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ class ConvilynClient:
7676
7777
Reads ``CONVILYN_API_KEY`` and ``CONVILYN_PLATFORM_URL`` from the
7878
environment if not provided explicitly.
79+
80+
Every public method on this client is an async coroutine and MUST be
81+
awaited (run under ``asyncio.run(...)`` from sync code). Calling one
82+
without ``await`` returns an un-awaited coroutine object — the request
83+
is silently never sent.
7984
"""
8085

8186
def __init__(
@@ -158,6 +163,15 @@ async def register(
158163
) -> dict[str, Any]:
159164
"""Register a new developer account (no auth needed).
160165
166+
This is an async coroutine and must be awaited. A bare
167+
``ConvilynClient().register(...)`` call from sync code returns an
168+
un-awaited coroutine and never performs the request::
169+
170+
result = await ConvilynClient().register(
171+
email="you@example.com", name="Your Name"
172+
)
173+
# from sync code: asyncio.run(ConvilynClient().register(...))
174+
161175
Returns:
162176
Dict with developer_id, api_key, and status.
163177
Save the api_key — it is only shown once.

0 commit comments

Comments
 (0)