visionai-sdk-python 2.2.0.dev1__py3-none-any.whl → 2.2.0.dev3__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: visionai-sdk-python
3
- Version: 2.2.0.dev1
3
+ Version: 2.2.0.dev3
4
4
  Summary: VisionAI SDK for Python
5
5
  Author-email: Tony Yang <tonyyang@linkervision.com>
6
6
  Requires-Python: >=3.11
@@ -135,8 +135,8 @@ token = client.auth.login("user@example.com", "password")
135
135
  ### OAuth Client Credentials
136
136
 
137
137
  A `ClientCredentials` (or `AsyncClientCredentials`) holds the token for one Platform
138
- client: it is minted on first use, cached until five minutes before it expires, and
139
- one instance can serve any number of clients and your own requests.
138
+ client: it is minted on first use, cached until shortly before it expires, and one
139
+ instance can serve any number of clients and your own requests.
140
140
 
141
141
  ```python
142
142
  from visionai_sdk_python import Client, ClientCredentials
@@ -146,17 +146,32 @@ cred = ClientCredentials(
146
146
  )
147
147
  client = Client(auth_url="...", vlm_url="...", credential=cred) # vlm.chat() uses it
148
148
 
149
- token = cred.get_token().token # for requests the SDK does not make itself
149
+ token = cred.get_token().token # for a WebSocket upgrade or another library
150
+
151
+ # Any other HTTP call with the same token; a 401 gets one fresh token and one retry
152
+ nodes = client.request("GET", "https://vs.example.com/mgmt/nodes").json()
150
153
  ```
151
154
 
152
- Platform mints at most 50 tokens per client per month, so the credential protects the
153
- quota: concurrent callers share one mint; a 401 on a cached token
154
- (`cred.invalidate(token)`) buys exactly one replacement, and a replacement that is
155
- rejected too is kept until its own refresh; after a 429 no mint is tried for an hour
156
- (`RateLimitedError`).
155
+ A mint is a Platform round trip and, on sites that cap client tokens, a scarce one:
156
+ concurrent callers share one mint, a refresh that fails keeps the current token while
157
+ Platform still accepts it, a 401 on a token minted more than 30 minutes ago buys a
158
+ replacement (`cred.invalidate(token)`; a younger one is kept, so a persistent 401
159
+ mints at most twice an hour), and after a 429 no mint is tried for an hour
160
+ (`RateLimitedError`). `get_token(force_refresh=True)` mints on demand.
157
161
 
158
162
  `client.auth.get_access_token(client_id, client_secret)` still works and now builds a
159
- `ClientCredentials` underneath. `vlm_url` is optional for clients that only authenticate.
163
+ `ClientCredentials` underneath; it returns the cached token unless `force_refresh=True`.
164
+ A later `login()` or `set_token()` replaces the credential: the last explicit
165
+ authentication wins. `vlm_url` is optional for clients that only authenticate.
166
+
167
+ ## Relay protocol (internal)
168
+
169
+ `visionai_sdk_python.relay` holds the wire format between platform-relay and
170
+ platform-edge-agent: the frame models, the constants and `parse_agent_frame()` /
171
+ `parse_relay_frame()` / `dump_frame()`. The spec is platform-service's
172
+ `docs/adr/0001-relay-protocol.md`; both sides import this module instead of keeping a
173
+ copy, and the ADR's JSON examples are this package's tests. It is internal to the
174
+ platform and not a public API.
160
175
 
161
176
  ## VLM Inference
162
177
 
@@ -0,0 +1,30 @@
1
+ visionai_sdk_python/__init__.py,sha256=EITFK0aQPAQN3BSnwTfrPAt1iu50pmuhXl0-jBSbiD4,774
2
+ visionai_sdk_python/_base.py,sha256=q8Ybwk9uEdaAFh85IRCHvsSpXEvYFosFYGhJAeQNIr4,9390
3
+ visionai_sdk_python/_jwt_verifier.py,sha256=h4CAK1iiDAJ-oKnXrLbCJw5rWcsVe94QNY12ne1Wzto,8442
4
+ visionai_sdk_python/_request_attribution.py,sha256=zQk_bSLsu1RTp1Fe3MGUUX8YRzq3iqfBTmhhjM7BuRU,1907
5
+ visionai_sdk_python/_source_header.py,sha256=DWiR-TGclET4UrqmAEO7bYPtf9XuLSE4FGQjZIgVWiY,5133
6
+ visionai_sdk_python/async_client.py,sha256=JHx7Kz3l84PdyHvgGPhpTKprRdSabXxjqazqUVj--rY,5542
7
+ visionai_sdk_python/client.py,sha256=0B3ut9iXsiZxveOIP8SEbTZwv3D0mDZ62D0ycIFOBC8,5352
8
+ visionai_sdk_python/constants.py,sha256=KWhoxZdlwqXwhUJDqERStq2mrms-MA8aRDqBwbIvNO0,1471
9
+ visionai_sdk_python/endpoints.py,sha256=CC-AoxXzg39sMAhqx1CTS3gRWKx_H7VOqBANRLVotoU,183
10
+ visionai_sdk_python/exceptions.py,sha256=BUpcoTgILc3z68lIQGyTYs7PCvu_BTSi228YMTx7ZWs,3020
11
+ visionai_sdk_python/instrumentation.py,sha256=tTTL5Op0fZULpmoOKW8dw8-2ReOQUEpMvHrf-R5C_yg,24512
12
+ visionai_sdk_python/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ visionai_sdk_python/auth/__init__.py,sha256=sWtanqUos5Q8P80IvjoyvOzXv6gYNkflop9qwDwsZk8,400
14
+ visionai_sdk_python/auth/_mixin.py,sha256=EDDhEB9jHc_7wEoLx_MprhToTVLekL5CyJuLTK8GhNM,5022
15
+ visionai_sdk_python/auth/async_resource.py,sha256=V6O51i7KyYSBkiQeKAbmw-EIKMVZIozO1gDexTX6tXw,5535
16
+ visionai_sdk_python/auth/credentials.py,sha256=nsZkavY8pDT39gZxFaKUcl-X_JfKKkc3Nkv9fSFFP4Y,10892
17
+ visionai_sdk_python/auth/models.py,sha256=u6MDFYaWMyf08XCrGZzwPHv43d6AElH9XO2QSjRsb3Q,449
18
+ visionai_sdk_python/auth/resource.py,sha256=3PgcxH8N6unKTs2jSQhMeJT_lg6bTce0hz0bzuID12U,5446
19
+ visionai_sdk_python/relay/__init__.py,sha256=N4DuhutN8P4EWZRFIaWTqvylNsLkzRSkHMRRF2pknFk,1296
20
+ visionai_sdk_python/relay/protocol.py,sha256=Hy7J4kgDxaKy0WOrtkmqD5xUFXgKAVXwTWX4NQ9yQHE,5561
21
+ visionai_sdk_python/vlm/__init__.py,sha256=EDd7ZG4k7inn8qqkyIhO3xI_4MPMWJT5Npsient-tTc,571
22
+ visionai_sdk_python/vlm/_mixin.py,sha256=TkqezNpW8QEe9pujsvx1APcylYQYr_PvHruEz4Le3JQ,1718
23
+ visionai_sdk_python/vlm/async_resource.py,sha256=meMUfBDa0g1hk7vFZq2fDuIQ1-QUpU0BUJtbvuG8UEY,3461
24
+ visionai_sdk_python/vlm/models.py,sha256=yDFjo4LfAxqXYBnl6ZW7YUJQoKKRkQWtqBJi2ruI6Jw,984
25
+ visionai_sdk_python/vlm/preprocess.py,sha256=ZpJJa13h8_YKwh_P7Pn8WIXV0x-r2xJi-ETgCFsGw-Y,7892
26
+ visionai_sdk_python/vlm/resource.py,sha256=4eMQ4ACcgd7nUfdRyADWmPd8yZ--uqQC4zwzBft68lg,3386
27
+ visionai_sdk_python-2.2.0.dev3.dist-info/METADATA,sha256=yaMgyrv9_edbxVHgdaOFTCc2EhV1YFjjZDaxa2D3Lt4,30403
28
+ visionai_sdk_python-2.2.0.dev3.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
29
+ visionai_sdk_python-2.2.0.dev3.dist-info/top_level.txt,sha256=79a5MCSLLv6Mbfun-8RS-G6O927hahBwDqJjeuWLdvM,20
30
+ visionai_sdk_python-2.2.0.dev3.dist-info/RECORD,,
@@ -1,28 +0,0 @@
1
- visionai_sdk_python/__init__.py,sha256=EITFK0aQPAQN3BSnwTfrPAt1iu50pmuhXl0-jBSbiD4,774
2
- visionai_sdk_python/_base.py,sha256=73Jq7OTNgY6naybpkdAIOyt-CHgEdtyD_TL5XBgERtU,9599
3
- visionai_sdk_python/_jwt_verifier.py,sha256=h4CAK1iiDAJ-oKnXrLbCJw5rWcsVe94QNY12ne1Wzto,8442
4
- visionai_sdk_python/_request_attribution.py,sha256=zQk_bSLsu1RTp1Fe3MGUUX8YRzq3iqfBTmhhjM7BuRU,1907
5
- visionai_sdk_python/_source_header.py,sha256=DWiR-TGclET4UrqmAEO7bYPtf9XuLSE4FGQjZIgVWiY,5133
6
- visionai_sdk_python/async_client.py,sha256=NbfWjAQcQ1xh53Q_Q9XQpQQSWGXhEge79cHHT6V2lnM,3924
7
- visionai_sdk_python/client.py,sha256=5iyqh3jVX7iWG52dN0zzdFL05UJYs8yQAE9fOqkt55s,3768
8
- visionai_sdk_python/constants.py,sha256=KWhoxZdlwqXwhUJDqERStq2mrms-MA8aRDqBwbIvNO0,1471
9
- visionai_sdk_python/endpoints.py,sha256=CC-AoxXzg39sMAhqx1CTS3gRWKx_H7VOqBANRLVotoU,183
10
- visionai_sdk_python/exceptions.py,sha256=UExz_lx7do154RyFobcYIaD_hDD-AExvMiOSDkKxe-0,1259
11
- visionai_sdk_python/instrumentation.py,sha256=tTTL5Op0fZULpmoOKW8dw8-2ReOQUEpMvHrf-R5C_yg,24512
12
- visionai_sdk_python/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- visionai_sdk_python/auth/__init__.py,sha256=sWtanqUos5Q8P80IvjoyvOzXv6gYNkflop9qwDwsZk8,400
14
- visionai_sdk_python/auth/_mixin.py,sha256=qxn9wQxOtigcvbFGSmjv7Fu7-HCsIJVs1oqf-wfIN4w,5034
15
- visionai_sdk_python/auth/async_resource.py,sha256=FnL9c4K7VFsXXMkY2mMPESYMS5fh08WvsqlY9tuvPSI,5341
16
- visionai_sdk_python/auth/credentials.py,sha256=STuV_ygrvAZbqY6ElE_q612w65zRHAG8oXKBm8X0U1M,8471
17
- visionai_sdk_python/auth/models.py,sha256=u6MDFYaWMyf08XCrGZzwPHv43d6AElH9XO2QSjRsb3Q,449
18
- visionai_sdk_python/auth/resource.py,sha256=vFBf_27h2u6R1w3aXm5cDEpvS21RyiwgtDm0olZFpec,5238
19
- visionai_sdk_python/vlm/__init__.py,sha256=EDd7ZG4k7inn8qqkyIhO3xI_4MPMWJT5Npsient-tTc,571
20
- visionai_sdk_python/vlm/_mixin.py,sha256=TkqezNpW8QEe9pujsvx1APcylYQYr_PvHruEz4Le3JQ,1718
21
- visionai_sdk_python/vlm/async_resource.py,sha256=2TlLFiyiiQBvGR1BQHZVH_swCdKLANPZTOOD4fRIa0Y,3703
22
- visionai_sdk_python/vlm/models.py,sha256=yDFjo4LfAxqXYBnl6ZW7YUJQoKKRkQWtqBJi2ruI6Jw,984
23
- visionai_sdk_python/vlm/preprocess.py,sha256=ZpJJa13h8_YKwh_P7Pn8WIXV0x-r2xJi-ETgCFsGw-Y,7892
24
- visionai_sdk_python/vlm/resource.py,sha256=UK_FNkQbnXlIkq0MTVav4vRRNE-p6QnWg-RL_ACGZhc,3616
25
- visionai_sdk_python-2.2.0.dev1.dist-info/METADATA,sha256=0_CPJjTYkmwvxCw5n3_V0vt0UzwhO2KdwrAmgNONtOk,29494
26
- visionai_sdk_python-2.2.0.dev1.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
27
- visionai_sdk_python-2.2.0.dev1.dist-info/top_level.txt,sha256=79a5MCSLLv6Mbfun-8RS-G6O927hahBwDqJjeuWLdvM,20
28
- visionai_sdk_python-2.2.0.dev1.dist-info/RECORD,,