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

Files changed (48) hide show
  1. compass_api_sdk/_version.py +2 -2
  2. compass_api_sdk/aave_v3.py +38 -104
  3. compass_api_sdk/aerodrome_slipstream.py +8 -28
  4. compass_api_sdk/models/__init__.py +1 -208
  5. compass_api_sdk/models/aave_avg_rateop.py +44 -16
  6. compass_api_sdk/models/aave_historical_transactionsop.py +45 -20
  7. compass_api_sdk/models/aave_liquidity_changeop.py +44 -18
  8. compass_api_sdk/models/aave_rateop.py +44 -16
  9. compass_api_sdk/models/aave_reserve_overviewop.py +44 -18
  10. compass_api_sdk/models/aave_std_rateop.py +44 -16
  11. compass_api_sdk/models/aave_token_priceop.py +44 -18
  12. compass_api_sdk/models/aave_user_position_per_tokenop.py +44 -20
  13. compass_api_sdk/models/aave_user_position_summaryop.py +44 -20
  14. compass_api_sdk/models/aerodrome_slipstream_liquidity_provision_positionsop.py +45 -20
  15. compass_api_sdk/models/aerodrome_slipstream_pool_priceop.py +45 -20
  16. compass_api_sdk/models/generic_allowanceop.py +45 -18
  17. compass_api_sdk/models/generic_ensop.py +45 -16
  18. compass_api_sdk/models/generic_portfolioop.py +45 -18
  19. compass_api_sdk/models/generic_supported_tokensop.py +44 -20
  20. compass_api_sdk/models/generic_visualize_portfolioop.py +45 -20
  21. compass_api_sdk/models/morpho_market_positionop.py +44 -18
  22. compass_api_sdk/models/morpho_marketop.py +44 -18
  23. compass_api_sdk/models/morpho_marketsop.py +7 -18
  24. compass_api_sdk/models/morpho_user_positionop.py +44 -18
  25. compass_api_sdk/models/morpho_vault_positionop.py +44 -18
  26. compass_api_sdk/models/morpho_vaultop.py +44 -16
  27. compass_api_sdk/models/morpho_vaultsop.py +7 -18
  28. compass_api_sdk/models/multicallauthorizationrequest.py +1 -15
  29. compass_api_sdk/models/pendle_marketop.py +44 -18
  30. compass_api_sdk/models/pendle_positionop.py +44 -18
  31. compass_api_sdk/models/sky_positionop.py +45 -16
  32. compass_api_sdk/models/token_addressop.py +44 -18
  33. compass_api_sdk/models/token_balanceop.py +44 -17
  34. compass_api_sdk/models/uniswap_liquidity_provision_in_rangeop.py +44 -20
  35. compass_api_sdk/models/uniswap_liquidity_provision_positionsop.py +45 -20
  36. compass_api_sdk/models/uniswap_pool_priceop.py +44 -18
  37. compass_api_sdk/models/uniswap_quote_buy_exactlyop.py +44 -19
  38. compass_api_sdk/models/uniswap_quote_sell_exactlyop.py +44 -19
  39. compass_api_sdk/morpho.py +28 -72
  40. compass_api_sdk/pendle.py +9 -17
  41. compass_api_sdk/sky.py +4 -8
  42. compass_api_sdk/token_sdk.py +8 -16
  43. compass_api_sdk/transaction_batching.py +0 -6
  44. compass_api_sdk/uniswap_v3.py +20 -64
  45. compass_api_sdk/universal.py +20 -52
  46. {compass_api_sdk-0.6.0.dist-info → compass_api_sdk-0.6.1.dist-info}/METADATA +2 -2
  47. {compass_api_sdk-0.6.0.dist-info → compass_api_sdk-0.6.1.dist-info}/RECORD +48 -48
  48. {compass_api_sdk-0.6.0.dist-info → compass_api_sdk-0.6.1.dist-info}/WHEEL +0 -0
@@ -1,11 +1,17 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from compass_api_sdk.types import BaseModel
4
+ from compass_api_sdk.types import (
5
+ BaseModel,
6
+ Nullable,
7
+ OptionalNullable,
8
+ UNSET,
9
+ UNSET_SENTINEL,
10
+ )
5
11
  from compass_api_sdk.utils import FieldMetadata, QueryParamMetadata
6
12
  from enum import Enum
7
- from typing import Optional, Union
8
- from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
13
+ from pydantic import model_serializer
14
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
15
 
10
16
 
11
17
  class AaveUserPositionPerTokenChain(str, Enum):
@@ -16,18 +22,6 @@ class AaveUserPositionPerTokenChain(str, Enum):
16
22
  ARBITRUM_MAINNET = "arbitrum:mainnet"
17
23
 
18
24
 
19
- AaveUserPositionPerTokenBlockTypedDict = TypeAliasType(
20
- "AaveUserPositionPerTokenBlockTypedDict", Union[int, str]
21
- )
22
- r"""The block number you want to get this data at."""
23
-
24
-
25
- AaveUserPositionPerTokenBlock = TypeAliasType(
26
- "AaveUserPositionPerTokenBlock", Union[int, str]
27
- )
28
- r"""The block number you want to get this data at."""
29
-
30
-
31
25
  class AaveUserPositionPerTokenToken(str, Enum):
32
26
  r"""A class representing the token.
33
27
 
@@ -84,8 +78,8 @@ class AaveUserPositionPerTokenToken(str, Enum):
84
78
  class AaveUserPositionPerTokenRequestTypedDict(TypedDict):
85
79
  chain: AaveUserPositionPerTokenChain
86
80
  r"""The chain to use."""
87
- block: NotRequired[AaveUserPositionPerTokenBlockTypedDict]
88
- r"""The block number you want to get this data at."""
81
+ block: NotRequired[Nullable[int]]
82
+ r"""Optional block number (defaults to latest)."""
89
83
  user: str
90
84
  r"""The user to fetch the token-specific position of."""
91
85
  token: AaveUserPositionPerTokenToken
@@ -100,10 +94,10 @@ class AaveUserPositionPerTokenRequest(BaseModel):
100
94
  r"""The chain to use."""
101
95
 
102
96
  block: Annotated[
103
- Optional[AaveUserPositionPerTokenBlock],
97
+ OptionalNullable[int],
104
98
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
105
- ] = None
106
- r"""The block number you want to get this data at."""
99
+ ] = UNSET
100
+ r"""Optional block number (defaults to latest)."""
107
101
 
108
102
  user: Annotated[
109
103
  str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
@@ -115,3 +109,33 @@ class AaveUserPositionPerTokenRequest(BaseModel):
115
109
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
116
110
  ] = AaveUserPositionPerTokenToken.USDC
117
111
  r"""The symbol of the asset to fetch the user's position on.."""
112
+
113
+ @model_serializer(mode="wrap")
114
+ def serialize_model(self, handler):
115
+ optional_fields = ["block"]
116
+ nullable_fields = ["block"]
117
+ null_default_fields = []
118
+
119
+ serialized = handler(self)
120
+
121
+ m = {}
122
+
123
+ for n, f in type(self).model_fields.items():
124
+ k = f.alias or n
125
+ val = serialized.get(k)
126
+ serialized.pop(k, None)
127
+
128
+ optional_nullable = k in optional_fields and k in nullable_fields
129
+ is_set = (
130
+ self.__pydantic_fields_set__.intersection({n})
131
+ or k in null_default_fields
132
+ ) # pylint: disable=no-member
133
+
134
+ if val is not None and val != UNSET_SENTINEL:
135
+ m[k] = val
136
+ elif val != UNSET_SENTINEL and (
137
+ not k in optional_fields or (optional_nullable and is_set)
138
+ ):
139
+ m[k] = val
140
+
141
+ return m
@@ -1,11 +1,17 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from compass_api_sdk.types import BaseModel
4
+ from compass_api_sdk.types import (
5
+ BaseModel,
6
+ Nullable,
7
+ OptionalNullable,
8
+ UNSET,
9
+ UNSET_SENTINEL,
10
+ )
5
11
  from compass_api_sdk.utils import FieldMetadata, QueryParamMetadata
6
12
  from enum import Enum
7
- from typing import Optional, Union
8
- from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
13
+ from pydantic import model_serializer
14
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
15
 
10
16
 
11
17
  class AaveUserPositionSummaryChain(str, Enum):
@@ -16,23 +22,11 @@ class AaveUserPositionSummaryChain(str, Enum):
16
22
  ARBITRUM_MAINNET = "arbitrum:mainnet"
17
23
 
18
24
 
19
- AaveUserPositionSummaryBlockTypedDict = TypeAliasType(
20
- "AaveUserPositionSummaryBlockTypedDict", Union[int, str]
21
- )
22
- r"""The block number you want to get this data at."""
23
-
24
-
25
- AaveUserPositionSummaryBlock = TypeAliasType(
26
- "AaveUserPositionSummaryBlock", Union[int, str]
27
- )
28
- r"""The block number you want to get this data at."""
29
-
30
-
31
25
  class AaveUserPositionSummaryRequestTypedDict(TypedDict):
32
26
  chain: AaveUserPositionSummaryChain
33
27
  r"""The chain to use."""
34
- block: NotRequired[AaveUserPositionSummaryBlockTypedDict]
35
- r"""The block number you want to get this data at."""
28
+ block: NotRequired[Nullable[int]]
29
+ r"""Optional block number (defaults to latest)."""
36
30
  user: str
37
31
  r"""The user to get position summary for."""
38
32
 
@@ -45,12 +39,42 @@ class AaveUserPositionSummaryRequest(BaseModel):
45
39
  r"""The chain to use."""
46
40
 
47
41
  block: Annotated[
48
- Optional[AaveUserPositionSummaryBlock],
42
+ OptionalNullable[int],
49
43
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
50
- ] = None
51
- r"""The block number you want to get this data at."""
44
+ ] = UNSET
45
+ r"""Optional block number (defaults to latest)."""
52
46
 
53
47
  user: Annotated[
54
48
  str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
55
49
  ] = "0x29F20a192328eF1aD35e1564aBFf4Be9C5ce5f7B"
56
50
  r"""The user to get position summary for."""
51
+
52
+ @model_serializer(mode="wrap")
53
+ def serialize_model(self, handler):
54
+ optional_fields = ["block"]
55
+ nullable_fields = ["block"]
56
+ null_default_fields = []
57
+
58
+ serialized = handler(self)
59
+
60
+ m = {}
61
+
62
+ for n, f in type(self).model_fields.items():
63
+ k = f.alias or n
64
+ val = serialized.get(k)
65
+ serialized.pop(k, None)
66
+
67
+ optional_nullable = k in optional_fields and k in nullable_fields
68
+ is_set = (
69
+ self.__pydantic_fields_set__.intersection({n})
70
+ or k in null_default_fields
71
+ ) # pylint: disable=no-member
72
+
73
+ if val is not None and val != UNSET_SENTINEL:
74
+ m[k] = val
75
+ elif val != UNSET_SENTINEL and (
76
+ not k in optional_fields or (optional_nullable and is_set)
77
+ ):
78
+ m[k] = val
79
+
80
+ return m
@@ -1,11 +1,18 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from compass_api_sdk.types import BaseModel
4
+ from compass_api_sdk.types import (
5
+ BaseModel,
6
+ Nullable,
7
+ OptionalNullable,
8
+ UNSET,
9
+ UNSET_SENTINEL,
10
+ )
5
11
  from compass_api_sdk.utils import FieldMetadata, QueryParamMetadata
6
12
  from enum import Enum
7
- from typing import Optional, Union
8
- from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
13
+ from pydantic import model_serializer
14
+ from typing import Optional
15
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
16
 
10
17
 
11
18
  class AerodromeSlipstreamLiquidityProvisionPositionsChain(str, Enum):
@@ -16,23 +23,11 @@ class AerodromeSlipstreamLiquidityProvisionPositionsChain(str, Enum):
16
23
  ARBITRUM_MAINNET = "arbitrum:mainnet"
17
24
 
18
25
 
19
- AerodromeSlipstreamLiquidityProvisionPositionsBlockTypedDict = TypeAliasType(
20
- "AerodromeSlipstreamLiquidityProvisionPositionsBlockTypedDict", Union[int, str]
21
- )
22
- r"""The block number you want to get this data at."""
23
-
24
-
25
- AerodromeSlipstreamLiquidityProvisionPositionsBlock = TypeAliasType(
26
- "AerodromeSlipstreamLiquidityProvisionPositionsBlock", Union[int, str]
27
- )
28
- r"""The block number you want to get this data at."""
29
-
30
-
31
26
  class AerodromeSlipstreamLiquidityProvisionPositionsRequestTypedDict(TypedDict):
32
27
  chain: AerodromeSlipstreamLiquidityProvisionPositionsChain
33
28
  r"""The chain to use."""
34
- block: NotRequired[AerodromeSlipstreamLiquidityProvisionPositionsBlockTypedDict]
35
- r"""The block number you want to get this data at."""
29
+ block: NotRequired[Nullable[int]]
30
+ r"""Optional block number (defaults to latest)."""
36
31
  user: NotRequired[str]
37
32
  r"""The user to get positions for."""
38
33
 
@@ -45,13 +40,43 @@ class AerodromeSlipstreamLiquidityProvisionPositionsRequest(BaseModel):
45
40
  r"""The chain to use."""
46
41
 
47
42
  block: Annotated[
48
- Optional[AerodromeSlipstreamLiquidityProvisionPositionsBlock],
43
+ OptionalNullable[int],
49
44
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
50
- ] = None
51
- r"""The block number you want to get this data at."""
45
+ ] = UNSET
46
+ r"""Optional block number (defaults to latest)."""
52
47
 
53
48
  user: Annotated[
54
49
  Optional[str],
55
50
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
56
51
  ] = "0x29F20a192328eF1aD35e1564aBFf4Be9C5ce5f7B"
57
52
  r"""The user to get positions for."""
53
+
54
+ @model_serializer(mode="wrap")
55
+ def serialize_model(self, handler):
56
+ optional_fields = ["block", "user"]
57
+ nullable_fields = ["block"]
58
+ null_default_fields = []
59
+
60
+ serialized = handler(self)
61
+
62
+ m = {}
63
+
64
+ for n, f in type(self).model_fields.items():
65
+ k = f.alias or n
66
+ val = serialized.get(k)
67
+ serialized.pop(k, None)
68
+
69
+ optional_nullable = k in optional_fields and k in nullable_fields
70
+ is_set = (
71
+ self.__pydantic_fields_set__.intersection({n})
72
+ or k in null_default_fields
73
+ ) # pylint: disable=no-member
74
+
75
+ if val is not None and val != UNSET_SENTINEL:
76
+ m[k] = val
77
+ elif val != UNSET_SENTINEL and (
78
+ not k in optional_fields or (optional_nullable and is_set)
79
+ ):
80
+ m[k] = val
81
+
82
+ return m
@@ -1,11 +1,18 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from compass_api_sdk.types import BaseModel
4
+ from compass_api_sdk.types import (
5
+ BaseModel,
6
+ Nullable,
7
+ OptionalNullable,
8
+ UNSET,
9
+ UNSET_SENTINEL,
10
+ )
5
11
  from compass_api_sdk.utils import FieldMetadata, QueryParamMetadata
6
12
  from enum import Enum
7
- from typing import Optional, Union
8
- from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
13
+ from pydantic import model_serializer
14
+ from typing import Optional
15
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
16
 
10
17
 
11
18
  class AerodromeSlipstreamPoolPriceChain(str, Enum):
@@ -16,18 +23,6 @@ class AerodromeSlipstreamPoolPriceChain(str, Enum):
16
23
  ARBITRUM_MAINNET = "arbitrum:mainnet"
17
24
 
18
25
 
19
- AerodromeSlipstreamPoolPriceBlockTypedDict = TypeAliasType(
20
- "AerodromeSlipstreamPoolPriceBlockTypedDict", Union[int, str]
21
- )
22
- r"""The block number you want to get this data at."""
23
-
24
-
25
- AerodromeSlipstreamPoolPriceBlock = TypeAliasType(
26
- "AerodromeSlipstreamPoolPriceBlock", Union[int, str]
27
- )
28
- r"""The block number you want to get this data at."""
29
-
30
-
31
26
  class AerodromeSlipstreamPoolPriceTokenInToken(str, Enum):
32
27
  r"""A class representing the token.
33
28
 
@@ -137,8 +132,8 @@ class AerodromeSlipstreamPoolPriceTokenOutToken(str, Enum):
137
132
  class AerodromeSlipstreamPoolPriceRequestTypedDict(TypedDict):
138
133
  chain: AerodromeSlipstreamPoolPriceChain
139
134
  r"""The chain to use."""
140
- block: NotRequired[AerodromeSlipstreamPoolPriceBlockTypedDict]
141
- r"""The block number you want to get this data at."""
135
+ block: NotRequired[Nullable[int]]
136
+ r"""Optional block number (defaults to latest)."""
142
137
  token_in: AerodromeSlipstreamPoolPriceTokenInToken
143
138
  r"""The symbol of a token in the pool."""
144
139
  token_out: AerodromeSlipstreamPoolPriceTokenOutToken
@@ -155,10 +150,10 @@ class AerodromeSlipstreamPoolPriceRequest(BaseModel):
155
150
  r"""The chain to use."""
156
151
 
157
152
  block: Annotated[
158
- Optional[AerodromeSlipstreamPoolPriceBlock],
153
+ OptionalNullable[int],
159
154
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
160
- ] = None
161
- r"""The block number you want to get this data at."""
155
+ ] = UNSET
156
+ r"""Optional block number (defaults to latest)."""
162
157
 
163
158
  token_in: Annotated[
164
159
  AerodromeSlipstreamPoolPriceTokenInToken,
@@ -177,3 +172,33 @@ class AerodromeSlipstreamPoolPriceRequest(BaseModel):
177
172
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
178
173
  ] = 100
179
174
  r"""The tick spacing of the pool"""
175
+
176
+ @model_serializer(mode="wrap")
177
+ def serialize_model(self, handler):
178
+ optional_fields = ["block", "tick_spacing"]
179
+ nullable_fields = ["block"]
180
+ null_default_fields = []
181
+
182
+ serialized = handler(self)
183
+
184
+ m = {}
185
+
186
+ for n, f in type(self).model_fields.items():
187
+ k = f.alias or n
188
+ val = serialized.get(k)
189
+ serialized.pop(k, None)
190
+
191
+ optional_nullable = k in optional_fields and k in nullable_fields
192
+ is_set = (
193
+ self.__pydantic_fields_set__.intersection({n})
194
+ or k in null_default_fields
195
+ ) # pylint: disable=no-member
196
+
197
+ if val is not None and val != UNSET_SENTINEL:
198
+ m[k] = val
199
+ elif val != UNSET_SENTINEL and (
200
+ not k in optional_fields or (optional_nullable and is_set)
201
+ ):
202
+ m[k] = val
203
+
204
+ return m
@@ -1,11 +1,18 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from compass_api_sdk.types import BaseModel
4
+ from compass_api_sdk.types import (
5
+ BaseModel,
6
+ Nullable,
7
+ OptionalNullable,
8
+ UNSET,
9
+ UNSET_SENTINEL,
10
+ )
5
11
  from compass_api_sdk.utils import FieldMetadata, QueryParamMetadata
6
12
  from enum import Enum
7
- from typing import Optional, Union
8
- from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
13
+ from pydantic import model_serializer
14
+ from typing import Optional
15
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
16
 
10
17
 
11
18
  class GenericAllowanceChain(str, Enum):
@@ -16,16 +23,6 @@ class GenericAllowanceChain(str, Enum):
16
23
  ARBITRUM_MAINNET = "arbitrum:mainnet"
17
24
 
18
25
 
19
- GenericAllowanceBlockTypedDict = TypeAliasType(
20
- "GenericAllowanceBlockTypedDict", Union[int, str]
21
- )
22
- r"""The block number you want to get this data at."""
23
-
24
-
25
- GenericAllowanceBlock = TypeAliasType("GenericAllowanceBlock", Union[int, str])
26
- r"""The block number you want to get this data at."""
27
-
28
-
29
26
  class GenericAllowanceToken(str, Enum):
30
27
  r"""A class representing the token.
31
28
 
@@ -100,8 +97,8 @@ class GenericAllowanceContractName(str, Enum):
100
97
  class GenericAllowanceRequestTypedDict(TypedDict):
101
98
  chain: GenericAllowanceChain
102
99
  r"""The chain to use."""
103
- block: NotRequired[GenericAllowanceBlockTypedDict]
104
- r"""The block number you want to get this data at."""
100
+ block: NotRequired[Nullable[int]]
101
+ r"""Optional block number (defaults to latest)."""
105
102
  user: NotRequired[str]
106
103
  r"""The user to get the ERC20 allowance of."""
107
104
  token: GenericAllowanceToken
@@ -118,10 +115,10 @@ class GenericAllowanceRequest(BaseModel):
118
115
  r"""The chain to use."""
119
116
 
120
117
  block: Annotated[
121
- Optional[GenericAllowanceBlock],
118
+ OptionalNullable[int],
122
119
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
123
- ] = None
124
- r"""The block number you want to get this data at."""
120
+ ] = UNSET
121
+ r"""Optional block number (defaults to latest)."""
125
122
 
126
123
  user: Annotated[
127
124
  Optional[str],
@@ -140,3 +137,33 @@ class GenericAllowanceRequest(BaseModel):
140
137
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
141
138
  ] = GenericAllowanceContractName.AAVE_V3_POOL
142
139
  r"""The name of the contract to check allowance for."""
140
+
141
+ @model_serializer(mode="wrap")
142
+ def serialize_model(self, handler):
143
+ optional_fields = ["block", "user"]
144
+ nullable_fields = ["block"]
145
+ null_default_fields = []
146
+
147
+ serialized = handler(self)
148
+
149
+ m = {}
150
+
151
+ for n, f in type(self).model_fields.items():
152
+ k = f.alias or n
153
+ val = serialized.get(k)
154
+ serialized.pop(k, None)
155
+
156
+ optional_nullable = k in optional_fields and k in nullable_fields
157
+ is_set = (
158
+ self.__pydantic_fields_set__.intersection({n})
159
+ or k in null_default_fields
160
+ ) # pylint: disable=no-member
161
+
162
+ if val is not None and val != UNSET_SENTINEL:
163
+ m[k] = val
164
+ elif val != UNSET_SENTINEL and (
165
+ not k in optional_fields or (optional_nullable and is_set)
166
+ ):
167
+ m[k] = val
168
+
169
+ return m
@@ -1,11 +1,18 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from compass_api_sdk.types import BaseModel
4
+ from compass_api_sdk.types import (
5
+ BaseModel,
6
+ Nullable,
7
+ OptionalNullable,
8
+ UNSET,
9
+ UNSET_SENTINEL,
10
+ )
5
11
  from compass_api_sdk.utils import FieldMetadata, QueryParamMetadata
6
12
  from enum import Enum
7
- from typing import Optional, Union
8
- from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
13
+ from pydantic import model_serializer
14
+ from typing import Optional
15
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
16
 
10
17
 
11
18
  class GenericEnsChain(str, Enum):
@@ -16,19 +23,11 @@ class GenericEnsChain(str, Enum):
16
23
  ARBITRUM_MAINNET = "arbitrum:mainnet"
17
24
 
18
25
 
19
- GenericEnsBlockTypedDict = TypeAliasType("GenericEnsBlockTypedDict", Union[int, str])
20
- r"""The block number you want to get this data at."""
21
-
22
-
23
- GenericEnsBlock = TypeAliasType("GenericEnsBlock", Union[int, str])
24
- r"""The block number you want to get this data at."""
25
-
26
-
27
26
  class GenericEnsRequestTypedDict(TypedDict):
28
27
  chain: GenericEnsChain
29
28
  r"""The chain to use."""
30
- block: NotRequired[GenericEnsBlockTypedDict]
31
- r"""The block number you want to get this data at."""
29
+ block: NotRequired[Nullable[int]]
30
+ r"""Optional block number (defaults to latest)."""
32
31
  ens_name: NotRequired[str]
33
32
  r"""The ENS name to resolve."""
34
33
 
@@ -41,13 +40,43 @@ class GenericEnsRequest(BaseModel):
41
40
  r"""The chain to use."""
42
41
 
43
42
  block: Annotated[
44
- Optional[GenericEnsBlock],
43
+ OptionalNullable[int],
45
44
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
46
- ] = None
47
- r"""The block number you want to get this data at."""
45
+ ] = UNSET
46
+ r"""Optional block number (defaults to latest)."""
48
47
 
49
48
  ens_name: Annotated[
50
49
  Optional[str],
51
50
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
52
51
  ] = "vitalik.eth"
53
52
  r"""The ENS name to resolve."""
53
+
54
+ @model_serializer(mode="wrap")
55
+ def serialize_model(self, handler):
56
+ optional_fields = ["block", "ens_name"]
57
+ nullable_fields = ["block"]
58
+ null_default_fields = []
59
+
60
+ serialized = handler(self)
61
+
62
+ m = {}
63
+
64
+ for n, f in type(self).model_fields.items():
65
+ k = f.alias or n
66
+ val = serialized.get(k)
67
+ serialized.pop(k, None)
68
+
69
+ optional_nullable = k in optional_fields and k in nullable_fields
70
+ is_set = (
71
+ self.__pydantic_fields_set__.intersection({n})
72
+ or k in null_default_fields
73
+ ) # pylint: disable=no-member
74
+
75
+ if val is not None and val != UNSET_SENTINEL:
76
+ m[k] = val
77
+ elif val != UNSET_SENTINEL and (
78
+ not k in optional_fields or (optional_nullable and is_set)
79
+ ):
80
+ m[k] = val
81
+
82
+ return m
@@ -1,11 +1,18 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from compass_api_sdk.types import BaseModel
4
+ from compass_api_sdk.types import (
5
+ BaseModel,
6
+ Nullable,
7
+ OptionalNullable,
8
+ UNSET,
9
+ UNSET_SENTINEL,
10
+ )
5
11
  from compass_api_sdk.utils import FieldMetadata, QueryParamMetadata
6
12
  from enum import Enum
7
- from typing import Optional, Union
8
- from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
13
+ from pydantic import model_serializer
14
+ from typing import Optional
15
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
16
 
10
17
 
11
18
  class GenericPortfolioChain(str, Enum):
@@ -16,21 +23,11 @@ class GenericPortfolioChain(str, Enum):
16
23
  ARBITRUM_MAINNET = "arbitrum:mainnet"
17
24
 
18
25
 
19
- GenericPortfolioBlockTypedDict = TypeAliasType(
20
- "GenericPortfolioBlockTypedDict", Union[int, str]
21
- )
22
- r"""The block number you want to get this data at."""
23
-
24
-
25
- GenericPortfolioBlock = TypeAliasType("GenericPortfolioBlock", Union[int, str])
26
- r"""The block number you want to get this data at."""
27
-
28
-
29
26
  class GenericPortfolioRequestTypedDict(TypedDict):
30
27
  chain: GenericPortfolioChain
31
28
  r"""The chain to use."""
32
- block: NotRequired[GenericPortfolioBlockTypedDict]
33
- r"""The block number you want to get this data at."""
29
+ block: NotRequired[Nullable[int]]
30
+ r"""Optional block number (defaults to latest)."""
34
31
  user: NotRequired[str]
35
32
  r"""The user to get portfolio for."""
36
33
 
@@ -43,13 +40,43 @@ class GenericPortfolioRequest(BaseModel):
43
40
  r"""The chain to use."""
44
41
 
45
42
  block: Annotated[
46
- Optional[GenericPortfolioBlock],
43
+ OptionalNullable[int],
47
44
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
48
- ] = None
49
- r"""The block number you want to get this data at."""
45
+ ] = UNSET
46
+ r"""Optional block number (defaults to latest)."""
50
47
 
51
48
  user: Annotated[
52
49
  Optional[str],
53
50
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
54
51
  ] = "0x29F20a192328eF1aD35e1564aBFf4Be9C5ce5f7B"
55
52
  r"""The user to get portfolio for."""
53
+
54
+ @model_serializer(mode="wrap")
55
+ def serialize_model(self, handler):
56
+ optional_fields = ["block", "user"]
57
+ nullable_fields = ["block"]
58
+ null_default_fields = []
59
+
60
+ serialized = handler(self)
61
+
62
+ m = {}
63
+
64
+ for n, f in type(self).model_fields.items():
65
+ k = f.alias or n
66
+ val = serialized.get(k)
67
+ serialized.pop(k, None)
68
+
69
+ optional_nullable = k in optional_fields and k in nullable_fields
70
+ is_set = (
71
+ self.__pydantic_fields_set__.intersection({n})
72
+ or k in null_default_fields
73
+ ) # pylint: disable=no-member
74
+
75
+ if val is not None and val != UNSET_SENTINEL:
76
+ m[k] = val
77
+ elif val != UNSET_SENTINEL and (
78
+ not k in optional_fields or (optional_nullable and is_set)
79
+ ):
80
+ m[k] = val
81
+
82
+ return m