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

@@ -1,6 +1,10 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from .unsignedmulticalltransaction import (
5
+ UnsignedMulticallTransaction,
6
+ UnsignedMulticallTransactionTypedDict,
7
+ )
4
8
  from .unsignedtransaction import UnsignedTransaction, UnsignedTransactionTypedDict
5
9
  from .useroperationresponse import UserOperationResponse, UserOperationResponseTypedDict
6
10
  from typing import Union
@@ -9,10 +13,15 @@ from typing_extensions import TypeAliasType
9
13
 
10
14
  TxResponseTypedDict = TypeAliasType(
11
15
  "TxResponseTypedDict",
12
- Union[UserOperationResponseTypedDict, UnsignedTransactionTypedDict],
16
+ Union[
17
+ UserOperationResponseTypedDict,
18
+ UnsignedTransactionTypedDict,
19
+ UnsignedMulticallTransactionTypedDict,
20
+ ],
13
21
  )
14
22
 
15
23
 
16
24
  TxResponse = TypeAliasType(
17
- "TxResponse", Union[UserOperationResponse, UnsignedTransaction]
25
+ "TxResponse",
26
+ Union[UserOperationResponse, UnsignedTransaction, UnsignedMulticallTransaction],
18
27
  )
compass_api_sdk/sdk.py CHANGED
@@ -7,33 +7,53 @@ from .utils.logger import Logger, get_default_logger
7
7
  from .utils.retries import RetryConfig
8
8
  from compass_api_sdk import models, utils
9
9
  from compass_api_sdk._hooks import SDKHooks
10
- from compass_api_sdk.aave_v3 import AaveV3
11
- from compass_api_sdk.aerodrome_slipstream import AerodromeSlipstream
12
- from compass_api_sdk.morpho import Morpho
13
- from compass_api_sdk.sky import Sky
14
- from compass_api_sdk.smart_account import SmartAccount
15
- from compass_api_sdk.token_sdk import TokenSDK
16
- from compass_api_sdk.transaction_batching import TransactionBatching
17
10
  from compass_api_sdk.types import OptionalNullable, UNSET
18
- from compass_api_sdk.uniswap_v3 import UniswapV3
19
- from compass_api_sdk.universal import Universal
20
11
  import httpx
21
- from typing import Any, Callable, Dict, Optional, Union, cast
12
+ import importlib
13
+ from typing import Any, Callable, Dict, Optional, TYPE_CHECKING, Union, cast
22
14
  import weakref
23
15
 
16
+ if TYPE_CHECKING:
17
+ from compass_api_sdk.aave_v3 import AaveV3
18
+ from compass_api_sdk.aerodrome_slipstream import AerodromeSlipstream
19
+ from compass_api_sdk.morpho import Morpho
20
+ from compass_api_sdk.sky import Sky
21
+ from compass_api_sdk.smart_account import SmartAccount
22
+ from compass_api_sdk.token_sdk import TokenSDK
23
+ from compass_api_sdk.transaction_batching import TransactionBatching
24
+ from compass_api_sdk.uniswap_v3 import UniswapV3
25
+ from compass_api_sdk.universal import Universal
26
+
24
27
 
25
28
  class CompassAPI(BaseSDK):
26
29
  r"""Compass API: Compass Labs DeFi API"""
27
30
 
28
- aave_v3: AaveV3
29
- aerodrome_slipstream: AerodromeSlipstream
30
- morpho: Morpho
31
- sky: Sky
32
- token: TokenSDK
33
- uniswap_v3: UniswapV3
34
- universal: Universal
35
- transaction_batching: TransactionBatching
36
- smart_account: SmartAccount
31
+ aave_v3: "AaveV3"
32
+ aerodrome_slipstream: "AerodromeSlipstream"
33
+ morpho: "Morpho"
34
+ sky: "Sky"
35
+ token: "TokenSDK"
36
+ uniswap_v3: "UniswapV3"
37
+ universal: "Universal"
38
+ transaction_batching: "TransactionBatching"
39
+ smart_account: "SmartAccount"
40
+ _sub_sdk_map = {
41
+ "aave_v3": ("compass_api_sdk.aave_v3", "AaveV3"),
42
+ "aerodrome_slipstream": (
43
+ "compass_api_sdk.aerodrome_slipstream",
44
+ "AerodromeSlipstream",
45
+ ),
46
+ "morpho": ("compass_api_sdk.morpho", "Morpho"),
47
+ "sky": ("compass_api_sdk.sky", "Sky"),
48
+ "token": ("compass_api_sdk.token_sdk", "TokenSDK"),
49
+ "uniswap_v3": ("compass_api_sdk.uniswap_v3", "UniswapV3"),
50
+ "universal": ("compass_api_sdk.universal", "Universal"),
51
+ "transaction_batching": (
52
+ "compass_api_sdk.transaction_batching",
53
+ "TransactionBatching",
54
+ ),
55
+ "smart_account": ("compass_api_sdk.smart_account", "SmartAccount"),
56
+ }
37
57
 
38
58
  def __init__(
39
59
  self,
@@ -128,18 +148,32 @@ class CompassAPI(BaseSDK):
128
148
  self.sdk_configuration.async_client_supplied,
129
149
  )
130
150
 
131
- self._init_sdks()
132
-
133
- def _init_sdks(self):
134
- self.aave_v3 = AaveV3(self.sdk_configuration)
135
- self.aerodrome_slipstream = AerodromeSlipstream(self.sdk_configuration)
136
- self.morpho = Morpho(self.sdk_configuration)
137
- self.sky = Sky(self.sdk_configuration)
138
- self.token = TokenSDK(self.sdk_configuration)
139
- self.uniswap_v3 = UniswapV3(self.sdk_configuration)
140
- self.universal = Universal(self.sdk_configuration)
141
- self.transaction_batching = TransactionBatching(self.sdk_configuration)
142
- self.smart_account = SmartAccount(self.sdk_configuration)
151
+ def __getattr__(self, name: str):
152
+ if name in self._sub_sdk_map:
153
+ module_path, class_name = self._sub_sdk_map[name]
154
+ try:
155
+ module = importlib.import_module(module_path)
156
+ klass = getattr(module, class_name)
157
+ instance = klass(self.sdk_configuration)
158
+ setattr(self, name, instance)
159
+ return instance
160
+ except ImportError as e:
161
+ raise AttributeError(
162
+ f"Failed to import module {module_path} for attribute {name}: {e}"
163
+ ) from e
164
+ except AttributeError as e:
165
+ raise AttributeError(
166
+ f"Failed to find class {class_name} in module {module_path} for attribute {name}: {e}"
167
+ ) from e
168
+
169
+ raise AttributeError(
170
+ f"'{type(self).__name__}' object has no attribute '{name}'"
171
+ )
172
+
173
+ def __dir__(self):
174
+ default_attrs = list(super().__dir__())
175
+ lazy_attrs = list(self._sub_sdk_map.keys())
176
+ return sorted(list(set(default_attrs + lazy_attrs)))
143
177
 
144
178
  def __enter__(self):
145
179
  return self
@@ -1,51 +1,55 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
- from .annotations import get_discriminator
4
- from .datetimes import parse_datetime
5
- from .enums import OpenEnumMeta
6
- from .headers import get_headers, get_response_headers
7
- from .metadata import (
8
- FieldMetadata,
9
- find_metadata,
10
- FormMetadata,
11
- HeaderMetadata,
12
- MultipartFormMetadata,
13
- PathParamMetadata,
14
- QueryParamMetadata,
15
- RequestMetadata,
16
- SecurityMetadata,
17
- )
18
- from .queryparams import get_query_params
19
- from .retries import BackoffStrategy, Retries, retry, retry_async, RetryConfig
20
- from .requestbodies import serialize_request_body, SerializedRequestBody
21
- from .security import get_security
22
- from .serializers import (
23
- get_pydantic_model,
24
- marshal_json,
25
- unmarshal,
26
- unmarshal_json,
27
- serialize_decimal,
28
- serialize_float,
29
- serialize_int,
30
- stream_to_text,
31
- stream_to_text_async,
32
- stream_to_bytes,
33
- stream_to_bytes_async,
34
- validate_const,
35
- validate_decimal,
36
- validate_float,
37
- validate_int,
38
- validate_open_enum,
39
- )
40
- from .url import generate_url, template_url, remove_suffix
41
- from .values import (
42
- get_global_from_env,
43
- match_content_type,
44
- match_status_codes,
45
- match_response,
46
- cast_partial,
47
- )
48
- from .logger import Logger, get_body_content, get_default_logger
3
+ from typing import TYPE_CHECKING
4
+ from importlib import import_module
5
+
6
+ if TYPE_CHECKING:
7
+ from .annotations import get_discriminator
8
+ from .datetimes import parse_datetime
9
+ from .enums import OpenEnumMeta
10
+ from .headers import get_headers, get_response_headers
11
+ from .metadata import (
12
+ FieldMetadata,
13
+ find_metadata,
14
+ FormMetadata,
15
+ HeaderMetadata,
16
+ MultipartFormMetadata,
17
+ PathParamMetadata,
18
+ QueryParamMetadata,
19
+ RequestMetadata,
20
+ SecurityMetadata,
21
+ )
22
+ from .queryparams import get_query_params
23
+ from .retries import BackoffStrategy, Retries, retry, retry_async, RetryConfig
24
+ from .requestbodies import serialize_request_body, SerializedRequestBody
25
+ from .security import get_security
26
+ from .serializers import (
27
+ get_pydantic_model,
28
+ marshal_json,
29
+ unmarshal,
30
+ unmarshal_json,
31
+ serialize_decimal,
32
+ serialize_float,
33
+ serialize_int,
34
+ stream_to_text,
35
+ stream_to_text_async,
36
+ stream_to_bytes,
37
+ stream_to_bytes_async,
38
+ validate_const,
39
+ validate_decimal,
40
+ validate_float,
41
+ validate_int,
42
+ validate_open_enum,
43
+ )
44
+ from .url import generate_url, template_url, remove_suffix
45
+ from .values import (
46
+ get_global_from_env,
47
+ match_content_type,
48
+ match_status_codes,
49
+ match_response,
50
+ cast_partial,
51
+ )
52
+ from .logger import Logger, get_body_content, get_default_logger
49
53
 
50
54
  __all__ = [
51
55
  "BackoffStrategy",
@@ -56,6 +60,7 @@ __all__ = [
56
60
  "get_body_content",
57
61
  "get_default_logger",
58
62
  "get_discriminator",
63
+ "parse_datetime",
59
64
  "get_global_from_env",
60
65
  "get_headers",
61
66
  "get_pydantic_model",
@@ -98,3 +103,82 @@ __all__ = [
98
103
  "validate_open_enum",
99
104
  "cast_partial",
100
105
  ]
106
+
107
+ _dynamic_imports: dict[str, str] = {
108
+ "BackoffStrategy": ".retries",
109
+ "FieldMetadata": ".metadata",
110
+ "find_metadata": ".metadata",
111
+ "FormMetadata": ".metadata",
112
+ "generate_url": ".url",
113
+ "get_body_content": ".logger",
114
+ "get_default_logger": ".logger",
115
+ "get_discriminator": ".annotations",
116
+ "parse_datetime": ".datetimes",
117
+ "get_global_from_env": ".values",
118
+ "get_headers": ".headers",
119
+ "get_pydantic_model": ".serializers",
120
+ "get_query_params": ".queryparams",
121
+ "get_response_headers": ".headers",
122
+ "get_security": ".security",
123
+ "HeaderMetadata": ".metadata",
124
+ "Logger": ".logger",
125
+ "marshal_json": ".serializers",
126
+ "match_content_type": ".values",
127
+ "match_status_codes": ".values",
128
+ "match_response": ".values",
129
+ "MultipartFormMetadata": ".metadata",
130
+ "OpenEnumMeta": ".enums",
131
+ "PathParamMetadata": ".metadata",
132
+ "QueryParamMetadata": ".metadata",
133
+ "remove_suffix": ".url",
134
+ "Retries": ".retries",
135
+ "retry": ".retries",
136
+ "retry_async": ".retries",
137
+ "RetryConfig": ".retries",
138
+ "RequestMetadata": ".metadata",
139
+ "SecurityMetadata": ".metadata",
140
+ "serialize_decimal": ".serializers",
141
+ "serialize_float": ".serializers",
142
+ "serialize_int": ".serializers",
143
+ "serialize_request_body": ".requestbodies",
144
+ "SerializedRequestBody": ".requestbodies",
145
+ "stream_to_text": ".serializers",
146
+ "stream_to_text_async": ".serializers",
147
+ "stream_to_bytes": ".serializers",
148
+ "stream_to_bytes_async": ".serializers",
149
+ "template_url": ".url",
150
+ "unmarshal": ".serializers",
151
+ "unmarshal_json": ".serializers",
152
+ "validate_decimal": ".serializers",
153
+ "validate_const": ".serializers",
154
+ "validate_float": ".serializers",
155
+ "validate_int": ".serializers",
156
+ "validate_open_enum": ".serializers",
157
+ "cast_partial": ".values",
158
+ }
159
+
160
+
161
+ def __getattr__(attr_name: str) -> object:
162
+ module_name = _dynamic_imports.get(attr_name)
163
+ if module_name is None:
164
+ raise AttributeError(
165
+ f"no {attr_name} found in _dynamic_imports, module name -> {__name__} "
166
+ )
167
+
168
+ try:
169
+ module = import_module(module_name, __package__)
170
+ result = getattr(module, attr_name)
171
+ return result
172
+ except ImportError as e:
173
+ raise ImportError(
174
+ f"Failed to import {attr_name} from {module_name}: {e}"
175
+ ) from e
176
+ except AttributeError as e:
177
+ raise AttributeError(
178
+ f"Failed to get {attr_name} from {module_name}: {e}"
179
+ ) from e
180
+
181
+
182
+ def __dir__():
183
+ lazy_attrs = list(_dynamic_imports.keys())
184
+ return sorted(lazy_attrs)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: compass_api_sdk
3
- Version: 0.4.4
3
+ Version: 0.5.0
4
4
  Summary: Compass API SDK.
5
5
  Author: royalnine
6
6
  Requires-Python: >=3.9.2
@@ -2,15 +2,15 @@ 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=VC7TZz0BiM721MghXneEovG3UkaktRkt1OhMY3iLmZM,2818
5
- compass_api_sdk/_version.py,sha256=4n8LXiyk9iBa_mRMwWJLQdZ1SmN2K6rHK8u73T5nOLY,472
5
+ compass_api_sdk/_version.py,sha256=MzxLJg8PxxcoDrMxuPLbRx9sdlTiqmzYV85sYv9tFh4,472
6
6
  compass_api_sdk/aave_v3.py,sha256=A6iCHMbBmOLRFobOR-QIkBro81GolKA6cxNAVvXzZEs,123270
7
7
  compass_api_sdk/aerodrome_slipstream.py,sha256=w_Q84q8iIDthqX0myByQ1SE5-B2iZPqZvcNVzSLYBZ0,82785
8
8
  compass_api_sdk/basesdk.py,sha256=29RfgnfgQq_cRx8OHdQEdJuJ2DrgRZlzGIPC-_6-2bM,12136
9
- compass_api_sdk/errors/__init__.py,sha256=f8nyj2IhW5h_xtEeg6cfKgByLkqowLv0Fxm0hUofQPs,257
9
+ compass_api_sdk/errors/__init__.py,sha256=V3vSSmUvxXtgwHL60IBI0MzLWll8h373LvT3el17p5Q,1289
10
10
  compass_api_sdk/errors/apierror.py,sha256=9mTyJSyvUAOnSfW_1HWt9dGl8IDlpQ68DebwYsDNdug,528
11
11
  compass_api_sdk/errors/httpvalidationerror.py,sha256=KBdpK3fYQoeMB-3m9dLKiMYimFN7B9VLma6YqMKX5k0,671
12
12
  compass_api_sdk/httpclient.py,sha256=Eu73urOAiZQtdUIyOUnPccxCiBbWEKrXG-JrRG3SLM4,3946
13
- compass_api_sdk/models/__init__.py,sha256=pbq16iLvMEADGtOaHm6Er8m0nd9WqIrH-Lfp-kPePzA,55930
13
+ compass_api_sdk/models/__init__.py,sha256=izQ1J37V2Ui-DxriyNzY4FXuHwRXKe3XtSfUZn3h1G8,104341
14
14
  compass_api_sdk/models/aave_avg_rateop.py,sha256=PEdn3yManrwWI6SCD8nrgAFp4KJoXn4nwo56exPhRPA,2392
15
15
  compass_api_sdk/models/aave_historical_transactionsop.py,sha256=7Ghmin3AWvh2knbC-M0CZ0chL8q3fJU-GeDgXeoY0s4,1789
16
16
  compass_api_sdk/models/aave_liquidity_changeop.py,sha256=o9G4dD2foyhbunziTv_177Qr2AK37KTIQsQfvPxo5Fs,2785
@@ -154,7 +154,7 @@ compass_api_sdk/models/tokeninfo.py,sha256=XJxb3m5dS8sRBGCpHS128VemtSU4q09EXOEwa
154
154
  compass_api_sdk/models/tokenpriceresponse.py,sha256=L6dly2O1aO-_PifQ346-19qK_9RAQ_tYJufJN_yUbM4,383
155
155
  compass_api_sdk/models/tokentransfererc20params.py,sha256=rE2S8Bo6q3xFz51Vgp4BPyvm27u-Y0f4a2oRT1WUvSA,1500
156
156
  compass_api_sdk/models/tokentransferrequest.py,sha256=-H9OsIcHbdynmrsKrMgMytauHtF2e2uHv6DgHBh83g0,1788
157
- compass_api_sdk/models/txresponse.py,sha256=mNVjhbBSpmw_mkG7uyWldkA6F7g4UMLpKoNrHhhRjgY,590
157
+ compass_api_sdk/models/txresponse.py,sha256=F6e_6eqRd4ou5EiK5BQ4_WpZj0HMjHFemp5jD9Q86_M,818
158
158
  compass_api_sdk/models/uniswap_liquidity_provision_in_rangeop.py,sha256=mkg0Eg50xQCiQ00Nq_Rw-KPZ0iwb56YsQZ05k-loAnw,1245
159
159
  compass_api_sdk/models/uniswap_liquidity_provision_positionsop.py,sha256=-HW4PPi8j1KEypBbuoqLoH89djhW8zDvUTACdklYoqg,1283
160
160
  compass_api_sdk/models/uniswap_pool_priceop.py,sha256=JTBQcsaeJSN_tELQW6iMBztsww84x8ORdJaQmLIRb5c,4115
@@ -192,7 +192,7 @@ compass_api_sdk/models/wrapethparams.py,sha256=eMIOqxDM3hCwMJiJsMdnO6ZsMXg1K-_E3
192
192
  compass_api_sdk/models/wrapethrequest.py,sha256=aJBhcooob-etvReQEjNdC8HOUQ7oUNkOPYr6A4a3BFE,1077
193
193
  compass_api_sdk/morpho.py,sha256=9b96ovx476ZmNGKpWu5ioIIXkS3N7MI3LYYRrtPQb3s,133036
194
194
  compass_api_sdk/py.typed,sha256=zrp19r0G21lr2yRiMC0f8MFkQFGj9wMpSbboePMg8KM,59
195
- compass_api_sdk/sdk.py,sha256=ISOCKopTD8hEDFh1rVgqC-ZBgHPRg71QrK5QxgvXQr0,6251
195
+ compass_api_sdk/sdk.py,sha256=54l6T3APf4UhuJ2gI9yzTnn7JJkMiRxksJsE4eDoJC4,7569
196
196
  compass_api_sdk/sdkconfiguration.py,sha256=K-B67o2xftk7Rh5z59xBL0TcCn_XhX0Yh_JePPegvvU,1764
197
197
  compass_api_sdk/sky.py,sha256=u-1LwuQPGsYGq4MgzhP0KkkKt4RD9ggkHvARaPPZVI0,43495
198
198
  compass_api_sdk/smart_account.py,sha256=qMBOBYPQr_3UUx1t6VAAGBCtKm2s9UHxgh2UnUsJmHA,9356
@@ -202,7 +202,7 @@ compass_api_sdk/types/__init__.py,sha256=RArOwSgeeTIva6h-4ttjXwMUeCkz10nAFBL9D-Q
202
202
  compass_api_sdk/types/basemodel.py,sha256=L79WXvTECbSqaJzs8D3ud_KdIWkU7Cx2wbohDAktE9E,1127
203
203
  compass_api_sdk/uniswap_v3.py,sha256=9-xThTW3SPCm8Ql9m9fMPaivoxXeByWJ_bo3FKK4Exk,108147
204
204
  compass_api_sdk/universal.py,sha256=3pnCI8gjQVmnyBuwAkEFz4eHMbxWJg_O_yGb8dPzjNA,70069
205
- compass_api_sdk/utils/__init__.py,sha256=srwCxQa-o7LVSIbziUI2u9_LMEEvJNBU0I14OEQUOpA,2441
205
+ compass_api_sdk/utils/__init__.py,sha256=811KKdkxMaWDfz2lMohUWqrR4JnIWxqeNQ1lRGQU4DM,5341
206
206
  compass_api_sdk/utils/annotations.py,sha256=aR7mZG34FzgRdew7WZPYEu9QGBerpuKxCF4sek5Z_5Y,1699
207
207
  compass_api_sdk/utils/datetimes.py,sha256=oppAA5e3V35pQov1-FNLKxAaNF1_XWi-bQtyjjql3H8,855
208
208
  compass_api_sdk/utils/enums.py,sha256=REU6ydF8gsVL3xaeGX4sMNyiL3q5P9h29-f6Sa6luAE,2633
@@ -218,6 +218,6 @@ compass_api_sdk/utils/security.py,sha256=ktep3HKwbFs-MLxUYTM8Jd4v-ZBum5_Z0u1PFId
218
218
  compass_api_sdk/utils/serializers.py,sha256=hiHBXM1AY8_N2Z_rvFfNSYwvLBkSQlPGFp8poasdU4s,5986
219
219
  compass_api_sdk/utils/url.py,sha256=BgGPgcTA6MRK4bF8fjP2dUopN3NzEzxWMXPBVg8NQUA,5254
220
220
  compass_api_sdk/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
221
- compass_api_sdk-0.4.4.dist-info/METADATA,sha256=Wkbp7XeE-lY-W9oScikNZXwgUhr0JC-Oj-jBMLsvWmY,25173
222
- compass_api_sdk-0.4.4.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
223
- compass_api_sdk-0.4.4.dist-info/RECORD,,
221
+ compass_api_sdk-0.5.0.dist-info/METADATA,sha256=GK6KLNSV4b_xkJZM8olfNerOW6zs_SRMNesh3w5mjLI,25173
222
+ compass_api_sdk-0.5.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
223
+ compass_api_sdk-0.5.0.dist-info/RECORD,,