compass_api_sdk 0.9.35__py3-none-any.whl → 0.9.37__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.

Potentially problematic release.


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

@@ -4,7 +4,7 @@ from decimal import Decimal
4
4
  import functools
5
5
  import json
6
6
  import typing
7
- from typing import Any, Dict, List, Tuple, Union, get_args
7
+ from typing import Any, Dict, List, Optional, Tuple, Union, get_args
8
8
  import typing_extensions
9
9
  from typing_extensions import get_origin
10
10
 
@@ -13,6 +13,7 @@ from pydantic import ConfigDict, create_model
13
13
  from pydantic_core import from_json
14
14
 
15
15
  from ..types.basemodel import BaseModel, Nullable, OptionalNullable, Unset
16
+ from compass_api_sdk import errors
16
17
 
17
18
 
18
19
  def serialize_decimal(as_str: bool):
@@ -140,6 +141,22 @@ def unmarshal_json(raw, typ: Any) -> Any:
140
141
  return unmarshal(from_json(raw), typ)
141
142
 
142
143
 
144
+ def unmarshal_json_response(
145
+ typ: Any, http_res: httpx.Response, body: Optional[str] = None
146
+ ) -> Any:
147
+ if body is None:
148
+ body = http_res.text
149
+ try:
150
+ return unmarshal_json(body, typ)
151
+ except Exception as e:
152
+ raise errors.ResponseValidationError(
153
+ "Response validation failed",
154
+ http_res,
155
+ e,
156
+ body,
157
+ ) from e
158
+
159
+
143
160
  def unmarshal(val, typ: Any) -> Any:
144
161
  unmarshaller = create_model(
145
162
  "Unmarshaller",
@@ -192,7 +209,9 @@ def is_union(obj: object) -> bool:
192
209
  """
193
210
  Returns True if the given object is a typing.Union or typing_extensions.Union.
194
211
  """
195
- return any(obj is typing_obj for typing_obj in _get_typing_objects_by_name_of("Union"))
212
+ return any(
213
+ obj is typing_obj for typing_obj in _get_typing_objects_by_name_of("Union")
214
+ )
196
215
 
197
216
 
198
217
  def stream_to_text(stream: httpx.Response) -> str:
@@ -245,4 +264,3 @@ def _get_typing_objects_by_name_of(name: str) -> Tuple[Any, ...]:
245
264
  f"Neither typing nor typing_extensions has an object called {name!r}"
246
265
  )
247
266
  return result
248
-
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: compass_api_sdk
3
- Version: 0.9.35
3
+ Version: 0.9.37
4
4
  Summary: Compass API SDK.
5
5
  Author: royalnine
6
6
  Requires-Python: >=3.9.2
@@ -351,26 +351,18 @@ with CompassAPI(
351
351
  <!-- Start Error Handling [errors] -->
352
352
  ## Error Handling
353
353
 
354
- Handling errors in this SDK should largely match your expectations. All operations return a response object or raise an exception.
354
+ [`CompassAPIError`](https://github.com/CompassLabs/mono/blob/master/./src/compass_api_sdk/errors/compassapierror.py) is the base class for all HTTP error responses. It has the following properties:
355
355
 
356
- By default, an API error will raise a errors.APIError exception, which has the following properties:
357
-
358
- | Property | Type | Description |
359
- |-----------------|------------------|-----------------------|
360
- | `.status_code` | *int* | The HTTP status code |
361
- | `.message` | *str* | The error message |
362
- | `.raw_response` | *httpx.Response* | The raw HTTP response |
363
- | `.body` | *str* | The response content |
364
-
365
- When custom error responses are specified for an operation, the SDK may also raise their associated exceptions. You can refer to respective *Errors* tables in SDK docs for more details on possible exception types for each operation. For example, the `rate_async` method may raise the following exceptions:
366
-
367
- | Error Type | Status Code | Content Type |
368
- | -------------------------- | ----------- | ---------------- |
369
- | errors.HTTPValidationError | 422 | application/json |
370
- | errors.APIError | 4XX, 5XX | \*/\* |
356
+ | Property | Type | Description |
357
+ | ------------------ | ---------------- | --------------------------------------------------------------------------------------- |
358
+ | `err.message` | `str` | Error message |
359
+ | `err.status_code` | `int` | HTTP response status code eg `404` |
360
+ | `err.headers` | `httpx.Headers` | HTTP response headers |
361
+ | `err.body` | `str` | HTTP body. Can be empty string if no body is returned. |
362
+ | `err.raw_response` | `httpx.Response` | Raw HTTP response |
363
+ | `err.data` | | Optional. Some errors may contain structured data. [See Error Classes](https://github.com/CompassLabs/mono/blob/master/#error-classes). |
371
364
 
372
365
  ### Example
373
-
374
366
  ```python
375
367
  from compass_api_sdk import CompassAPI, errors, models
376
368
 
@@ -386,13 +378,39 @@ with CompassAPI(
386
378
  # Handle response
387
379
  print(res)
388
380
 
389
- except errors.HTTPValidationError as e:
390
- # handle e.data: errors.HTTPValidationErrorData
391
- raise(e)
392
- except errors.APIError as e:
393
- # handle exception
394
- raise(e)
381
+
382
+ except errors.CompassAPIError as e:
383
+ # The base class for HTTP error responses
384
+ print(e.message)
385
+ print(e.status_code)
386
+ print(e.body)
387
+ print(e.headers)
388
+ print(e.raw_response)
389
+
390
+ # Depending on the method different errors may be thrown
391
+ if isinstance(e, errors.HTTPValidationError):
392
+ print(e.data.detail) # Optional[List[models.ValidationError]]
395
393
  ```
394
+
395
+ ### Error Classes
396
+ **Primary errors:**
397
+ * [`CompassAPIError`](https://github.com/CompassLabs/mono/blob/master/./src/compass_api_sdk/errors/compassapierror.py): The base class for HTTP error responses.
398
+ * [`HTTPValidationError`](https://github.com/CompassLabs/mono/blob/master/./src/compass_api_sdk/errors/httpvalidationerror.py): Validation Error. Status code `422`.
399
+
400
+ <details><summary>Less common errors (5)</summary>
401
+
402
+ <br />
403
+
404
+ **Network errors:**
405
+ * [`httpx.RequestError`](https://www.python-httpx.org/exceptions/#httpx.RequestError): Base class for request errors.
406
+ * [`httpx.ConnectError`](https://www.python-httpx.org/exceptions/#httpx.ConnectError): HTTP client was unable to make a request to a server.
407
+ * [`httpx.TimeoutException`](https://www.python-httpx.org/exceptions/#httpx.TimeoutException): HTTP request timed out.
408
+
409
+
410
+ **Inherit from [`CompassAPIError`](https://github.com/CompassLabs/mono/blob/master/./src/compass_api_sdk/errors/compassapierror.py)**:
411
+ * [`ResponseValidationError`](https://github.com/CompassLabs/mono/blob/master/./src/compass_api_sdk/errors/responsevalidationerror.py): Type mismatch between the response data and the expected Pydantic model. Provides access to the Pydantic validation error via the `cause` attribute.
412
+
413
+ </details>
396
414
  <!-- End Error Handling [errors] -->
397
415
 
398
416
  <!-- Start Server Selection [server] -->
@@ -2,14 +2,17 @@ compass_api_sdk/__init__.py,sha256=w2u919V3Tzv4zEPQ-OYJ79gQ_4_SyW7GOFFoHtqXDFA,4
2
2
  compass_api_sdk/_hooks/__init__.py,sha256=p5J13DeYuISQyQWirjJAObHIf2VtIlOtFqnIpvjjVwk,118
3
3
  compass_api_sdk/_hooks/sdkhooks.py,sha256=eVxHB2Q_JG6zZx5xn74i208ij-fpTHqq2jod6fbghRQ,2503
4
4
  compass_api_sdk/_hooks/types.py,sha256=4qXm6dEntJOC2QeOdTklcc53oFzTU3HBb1xGdZ-kBXY,3059
5
- compass_api_sdk/_version.py,sha256=UPB2EY04JP2bnNLmJHhwIY6M65mEw4qqe9uDGKPgVeY,474
6
- compass_api_sdk/aave_v3.py,sha256=bP2bYTsFsHpZ0PsClTV5qdDHP_n-98NGQKoN3zd9dqo,126376
7
- compass_api_sdk/aerodrome_slipstream.py,sha256=xGt8wnAItW8w6kgnqfwDrsX24qw8TIhsD8fRhxta7Bs,83443
8
- compass_api_sdk/basesdk.py,sha256=xDxC-X-LHCwtVy8SPM6nckSu1NmF8uKhHUUQd3X-syo,11810
9
- compass_api_sdk/erc_4626_vaults.py,sha256=L0dM2NrbUitaFEk9hfrxZGDSDCuP3Qg707JSvqnNuZQ,28365
10
- compass_api_sdk/errors/__init__.py,sha256=V3vSSmUvxXtgwHL60IBI0MzLWll8h373LvT3el17p5Q,1289
11
- compass_api_sdk/errors/apierror.py,sha256=9mTyJSyvUAOnSfW_1HWt9dGl8IDlpQ68DebwYsDNdug,528
12
- compass_api_sdk/errors/httpvalidationerror.py,sha256=KBdpK3fYQoeMB-3m9dLKiMYimFN7B9VLma6YqMKX5k0,671
5
+ compass_api_sdk/_version.py,sha256=IS85_6A1bVK8V8KyLpr-ZCv2_xsp6cj-JrZIecVLwhY,474
6
+ compass_api_sdk/aave_v3.py,sha256=HGztClaMj2E00gESokwbsZ9aiNGV1-okkrDzxUIZtJA,117024
7
+ compass_api_sdk/aerodrome_slipstream.py,sha256=_-tqCHmWlvbMfVl2hHvMpJfRKJVHAHEhB30oYwcqEY8,78375
8
+ compass_api_sdk/basesdk.py,sha256=PQNcMD7BiLruZwOuU2TeWIE_zQ0iO--XYUFmIDr5zX0,11844
9
+ compass_api_sdk/erc_4626_vaults.py,sha256=6AXf8H9SIpbmlbBSlkZwtT8ApcgyE3RyRFMRdtY6VhI,26193
10
+ compass_api_sdk/errors/__init__.py,sha256=UZYQ_CPi1cQkYcHe6n00nfKPIRwbmcufTY-FmMJGmk8,1693
11
+ compass_api_sdk/errors/apierror.py,sha256=y1lf-8zwQhv1JGntxj03ViMUyHN_Uewe0oZoH8MhwSM,1235
12
+ compass_api_sdk/errors/compassapierror.py,sha256=VqVzBWmwoS3OvoKbgBNh2WFFhrM3K5Kbz_5q4bupD7o,717
13
+ compass_api_sdk/errors/httpvalidationerror.py,sha256=ebdzfILwY0BltW3MqxCpHipluRS1eOe5R_dYrBKVZ-k,801
14
+ compass_api_sdk/errors/no_response_error.py,sha256=FQG44Lq6uF7uUlzbUYfM3dJon6sbqXzJ0Ri6YrDdsEs,380
15
+ compass_api_sdk/errors/responsevalidationerror.py,sha256=baMAkfmUhcPt_cxzyOCBCGBOzlXAeTHwcn5AUCsAgOw,702
13
16
  compass_api_sdk/httpclient.py,sha256=Eu73urOAiZQtdUIyOUnPccxCiBbWEKrXG-JrRG3SLM4,3946
14
17
  compass_api_sdk/models/__init__.py,sha256=YLnHHzpGW3EY6QieXMs9GwSGI9H7vaNmoTExjGJdO4s,120038
15
18
  compass_api_sdk/models/aave_avg_rateop.py,sha256=Qn7IkBwZv5zY_L15V_LONkANzQPTbtmK2Wwhc2iqYz8,3718
@@ -55,7 +58,7 @@ compass_api_sdk/models/aerodromeslipstreamsellexactlyrequest.py,sha256=8fTTSQkqx
55
58
  compass_api_sdk/models/aerodromeslipstreamwithdrawliquidityprovisionparams.py,sha256=7Oi6Z9Vb4VSAZsvj8j50f6wdcAhzTbwFY6schYwrayA,2871
56
59
  compass_api_sdk/models/aerodromeslipstreamwithdrawliquidityprovisionrequest.py,sha256=VbyHw3IAyF80M4qNEaSDnoiKOCKISO3Ecy814j1481Q,2344
57
60
  compass_api_sdk/models/allowanceinforesponse.py,sha256=uFIiq6V_cnP6mmpItormvRkNspvD1lsRQ4nzSXguJeI,1021
58
- compass_api_sdk/models/apy.py,sha256=sO4Z_o7sHt8X8iiecXPQiE8I8ICLtVYyVOMlaMFM_v8,367
61
+ compass_api_sdk/models/apy.py,sha256=ZWw-pHNb7ZJcKVHAwWezWOhj6FCTJzh7yqFv_BPV37U,402
59
62
  compass_api_sdk/models/batcheduseroperationsrequest.py,sha256=diV1jBsKWflKAXPQvzYH9ZAtWnL9aUV8O3g3K4DOj-M,920
60
63
  compass_api_sdk/models/batcheduseroperationsresponse.py,sha256=RB_xJG3Itpm5DIbPjAt5_mX02hbMklqsWyao7shRiiI,679
61
64
  compass_api_sdk/models/borrow.py,sha256=YQxBejrFjAvfjrYC7kmQRsQL2q6bb6MZxLzFuVHZEFg,2140
@@ -101,7 +104,7 @@ compass_api_sdk/models/morpho_marketop.py,sha256=mRcswMLi9ggpwJHNMYGwP67YRx_6Bkk
101
104
  compass_api_sdk/models/morpho_marketsop.py,sha256=0bt1iUYA5CRB4V59wFCUMzFCt6WXw9uIlbh1jlSi0Tc,2373
102
105
  compass_api_sdk/models/morpho_user_positionop.py,sha256=ZI3tLwWXQ7eiSdLrQFszepA8PCW3lHKy8dH9DbtZAlo,1042
103
106
  compass_api_sdk/models/morpho_vault_positionop.py,sha256=8fTCRPEBon3eMr4Uc6eTdLwai7w8QyJnrTPeyKryenY,1344
104
- compass_api_sdk/models/morpho_vaultop.py,sha256=owvAT4MpLkGHMR7JzwIVeInk7DhECMgtJION-OT44Q4,1004
107
+ compass_api_sdk/models/morpho_vaultop.py,sha256=BpoKp0tHGhgzEf7RxxrgB5qloslryVDoW-7FrygIbU4,2989
105
108
  compass_api_sdk/models/morpho_vaultsop.py,sha256=Ed-0gPaMEnMvMHs_fN5MwrCOUZGMbnR_PnrX3NAekBs,2082
106
109
  compass_api_sdk/models/morphoborrowparams.py,sha256=njOr9MsXmDkD2JTVrTCJKXQuBi6cCagBMgoeGl9X5LM,3167
107
110
  compass_api_sdk/models/morphoborrowrequest.py,sha256=tFgzQ7SyuvwzFCc4pVkcPUbAje4MtYsi_EBuiEHQ6dA,3530
@@ -226,20 +229,20 @@ compass_api_sdk/models/weeklyapys.py,sha256=AaGjDD4NeGsZQBwdRW1G09Pmx17pLPe2oUA9
226
229
  compass_api_sdk/models/wrapethparams.py,sha256=nw1fZiDrj5wZnI25Vmg0DcNI01k-uhot68lG1_H7xrY,1223
227
230
  compass_api_sdk/models/wrapethrequest.py,sha256=pjo0BZtzdOZKuwgnc05LsCWO1A6ZAGLwFixLuXQNKDg,1476
228
231
  compass_api_sdk/models/yieldrange.py,sha256=WEpZR24JddnCS1_13y2P1CdD0lBi6dPktysCNu3TUic,324
229
- compass_api_sdk/morpho.py,sha256=3qsOFITb6VevtUchtGaTnXuZU29K7_zKfgeuzEaFiFQ,124802
230
- compass_api_sdk/pendle.py,sha256=7pmU5kX1gh_r2OsDlnkGlzinTUfCOsK9mgpauVAkyjI,100200
232
+ compass_api_sdk/morpho.py,sha256=Qplxxh6-0EkOunmbo1BQOvxhDDf8hMS3K1zHvH3sURc,116464
233
+ compass_api_sdk/pendle.py,sha256=mkvwj1dlhzEpsvh98iOZ0DdRaD47bVv5pbf-9_2TtGQ,92356
231
234
  compass_api_sdk/py.typed,sha256=zrp19r0G21lr2yRiMC0f8MFkQFGj9wMpSbboePMg8KM,59
232
235
  compass_api_sdk/sdk.py,sha256=rQ3ANGf0BxHoZc9hCQvsxkNc9qOW3DbGAuOz_sy3o7g,7865
233
236
  compass_api_sdk/sdkconfiguration.py,sha256=5nec4ViMLCsNWBd3DyEv8zWqU5Z77YZfzwX69jkdSnM,1607
234
- compass_api_sdk/sky.py,sha256=oZcj2VX26yc-nMTo5WIktz97mAjZT1J0K2IHvi_m3oM,43965
235
- compass_api_sdk/smart_account.py,sha256=-uMbE_v4WvnqGGj2ZKsJrBBByV904qm37l5spUa2OxE,9370
236
- compass_api_sdk/token_sdk.py,sha256=O_bHPJX-ZMMQnN3Dvw9DF5SSGV2g-52mDfDATymvGWI,34600
237
- compass_api_sdk/transaction_bundler.py,sha256=FJyHVR-9nWB-ibny3aGmrs9qKvSUn-TM09OuYcaUijE,32440
237
+ compass_api_sdk/sky.py,sha256=aELi_jmvjUqBxaEmnc4FPiX9k4hffHzY7vHgdhaG8bE,40405
238
+ compass_api_sdk/smart_account.py,sha256=gEgiIopK9TrRD_BmLy2lw1voh24khfsZYrtwF5913d0,8646
239
+ compass_api_sdk/token_sdk.py,sha256=vgA-JAvoFx7yQ90pQBl34W0mEWUdwLQWmv6z0agM_OY,31704
240
+ compass_api_sdk/transaction_bundler.py,sha256=nF2XiAwEt0F96TvsY3PscNs0V92x5exL6touYrMSFqA,30268
238
241
  compass_api_sdk/types/__init__.py,sha256=RArOwSgeeTIva6h-4ttjXwMUeCkz10nAFBL9D-QljI4,377
239
242
  compass_api_sdk/types/basemodel.py,sha256=L79WXvTECbSqaJzs8D3ud_KdIWkU7Cx2wbohDAktE9E,1127
240
- compass_api_sdk/uniswap_v3.py,sha256=xgdGEGBSpi8bevHpn1--71UZg8bXi9zs962tAm1hdpw,109087
241
- compass_api_sdk/universal.py,sha256=wsCKlFtrA0UNEe8ATv5cX1icLV6XmfwVpIbYNEqNsIs,71015
242
- compass_api_sdk/utils/__init__.py,sha256=811KKdkxMaWDfz2lMohUWqrR4JnIWxqeNQ1lRGQU4DM,5341
243
+ compass_api_sdk/uniswap_v3.py,sha256=AGWvQXXc_fZHbzbHDLF6cdImd_ysppta8I9NfLI5tLQ,101907
244
+ compass_api_sdk/universal.py,sha256=fRSgrX_orXpxxef2q_GyCWT5L7dX3vYaEyCW5PKILhE,65223
245
+ compass_api_sdk/utils/__init__.py,sha256=0DMA5cjPQY-KsQvHbPOpeyt6Q_iiMP3eCVSusijyXZ4,5452
243
246
  compass_api_sdk/utils/annotations.py,sha256=aR7mZG34FzgRdew7WZPYEu9QGBerpuKxCF4sek5Z_5Y,1699
244
247
  compass_api_sdk/utils/datetimes.py,sha256=oppAA5e3V35pQov1-FNLKxAaNF1_XWi-bQtyjjql3H8,855
245
248
  compass_api_sdk/utils/enums.py,sha256=REU6ydF8gsVL3xaeGX4sMNyiL3q5P9h29-f6Sa6luAE,2633
@@ -252,9 +255,9 @@ compass_api_sdk/utils/queryparams.py,sha256=MTK6inMS1_WwjmMJEJmAn67tSHHJyarpdGRl
252
255
  compass_api_sdk/utils/requestbodies.py,sha256=ySjEyjcLi731LNUahWvLOrES2HihuA8VrOJx4eQ7Qzg,2101
253
256
  compass_api_sdk/utils/retries.py,sha256=6yhfZifqIat9i76xF0lTR2jLj1IN9BNGyqqxATlEFPU,6348
254
257
  compass_api_sdk/utils/security.py,sha256=ktep3HKwbFs-MLxUYTM8Jd4v-ZBum5_Z0u1PFIdYBX0,5516
255
- compass_api_sdk/utils/serializers.py,sha256=hiHBXM1AY8_N2Z_rvFfNSYwvLBkSQlPGFp8poasdU4s,5986
258
+ compass_api_sdk/utils/serializers.py,sha256=_I2LpPIXnaN9LFxgBFUKj5w38Dd9TcOhNYL_sH6bIo8,6439
256
259
  compass_api_sdk/utils/url.py,sha256=BgGPgcTA6MRK4bF8fjP2dUopN3NzEzxWMXPBVg8NQUA,5254
257
260
  compass_api_sdk/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
258
- compass_api_sdk-0.9.35.dist-info/METADATA,sha256=PPfpdpk6xlDMEMGk85rYpipnRBeqpxh42jhLWS3JIBA,27037
259
- compass_api_sdk-0.9.35.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
260
- compass_api_sdk-0.9.35.dist-info/RECORD,,
261
+ compass_api_sdk-0.9.37.dist-info/METADATA,sha256=hWTYQPCy4L0M4LQVhOAGVQSv1vLwYPUC8slFzFN36mE,28654
262
+ compass_api_sdk-0.9.37.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
263
+ compass_api_sdk-0.9.37.dist-info/RECORD,,