architect-py 3.2.2__py3-none-any.whl → 5.0.0b2__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.
Files changed (205) hide show
  1. architect_py/__init__.py +15 -2
  2. architect_py/async_client.py +1060 -643
  3. architect_py/client.py +25 -26
  4. architect_py/client_interface.py +63 -0
  5. architect_py/common_types/__init__.py +6 -0
  6. architect_py/common_types/order_dir.py +91 -0
  7. architect_py/common_types/scalars.py +25 -0
  8. architect_py/common_types/tradable_product.py +59 -0
  9. architect_py/graphql_client/__init__.py +2 -0
  10. architect_py/graphql_client/client.py +3 -6
  11. architect_py/graphql_client/enums.py +5 -0
  12. architect_py/graphql_client/fragments.py +3 -6
  13. architect_py/graphql_client/get_fills_query.py +2 -1
  14. architect_py/graphql_client/search_symbols_query.py +2 -1
  15. architect_py/graphql_client/subscribe_orderflow.py +2 -1
  16. architect_py/graphql_client/subscribe_trades.py +2 -1
  17. architect_py/grpc/__init__.py +143 -0
  18. architect_py/grpc/client.py +94 -0
  19. architect_py/{grpc_client → grpc/models}/Accounts/AccountsRequest.py +6 -3
  20. architect_py/{grpc_client → grpc/models}/Accounts/AccountsResponse.py +1 -1
  21. architect_py/{grpc_client → grpc/models}/Accounts/__init__.py +1 -1
  22. architect_py/grpc/models/Algo/AlgoOrder.py +114 -0
  23. architect_py/grpc/models/Algo/AlgoOrderRequest.py +46 -0
  24. architect_py/grpc/models/Algo/AlgoOrdersRequest.py +72 -0
  25. architect_py/grpc/models/Algo/AlgoOrdersResponse.py +27 -0
  26. architect_py/grpc/models/Algo/CreateAlgoOrderRequest.py +56 -0
  27. architect_py/grpc/models/Algo/PauseAlgoRequest.py +42 -0
  28. architect_py/grpc/models/Algo/PauseAlgoResponse.py +20 -0
  29. architect_py/grpc/models/Algo/StartAlgoRequest.py +42 -0
  30. architect_py/grpc/models/Algo/StartAlgoResponse.py +20 -0
  31. architect_py/grpc/models/Algo/StopAlgoRequest.py +42 -0
  32. architect_py/grpc/models/Algo/StopAlgoResponse.py +20 -0
  33. architect_py/{grpc_client → grpc/models}/Algo/__init__.py +1 -1
  34. architect_py/grpc/models/Auth/CreateJwtRequest.py +47 -0
  35. architect_py/grpc/models/Auth/CreateJwtResponse.py +23 -0
  36. architect_py/{grpc_client/Cpty → grpc/models/Auth}/__init__.py +1 -1
  37. architect_py/grpc/models/Boss/DepositsRequest.py +40 -0
  38. architect_py/grpc/models/Boss/DepositsResponse.py +27 -0
  39. architect_py/grpc/models/Boss/RqdAccountStatisticsRequest.py +42 -0
  40. architect_py/grpc/models/Boss/RqdAccountStatisticsResponse.py +25 -0
  41. architect_py/grpc/models/Boss/StatementUrlRequest.py +40 -0
  42. architect_py/grpc/models/Boss/StatementUrlResponse.py +23 -0
  43. architect_py/grpc/models/Boss/StatementsRequest.py +40 -0
  44. architect_py/grpc/models/Boss/StatementsResponse.py +27 -0
  45. architect_py/grpc/models/Boss/WithdrawalsRequest.py +40 -0
  46. architect_py/grpc/models/Boss/WithdrawalsResponse.py +27 -0
  47. architect_py/{grpc_client/Folio → grpc/models/Boss}/__init__.py +1 -1
  48. architect_py/grpc/models/Core/ConfigRequest.py +37 -0
  49. architect_py/grpc/models/Core/ConfigResponse.py +25 -0
  50. architect_py/grpc/models/Core/__init__.py +2 -0
  51. architect_py/{grpc_client → grpc/models}/Cpty/CptyRequest.py +2 -2
  52. architect_py/{grpc_client → grpc/models}/Cpty/CptyResponse.py +3 -3
  53. architect_py/{grpc_client → grpc/models}/Cpty/CptyStatus.py +1 -1
  54. architect_py/{grpc_client → grpc/models}/Cpty/CptyStatusRequest.py +2 -2
  55. architect_py/{grpc_client → grpc/models}/Cpty/CptysRequest.py +2 -2
  56. architect_py/{grpc_client → grpc/models}/Cpty/CptysResponse.py +1 -1
  57. architect_py/grpc/models/Cpty/__init__.py +2 -0
  58. architect_py/{grpc_client → grpc/models}/Folio/AccountHistoryRequest.py +2 -2
  59. architect_py/{grpc_client → grpc/models}/Folio/AccountHistoryResponse.py +1 -1
  60. architect_py/{grpc_client → grpc/models}/Folio/AccountSummariesRequest.py +2 -2
  61. architect_py/{grpc_client → grpc/models}/Folio/AccountSummariesResponse.py +1 -1
  62. architect_py/{grpc_client → grpc/models}/Folio/AccountSummary.py +1 -1
  63. architect_py/{grpc_client → grpc/models}/Folio/AccountSummaryRequest.py +2 -2
  64. architect_py/{grpc_client → grpc/models}/Folio/HistoricalFillsRequest.py +7 -4
  65. architect_py/{grpc_client → grpc/models}/Folio/HistoricalFillsResponse.py +1 -1
  66. architect_py/{grpc_client → grpc/models}/Folio/HistoricalOrdersRequest.py +3 -3
  67. architect_py/{grpc_client → grpc/models}/Folio/HistoricalOrdersResponse.py +1 -1
  68. architect_py/grpc/models/Folio/__init__.py +2 -0
  69. architect_py/{grpc_client → grpc/models}/Health/HealthCheckRequest.py +2 -2
  70. architect_py/{grpc_client → grpc/models}/Health/HealthCheckResponse.py +1 -1
  71. architect_py/grpc/models/Health/__init__.py +2 -0
  72. architect_py/{grpc_client → grpc/models}/Marketdata/Candle.py +1 -1
  73. architect_py/{grpc_client → grpc/models}/Marketdata/HistoricalCandlesRequest.py +11 -8
  74. architect_py/{grpc_client → grpc/models}/Marketdata/HistoricalCandlesResponse.py +1 -1
  75. architect_py/{grpc_client → grpc/models}/Marketdata/L1BookSnapshot.py +52 -5
  76. architect_py/{grpc_client → grpc/models}/Marketdata/L1BookSnapshotRequest.py +8 -3
  77. architect_py/{grpc_client → grpc/models}/Marketdata/L1BookSnapshotsRequest.py +6 -3
  78. architect_py/{grpc_client → grpc/models}/Marketdata/L2BookSnapshot.py +1 -1
  79. architect_py/{grpc_client → grpc/models}/Marketdata/L2BookSnapshotRequest.py +2 -2
  80. architect_py/{grpc_client → grpc/models}/Marketdata/Liquidation.py +2 -2
  81. architect_py/{grpc_client → grpc/models}/Marketdata/MarketStatus.py +1 -1
  82. architect_py/{grpc_client → grpc/models}/Marketdata/MarketStatusRequest.py +2 -2
  83. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeCandlesRequest.py +2 -2
  84. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeCurrentCandlesRequest.py +3 -4
  85. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeL1BookSnapshotsRequest.py +6 -3
  86. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeL2BookUpdatesRequest.py +2 -2
  87. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeLiquidationsRequest.py +2 -2
  88. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeManyCandlesRequest.py +2 -2
  89. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeTickersRequest.py +2 -2
  90. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeTradesRequest.py +2 -2
  91. architect_py/{grpc_client → grpc/models}/Marketdata/Ticker.py +1 -1
  92. architect_py/{grpc_client → grpc/models}/Marketdata/TickerRequest.py +2 -2
  93. architect_py/{grpc_client → grpc/models}/Marketdata/TickersRequest.py +2 -2
  94. architect_py/{grpc_client → grpc/models}/Marketdata/TickersResponse.py +1 -1
  95. architect_py/{grpc_client → grpc/models}/Marketdata/Trade.py +2 -2
  96. architect_py/grpc/models/Marketdata/__init__.py +2 -0
  97. architect_py/grpc/models/Oms/Cancel.py +90 -0
  98. architect_py/{grpc_client → grpc/models}/Oms/CancelAllOrdersRequest.py +2 -2
  99. architect_py/{grpc_client → grpc/models}/Oms/CancelAllOrdersResponse.py +1 -1
  100. architect_py/{grpc_client → grpc/models}/Oms/CancelOrderRequest.py +2 -2
  101. architect_py/{grpc_client → grpc/models}/Oms/OpenOrdersRequest.py +2 -2
  102. architect_py/{grpc_client → grpc/models}/Oms/OpenOrdersResponse.py +1 -1
  103. architect_py/{grpc_client → grpc/models}/Oms/Order.py +6 -13
  104. architect_py/{grpc_client → grpc/models}/Oms/PendingCancelsRequest.py +2 -2
  105. architect_py/{grpc_client → grpc/models}/Oms/PendingCancelsResponse.py +1 -1
  106. architect_py/{grpc_client → grpc/models}/Oms/PlaceOrderRequest.py +16 -23
  107. architect_py/grpc/models/Oms/__init__.py +2 -0
  108. architect_py/grpc/models/OptionsMarketdata/OptionsChain.py +30 -0
  109. architect_py/grpc/models/OptionsMarketdata/OptionsChainGreeks.py +30 -0
  110. architect_py/grpc/models/OptionsMarketdata/OptionsChainGreeksRequest.py +47 -0
  111. architect_py/grpc/models/OptionsMarketdata/OptionsChainRequest.py +45 -0
  112. architect_py/grpc/models/OptionsMarketdata/OptionsExpirations.py +29 -0
  113. architect_py/grpc/models/OptionsMarketdata/OptionsExpirationsRequest.py +42 -0
  114. architect_py/grpc/models/OptionsMarketdata/__init__.py +2 -0
  115. architect_py/{grpc_client → grpc/models}/Orderflow/DropcopyRequest.py +2 -2
  116. architect_py/{grpc_client → grpc/models}/Orderflow/OrderflowRequest.py +1 -1
  117. architect_py/{grpc_client → grpc/models}/Orderflow/SubscribeOrderflowRequest.py +2 -2
  118. architect_py/grpc/models/Orderflow/__init__.py +2 -0
  119. architect_py/grpc/models/Symbology/DownloadProductCatalogRequest.py +42 -0
  120. architect_py/grpc/models/Symbology/DownloadProductCatalogResponse.py +27 -0
  121. architect_py/grpc/models/Symbology/ExecutionInfoRequest.py +47 -0
  122. architect_py/grpc/models/Symbology/ExecutionInfoResponse.py +27 -0
  123. architect_py/{grpc_client → grpc/models}/Symbology/PruneExpiredSymbolsRequest.py +2 -2
  124. architect_py/{grpc_client → grpc/models}/Symbology/PruneExpiredSymbolsResponse.py +1 -1
  125. architect_py/{grpc_client → grpc/models}/Symbology/SubscribeSymbology.py +1 -1
  126. architect_py/{grpc_client → grpc/models}/Symbology/SymbologyRequest.py +2 -2
  127. architect_py/{grpc_client → grpc/models}/Symbology/SymbologySnapshot.py +7 -2
  128. architect_py/{grpc_client → grpc/models}/Symbology/SymbologyUpdate.py +9 -2
  129. architect_py/{grpc_client → grpc/models}/Symbology/SymbolsRequest.py +2 -2
  130. architect_py/{grpc_client → grpc/models}/Symbology/SymbolsResponse.py +1 -1
  131. architect_py/grpc/models/Symbology/UploadProductCatalogRequest.py +49 -0
  132. architect_py/grpc/models/Symbology/UploadProductCatalogResponse.py +20 -0
  133. architect_py/{grpc_client → grpc/models}/Symbology/UploadSymbologyRequest.py +2 -2
  134. architect_py/{grpc_client → grpc/models}/Symbology/UploadSymbologyResponse.py +1 -1
  135. architect_py/grpc/models/Symbology/__init__.py +2 -0
  136. architect_py/grpc/models/__init__.py +2 -0
  137. architect_py/{grpc_client → grpc/models}/definitions.py +690 -841
  138. architect_py/grpc/resolve_endpoint.py +70 -0
  139. architect_py/{grpc_client/grpc_server.py → grpc/server.py} +9 -6
  140. architect_py/grpc/utils.py +32 -0
  141. architect_py/internal_utils/__init__.py +0 -0
  142. architect_py/internal_utils/no_pandas.py +3 -0
  143. architect_py/tests/conftest.py +91 -87
  144. architect_py/tests/test_book_building.py +49 -50
  145. architect_py/tests/test_marketdata.py +168 -0
  146. architect_py/tests/test_order_entry.py +37 -0
  147. architect_py/tests/test_orderflow.py +41 -0
  148. architect_py/tests/test_portfolio_management.py +23 -0
  149. architect_py/tests/test_rounding.py +28 -28
  150. architect_py/tests/test_symbology.py +37 -30
  151. architect_py/utils/nearest_tick.py +2 -5
  152. architect_py/utils/nearest_tick_2.py +1 -2
  153. architect_py/utils/orderbook.py +35 -0
  154. architect_py/utils/pandas.py +44 -0
  155. architect_py/utils/price_bands.py +0 -3
  156. architect_py/utils/symbol_parsing.py +29 -0
  157. architect_py-5.0.0b2.dist-info/METADATA +123 -0
  158. architect_py-5.0.0b2.dist-info/RECORD +214 -0
  159. {architect_py-3.2.2.dist-info → architect_py-5.0.0b2.dist-info}/WHEEL +2 -1
  160. architect_py-5.0.0b2.dist-info/top_level.txt +4 -0
  161. examples/__init__.py +0 -0
  162. examples/book_subscription.py +52 -0
  163. examples/candles.py +30 -0
  164. examples/common.py +116 -0
  165. examples/external_cpty.py +77 -0
  166. examples/funding_rate_mean_reversion_algo.py +186 -0
  167. examples/order_sending.py +91 -0
  168. examples/stream_l1_marketdata.py +25 -0
  169. examples/stream_l2_marketdata.py +38 -0
  170. examples/trades.py +21 -0
  171. examples/tutorial_async.py +86 -0
  172. examples/tutorial_sync.py +95 -0
  173. scripts/generate_functions_md.py +166 -0
  174. scripts/generate_sync_interface.py +226 -0
  175. scripts/postprocess_grpc.py +604 -0
  176. scripts/preprocess_grpc_schema.py +708 -0
  177. templates/exceptions.py +83 -0
  178. templates/juniper_base_client.py +371 -0
  179. architect_py/client_protocol.py +0 -53
  180. architect_py/grpc_client/Algo/AlgoOrderForTwapAlgo.py +0 -61
  181. architect_py/grpc_client/Algo/CreateAlgoOrderRequestForTwapAlgo.py +0 -59
  182. architect_py/grpc_client/Algo/ModifyAlgoOrderRequestForTwapAlgo.py +0 -45
  183. architect_py/grpc_client/Health/__init__.py +0 -2
  184. architect_py/grpc_client/Marketdata/__init__.py +0 -2
  185. architect_py/grpc_client/Oms/Cancel.py +0 -42
  186. architect_py/grpc_client/Oms/__init__.py +0 -2
  187. architect_py/grpc_client/Orderflow/__init__.py +0 -2
  188. architect_py/grpc_client/Symbology/__init__.py +0 -2
  189. architect_py/grpc_client/__init__.py +0 -2
  190. architect_py/grpc_client/grpc_client.py +0 -413
  191. architect_py/scalars.py +0 -172
  192. architect_py/tests/test_accounts.py +0 -31
  193. architect_py/tests/test_client.py +0 -29
  194. architect_py/tests/test_grpc_client.py +0 -30
  195. architect_py/tests/test_order_sending.py +0 -65
  196. architect_py/tests/test_snapshots.py +0 -52
  197. architect_py/tests/test_subscriptions.py +0 -126
  198. architect_py-3.2.2.dist-info/METADATA +0 -191
  199. architect_py-3.2.2.dist-info/RECORD +0 -148
  200. /architect_py/{grpc_client → grpc/models}/Marketdata/ArrayOfL1BookSnapshot.py +0 -0
  201. /architect_py/{grpc_client → grpc/models}/Marketdata/L2BookUpdate.py +0 -0
  202. /architect_py/{grpc_client → grpc/models}/Marketdata/TickerUpdate.py +0 -0
  203. /architect_py/{grpc_client → grpc/models}/Orderflow/Dropcopy.py +0 -0
  204. /architect_py/{grpc_client → grpc/models}/Orderflow/Orderflow.py +0 -0
  205. {architect_py-3.2.2.dist-info → architect_py-5.0.0b2.dist-info/licenses}/LICENSE +0 -0
@@ -2,7 +2,7 @@
2
2
  # filename: definitions.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.scalars import OrderDir
5
+ from architect_py.common_types import OrderDir
6
6
  from datetime import datetime, timezone
7
7
 
8
8
  from datetime import date, datetime, time
@@ -12,6 +12,8 @@ from typing import Annotated, Any, Dict, List, Literal, Optional, Union
12
12
 
13
13
  from msgspec import Meta, Struct
14
14
 
15
+ from .Marketdata.Ticker import Ticker
16
+
15
17
  Model = Any
16
18
 
17
19
 
@@ -49,7 +51,7 @@ class AccountPosition(Struct, omit_defaults=True):
49
51
  Unrealized PNL of the position, if known.
50
52
  """
51
53
 
52
- # below is a constructor that takes all field titles as arguments for convenience
54
+ # Constructor that takes all field titles as arguments for convenience
53
55
  @classmethod
54
56
  def new(
55
57
  cls,
@@ -131,7 +133,7 @@ class AccountStatistics(Struct, omit_defaults=True):
131
133
  Yesterday total account equity.
132
134
  """
133
135
 
134
- # below is a constructor that takes all field titles as arguments for convenience
136
+ # Constructor that takes all field titles as arguments for convenience
135
137
  @classmethod
136
138
  def new(
137
139
  cls,
@@ -159,32 +161,33 @@ class AccountStatistics(Struct, omit_defaults=True):
159
161
  return f"AccountStatistics(cash_excess={self.cash_excess},equity={self.equity},position_margin={self.position_margin},purchasing_power={self.purchasing_power},realized_pnl={self.realized_pnl},total_margin={self.total_margin},unrealized_pnl={self.unrealized_pnl},yesterday_equity={self.yesterday_equity})"
160
162
 
161
163
 
162
- class AlgoState(str, Enum):
163
- Pending = "Pending"
164
- Running = "Running"
165
- Stopped = "Stopped"
164
+ class AlgoOrderStatus(int, Enum):
165
+ Working = 1
166
+ Rejected = 2
167
+ Paused = 63
168
+ Stopped = 127
166
169
 
167
170
 
168
- class CancelStatus(str, Enum):
169
- Pending = "Pending"
170
- Acked = "Acked"
171
- Rejected = "Rejected"
172
- Out = "Out"
171
+ class CancelStatus(int, Enum):
172
+ Pending = 0
173
+ Acked = 1
174
+ Rejected = 2
175
+ Out = 127
173
176
 
174
177
 
175
- class CandleWidth(str, Enum):
176
- OneSecond = "OneSecond"
177
- FiveSecond = "FiveSecond"
178
- OneMinute = "OneMinute"
179
- FifteenMinute = "FifteenMinute"
180
- OneHour = "OneHour"
181
- OneDay = "OneDay"
178
+ class CandleWidth(int, Enum):
179
+ OneSecond = 1
180
+ FiveSecond = 5
181
+ OneMinute = 60
182
+ FifteenMinute = 900
183
+ OneHour = 3600
184
+ OneDay = 86400
182
185
 
183
186
 
184
187
  class CptyLogoutRequest(Struct, omit_defaults=True):
185
188
  pass
186
189
 
187
- # below is a constructor that takes all field titles as arguments for convenience
190
+ # Constructor that takes all field titles as arguments for convenience
188
191
  @classmethod
189
192
  def new(
190
193
  cls,
@@ -195,6 +198,35 @@ class CptyLogoutRequest(Struct, omit_defaults=True):
195
198
  return f"CptyLogoutRequest()"
196
199
 
197
200
 
201
+ DateTimeOrUtc = datetime
202
+
203
+
204
+ class Deposit(Struct, omit_defaults=True):
205
+ account: str
206
+ amount: Decimal
207
+ description: str
208
+ timestamp: datetime
209
+
210
+ # Constructor that takes all field titles as arguments for convenience
211
+ @classmethod
212
+ def new(
213
+ cls,
214
+ account: str,
215
+ amount: Decimal,
216
+ description: str,
217
+ timestamp: datetime,
218
+ ):
219
+ return cls(
220
+ account,
221
+ amount,
222
+ description,
223
+ timestamp,
224
+ )
225
+
226
+ def __str__(self) -> str:
227
+ return f"Deposit(account={self.account},amount={self.amount},description={self.description},timestamp={self.timestamp})"
228
+
229
+
198
230
  class HealthMetric(Struct, omit_defaults=True):
199
231
  timestamp: int
200
232
  value: float
@@ -203,7 +235,7 @@ class HealthMetric(Struct, omit_defaults=True):
203
235
  should_be_less_than: Optional[float] = None
204
236
  should_be_less_than_or_equal_to: Optional[float] = None
205
237
 
206
- # below is a constructor that takes all field titles as arguments for convenience
238
+ # Constructor that takes all field titles as arguments for convenience
207
239
  @classmethod
208
240
  def new(
209
241
  cls,
@@ -270,7 +302,7 @@ class L2BookDiff(Struct, omit_defaults=True):
270
302
  tn: Annotated[int, Meta(ge=0, title="timestamp_ns")]
271
303
  ts: Annotated[int, Meta(title="timestamp")]
272
304
 
273
- # below is a constructor that takes all field titles as arguments for convenience
305
+ # Constructor that takes all field titles as arguments for convenience
274
306
  @classmethod
275
307
  def new(
276
308
  cls,
@@ -350,34 +382,15 @@ class L2BookDiff(Struct, omit_defaults=True):
350
382
  return datetime.fromtimestamp(self.ts)
351
383
 
352
384
 
353
- class OrderId(Struct, omit_defaults=True):
354
- """
355
- System-unique, persistent order identifiers
356
- """
357
-
358
- seqid: str
359
- seqno: Annotated[int, Meta(ge=0)]
360
-
361
- # below is a constructor that takes all field titles as arguments for convenience
362
- @classmethod
363
- def new(
364
- cls,
365
- seqid: str,
366
- seqno: int,
367
- ):
368
- return cls(
369
- seqid,
370
- seqno,
371
- )
372
-
373
- def __str__(self) -> str:
374
- return f"OrderId(seqid={self.seqid},seqno={self.seqno})"
385
+ OrderId = Annotated[
386
+ str, Meta(description="System-unique, persistent order identifiers")
387
+ ]
375
388
 
376
389
 
377
390
  class OrderOut(Struct, omit_defaults=True):
378
391
  id: OrderId
379
392
 
380
- # below is a constructor that takes all field titles as arguments for convenience
393
+ # Constructor that takes all field titles as arguments for convenience
381
394
  @classmethod
382
395
  def new(
383
396
  cls,
@@ -405,20 +418,20 @@ class OrderRejectReason(str, Enum):
405
418
  Unknown = "Unknown"
406
419
 
407
420
 
408
- class OrderSource(str, Enum):
409
- API = "API"
410
- GUI = "GUI"
411
- Algo = "Algo"
412
- Reconciled = "Reconciled"
413
- CLI = "CLI"
414
- Telegram = "Telegram"
415
- Other = "Other"
421
+ class OrderSource(int, Enum):
422
+ API = 0
423
+ GUI = 1
424
+ Algo = 2
425
+ Reconciled = 3
426
+ CLI = 4
427
+ Telegram = 5
428
+ Other = 255
416
429
 
417
430
 
418
431
  class OrderStale(Struct, omit_defaults=True):
419
432
  id: OrderId
420
433
 
421
- # below is a constructor that takes all field titles as arguments for convenience
434
+ # Constructor that takes all field titles as arguments for convenience
422
435
  @classmethod
423
436
  def new(
424
437
  cls,
@@ -432,16 +445,266 @@ class OrderStale(Struct, omit_defaults=True):
432
445
  return f"OrderStale(id={self.id})"
433
446
 
434
447
 
435
- class OrderStatus(str, Enum):
436
- Pending = "Pending"
437
- Open = "Open"
438
- Rejected = "Rejected"
439
- Out = "Out"
440
- Canceling = "Canceling"
441
- Canceled = "Canceled"
442
- ReconciledOut = "ReconciledOut"
443
- Stale = "Stale"
444
- Unknown = "Unknown"
448
+ class OrderStatus(int, Enum):
449
+ Pending = 0
450
+ Open = 1
451
+ Rejected = 2
452
+ Out = 127
453
+ Canceling = 128
454
+ Canceled = 129
455
+ ReconciledOut = 130
456
+ Stale = 254
457
+ Unknown = 255
458
+
459
+
460
+ class OrderType(str, Enum):
461
+ LIMIT = "LIMIT"
462
+ STOP_LOSS_LIMIT = "STOP_LOSS_LIMIT"
463
+ TAKE_PROFIT_LIMIT = "TAKE_PROFIT_LIMIT"
464
+
465
+
466
+ class ProductCatalogInfo(Struct, omit_defaults=True):
467
+ """
468
+ Loosely normalized information about exchange products; used to seed symbology loaders and populate extended product info;
469
+
470
+ Symbology loaders will use catalog fields to augment and/or cross-check any other load source.
471
+ """
472
+
473
+ exchange: str
474
+ exchange_product: Annotated[str, Meta(description="Could be anything really")]
475
+ """
476
+ Could be anything really
477
+ """
478
+ category: Optional[str] = None
479
+ cqg_contract_symbol: Optional[str] = None
480
+ info_url: Optional[
481
+ Annotated[Optional[str], Meta(description="URL to more product info")]
482
+ ] = None
483
+ """
484
+ URL to more product info
485
+ """
486
+ long_description: Optional[str] = None
487
+ multiplier: Optional[
488
+ Annotated[
489
+ Optional[Decimal],
490
+ Meta(description="For derivatives contracts, the multiplier"),
491
+ ]
492
+ ] = None
493
+ """
494
+ For derivatives contracts, the multiplier
495
+ """
496
+ price_display_format: Optional[str] = None
497
+ quote_currency: Optional[str] = None
498
+ schedule_description: Optional[str] = None
499
+ settle_method: Optional[str] = None
500
+ short_description: Optional[
501
+ Annotated[
502
+ Optional[str],
503
+ Meta(
504
+ description="Short description of the product, suitable for display in a bubble, for example"
505
+ ),
506
+ ]
507
+ ] = None
508
+ """
509
+ Short description of the product, suitable for display in a bubble, for example
510
+ """
511
+ sub_category: Optional[str] = None
512
+
513
+ # Constructor that takes all field titles as arguments for convenience
514
+ @classmethod
515
+ def new(
516
+ cls,
517
+ exchange: str,
518
+ exchange_product: str,
519
+ category: Optional[str] = None,
520
+ cqg_contract_symbol: Optional[str] = None,
521
+ info_url: Optional[str] = None,
522
+ long_description: Optional[str] = None,
523
+ multiplier: Optional[Decimal] = None,
524
+ price_display_format: Optional[str] = None,
525
+ quote_currency: Optional[str] = None,
526
+ schedule_description: Optional[str] = None,
527
+ settle_method: Optional[str] = None,
528
+ short_description: Optional[str] = None,
529
+ sub_category: Optional[str] = None,
530
+ ):
531
+ return cls(
532
+ exchange,
533
+ exchange_product,
534
+ category,
535
+ cqg_contract_symbol,
536
+ info_url,
537
+ long_description,
538
+ multiplier,
539
+ price_display_format,
540
+ quote_currency,
541
+ schedule_description,
542
+ settle_method,
543
+ short_description,
544
+ sub_category,
545
+ )
546
+
547
+ def __str__(self) -> str:
548
+ return f"ProductCatalogInfo(exchange={self.exchange},exchange_product={self.exchange_product},category={self.category},cqg_contract_symbol={self.cqg_contract_symbol},info_url={self.info_url},long_description={self.long_description},multiplier={self.multiplier},price_display_format={self.price_display_format},quote_currency={self.quote_currency},schedule_description={self.schedule_description},settle_method={self.settle_method},short_description={self.short_description},sub_category={self.sub_category})"
549
+
550
+
551
+ class RqdAccountStatistics(Struct, omit_defaults=True):
552
+ account_number: str
553
+ account_type: Optional[str] = None
554
+ as_of_date: Optional[str] = None
555
+ available_cash_balance: Optional[Decimal] = None
556
+ cash_available_for_withdrawal: Optional[Decimal] = None
557
+ cumulative_day_trade_pnl: Optional[Decimal] = None
558
+ day_trading_buying_power: Optional[Decimal] = None
559
+ day_trading_buying_power_high_water_mark: Optional[Decimal] = None
560
+ day_trading_buying_power_maintenance_margin_multiplier: Optional[Decimal] = None
561
+ day_trading_house_minimum_equity_margin_call_amount: Optional[Decimal] = None
562
+ day_trading_margin_call_amount: Optional[Decimal] = None
563
+ day_trading_minimum_equity_margin_call_amount: Optional[Decimal] = None
564
+ excess_sma_amount: Optional[Decimal] = None
565
+ house_initial_margin_requirement_adjustment_factor: Optional[Decimal] = None
566
+ house_margin_call_amount: Optional[Decimal] = None
567
+ house_margin_requirement: Optional[Decimal] = None
568
+ house_margin_requirement_adjustment_factor: Optional[Decimal] = None
569
+ is_day_trader: Optional[str] = None
570
+ maintenance_margin_requirement: Optional[Decimal] = None
571
+ margin_call_amount: Optional[Decimal] = None
572
+ marginable_equity: Optional[Decimal] = None
573
+ market_value_adjustment_factor: Optional[Decimal] = None
574
+ number_open_day_trading_margin_calls: Optional[Decimal] = None
575
+ option_only_maintenance_margin_requirement: Optional[Decimal] = None
576
+ option_trade_date_short_market_value: Optional[Decimal] = None
577
+ overall_current_sma_balance: Optional[Decimal] = None
578
+ overnight_buying_power: Optional[Decimal] = None
579
+ reg_t_initial_margin_requirement: Optional[Decimal] = None
580
+ reg_t_maintenance_margin_requirement_adjustment_factor: Optional[str] = None
581
+ reg_t_margin_call_amount: Optional[Decimal] = None
582
+ settlement_date_cash_balance: Optional[Decimal] = None
583
+ settlement_date_long_market_value: Optional[Decimal] = None
584
+ settlement_date_option_long_market_value: Optional[Decimal] = None
585
+ settlement_date_option_short_market_value: Optional[Decimal] = None
586
+ settlement_date_short_market_value: Optional[Decimal] = None
587
+ start_of_day_day_trading_buying_power: Optional[Decimal] = None
588
+ start_of_day_day_trading_buying_power_margin_call_amount: Optional[Decimal] = None
589
+ start_of_day_house_margin_call_amount: Optional[Decimal] = None
590
+ start_of_day_maintenance_margin_call_amount: Optional[Decimal] = None
591
+ start_of_day_reg_t_margin_call_amount: Optional[Decimal] = None
592
+ strategy_based_relief_adjustment_factor: Optional[Decimal] = None
593
+ total_equity: Optional[Decimal] = None
594
+ trade_date_cash_balance: Optional[Decimal] = None
595
+ trade_date_option_long_market_value: Optional[Decimal] = None
596
+ trade_date_total_long_market_value: Optional[Decimal] = None
597
+ trade_date_total_short_market_value: Optional[Decimal] = None
598
+ usable_sma_balance: Optional[Decimal] = None
599
+
600
+ # Constructor that takes all field titles as arguments for convenience
601
+ @classmethod
602
+ def new(
603
+ cls,
604
+ account_number: str,
605
+ account_type: Optional[str] = None,
606
+ as_of_date: Optional[str] = None,
607
+ available_cash_balance: Optional[Decimal] = None,
608
+ cash_available_for_withdrawal: Optional[Decimal] = None,
609
+ cumulative_day_trade_pnl: Optional[Decimal] = None,
610
+ day_trading_buying_power: Optional[Decimal] = None,
611
+ day_trading_buying_power_high_water_mark: Optional[Decimal] = None,
612
+ day_trading_buying_power_maintenance_margin_multiplier: Optional[
613
+ Decimal
614
+ ] = None,
615
+ day_trading_house_minimum_equity_margin_call_amount: Optional[Decimal] = None,
616
+ day_trading_margin_call_amount: Optional[Decimal] = None,
617
+ day_trading_minimum_equity_margin_call_amount: Optional[Decimal] = None,
618
+ excess_sma_amount: Optional[Decimal] = None,
619
+ house_initial_margin_requirement_adjustment_factor: Optional[Decimal] = None,
620
+ house_margin_call_amount: Optional[Decimal] = None,
621
+ house_margin_requirement: Optional[Decimal] = None,
622
+ house_margin_requirement_adjustment_factor: Optional[Decimal] = None,
623
+ is_day_trader: Optional[str] = None,
624
+ maintenance_margin_requirement: Optional[Decimal] = None,
625
+ margin_call_amount: Optional[Decimal] = None,
626
+ marginable_equity: Optional[Decimal] = None,
627
+ market_value_adjustment_factor: Optional[Decimal] = None,
628
+ number_open_day_trading_margin_calls: Optional[Decimal] = None,
629
+ option_only_maintenance_margin_requirement: Optional[Decimal] = None,
630
+ option_trade_date_short_market_value: Optional[Decimal] = None,
631
+ overall_current_sma_balance: Optional[Decimal] = None,
632
+ overnight_buying_power: Optional[Decimal] = None,
633
+ reg_t_initial_margin_requirement: Optional[Decimal] = None,
634
+ reg_t_maintenance_margin_requirement_adjustment_factor: Optional[str] = None,
635
+ reg_t_margin_call_amount: Optional[Decimal] = None,
636
+ settlement_date_cash_balance: Optional[Decimal] = None,
637
+ settlement_date_long_market_value: Optional[Decimal] = None,
638
+ settlement_date_option_long_market_value: Optional[Decimal] = None,
639
+ settlement_date_option_short_market_value: Optional[Decimal] = None,
640
+ settlement_date_short_market_value: Optional[Decimal] = None,
641
+ start_of_day_day_trading_buying_power: Optional[Decimal] = None,
642
+ start_of_day_day_trading_buying_power_margin_call_amount: Optional[
643
+ Decimal
644
+ ] = None,
645
+ start_of_day_house_margin_call_amount: Optional[Decimal] = None,
646
+ start_of_day_maintenance_margin_call_amount: Optional[Decimal] = None,
647
+ start_of_day_reg_t_margin_call_amount: Optional[Decimal] = None,
648
+ strategy_based_relief_adjustment_factor: Optional[Decimal] = None,
649
+ total_equity: Optional[Decimal] = None,
650
+ trade_date_cash_balance: Optional[Decimal] = None,
651
+ trade_date_option_long_market_value: Optional[Decimal] = None,
652
+ trade_date_total_long_market_value: Optional[Decimal] = None,
653
+ trade_date_total_short_market_value: Optional[Decimal] = None,
654
+ usable_sma_balance: Optional[Decimal] = None,
655
+ ):
656
+ return cls(
657
+ account_number,
658
+ account_type,
659
+ as_of_date,
660
+ available_cash_balance,
661
+ cash_available_for_withdrawal,
662
+ cumulative_day_trade_pnl,
663
+ day_trading_buying_power,
664
+ day_trading_buying_power_high_water_mark,
665
+ day_trading_buying_power_maintenance_margin_multiplier,
666
+ day_trading_house_minimum_equity_margin_call_amount,
667
+ day_trading_margin_call_amount,
668
+ day_trading_minimum_equity_margin_call_amount,
669
+ excess_sma_amount,
670
+ house_initial_margin_requirement_adjustment_factor,
671
+ house_margin_call_amount,
672
+ house_margin_requirement,
673
+ house_margin_requirement_adjustment_factor,
674
+ is_day_trader,
675
+ maintenance_margin_requirement,
676
+ margin_call_amount,
677
+ marginable_equity,
678
+ market_value_adjustment_factor,
679
+ number_open_day_trading_margin_calls,
680
+ option_only_maintenance_margin_requirement,
681
+ option_trade_date_short_market_value,
682
+ overall_current_sma_balance,
683
+ overnight_buying_power,
684
+ reg_t_initial_margin_requirement,
685
+ reg_t_maintenance_margin_requirement_adjustment_factor,
686
+ reg_t_margin_call_amount,
687
+ settlement_date_cash_balance,
688
+ settlement_date_long_market_value,
689
+ settlement_date_option_long_market_value,
690
+ settlement_date_option_short_market_value,
691
+ settlement_date_short_market_value,
692
+ start_of_day_day_trading_buying_power,
693
+ start_of_day_day_trading_buying_power_margin_call_amount,
694
+ start_of_day_house_margin_call_amount,
695
+ start_of_day_maintenance_margin_call_amount,
696
+ start_of_day_reg_t_margin_call_amount,
697
+ strategy_based_relief_adjustment_factor,
698
+ total_equity,
699
+ trade_date_cash_balance,
700
+ trade_date_option_long_market_value,
701
+ trade_date_total_long_market_value,
702
+ trade_date_total_short_market_value,
703
+ usable_sma_balance,
704
+ )
705
+
706
+ def __str__(self) -> str:
707
+ return f"RqdAccountStatistics(account_number={self.account_number},account_type={self.account_type},as_of_date={self.as_of_date},available_cash_balance={self.available_cash_balance},cash_available_for_withdrawal={self.cash_available_for_withdrawal},cumulative_day_trade_pnl={self.cumulative_day_trade_pnl},day_trading_buying_power={self.day_trading_buying_power},day_trading_buying_power_high_water_mark={self.day_trading_buying_power_high_water_mark},day_trading_buying_power_maintenance_margin_multiplier={self.day_trading_buying_power_maintenance_margin_multiplier},day_trading_house_minimum_equity_margin_call_amount={self.day_trading_house_minimum_equity_margin_call_amount},day_trading_margin_call_amount={self.day_trading_margin_call_amount},day_trading_minimum_equity_margin_call_amount={self.day_trading_minimum_equity_margin_call_amount},excess_sma_amount={self.excess_sma_amount},house_initial_margin_requirement_adjustment_factor={self.house_initial_margin_requirement_adjustment_factor},house_margin_call_amount={self.house_margin_call_amount},house_margin_requirement={self.house_margin_requirement},house_margin_requirement_adjustment_factor={self.house_margin_requirement_adjustment_factor},is_day_trader={self.is_day_trader},maintenance_margin_requirement={self.maintenance_margin_requirement},margin_call_amount={self.margin_call_amount},marginable_equity={self.marginable_equity},market_value_adjustment_factor={self.market_value_adjustment_factor},number_open_day_trading_margin_calls={self.number_open_day_trading_margin_calls},option_only_maintenance_margin_requirement={self.option_only_maintenance_margin_requirement},option_trade_date_short_market_value={self.option_trade_date_short_market_value},overall_current_sma_balance={self.overall_current_sma_balance},overnight_buying_power={self.overnight_buying_power},reg_t_initial_margin_requirement={self.reg_t_initial_margin_requirement},reg_t_maintenance_margin_requirement_adjustment_factor={self.reg_t_maintenance_margin_requirement_adjustment_factor},reg_t_margin_call_amount={self.reg_t_margin_call_amount},settlement_date_cash_balance={self.settlement_date_cash_balance},settlement_date_long_market_value={self.settlement_date_long_market_value},settlement_date_option_long_market_value={self.settlement_date_option_long_market_value},settlement_date_option_short_market_value={self.settlement_date_option_short_market_value},settlement_date_short_market_value={self.settlement_date_short_market_value},start_of_day_day_trading_buying_power={self.start_of_day_day_trading_buying_power},start_of_day_day_trading_buying_power_margin_call_amount={self.start_of_day_day_trading_buying_power_margin_call_amount},start_of_day_house_margin_call_amount={self.start_of_day_house_margin_call_amount},start_of_day_maintenance_margin_call_amount={self.start_of_day_maintenance_margin_call_amount},start_of_day_reg_t_margin_call_amount={self.start_of_day_reg_t_margin_call_amount},strategy_based_relief_adjustment_factor={self.strategy_based_relief_adjustment_factor},total_equity={self.total_equity},trade_date_cash_balance={self.trade_date_cash_balance},trade_date_option_long_market_value={self.trade_date_option_long_market_value},trade_date_total_long_market_value={self.trade_date_total_long_market_value},trade_date_total_short_market_value={self.trade_date_total_short_market_value},usable_sma_balance={self.usable_sma_balance})"
445
708
 
446
709
 
447
710
  class SortTickersBy(str, Enum):
@@ -451,10 +714,42 @@ class SortTickersBy(str, Enum):
451
714
  ABS_CHANGE_DESC = "ABS_CHANGE_DESC"
452
715
 
453
716
 
717
+ class Statement(Struct, omit_defaults=True):
718
+ account: str
719
+ clearing_firm: str
720
+ filename: str
721
+ statement_date: date
722
+ statement_type: str
723
+ statement_uuid: str
724
+
725
+ # Constructor that takes all field titles as arguments for convenience
726
+ @classmethod
727
+ def new(
728
+ cls,
729
+ account: str,
730
+ clearing_firm: str,
731
+ filename: str,
732
+ statement_date: date,
733
+ statement_type: str,
734
+ statement_uuid: str,
735
+ ):
736
+ return cls(
737
+ account,
738
+ clearing_firm,
739
+ filename,
740
+ statement_date,
741
+ statement_type,
742
+ statement_uuid,
743
+ )
744
+
745
+ def __str__(self) -> str:
746
+ return f"Statement(account={self.account},clearing_firm={self.clearing_firm},filename={self.filename},statement_date={self.statement_date},statement_type={self.statement_type},statement_uuid={self.statement_uuid})"
747
+
748
+
454
749
  class GoodTilDate(Struct, omit_defaults=True):
455
750
  GTD: datetime
456
751
 
457
- # below is a constructor that takes all field titles as arguments for convenience
752
+ # Constructor that takes all field titles as arguments for convenience
458
753
  @classmethod
459
754
  def new(
460
755
  cls,
@@ -483,27 +778,33 @@ TimeInForce = Union[GoodTilDate, TimeInForceEnum]
483
778
  TraderIdOrEmail = str
484
779
 
485
780
 
486
- class TwapStatus(Struct, omit_defaults=True):
487
- quantity_filled: Decimal
488
- realized_twap: Optional[Decimal] = None
781
+ UserId = str
782
+
489
783
 
490
- # below is a constructor that takes all field titles as arguments for convenience
784
+ class Withdrawal(Struct, omit_defaults=True):
785
+ account: str
786
+ amount: Decimal
787
+ description: str
788
+ timestamp: datetime
789
+
790
+ # Constructor that takes all field titles as arguments for convenience
491
791
  @classmethod
492
792
  def new(
493
793
  cls,
494
- quantity_filled: Decimal,
495
- realized_twap: Optional[Decimal] = None,
794
+ account: str,
795
+ amount: Decimal,
796
+ description: str,
797
+ timestamp: datetime,
496
798
  ):
497
799
  return cls(
498
- quantity_filled,
499
- realized_twap,
800
+ account,
801
+ amount,
802
+ description,
803
+ timestamp,
500
804
  )
501
805
 
502
806
  def __str__(self) -> str:
503
- return f"TwapStatus(quantity_filled={self.quantity_filled},realized_twap={self.realized_twap})"
504
-
505
-
506
- UserId = str
807
+ return f"Withdrawal(account={self.account},amount={self.amount},description={self.description},timestamp={self.timestamp})"
507
808
 
508
809
 
509
810
  class AccountPermissions(Struct, omit_defaults=True):
@@ -517,7 +818,7 @@ class AccountPermissions(Struct, omit_defaults=True):
517
818
  trade: bool
518
819
  view: bool
519
820
 
520
- # below is a constructor that takes all field titles as arguments for convenience
821
+ # Constructor that takes all field titles as arguments for convenience
521
822
  @classmethod
522
823
  def new(
523
824
  cls,
@@ -550,13 +851,10 @@ class DerivativeKind(str, Enum):
550
851
  Quanto = "Quanto"
551
852
 
552
853
 
553
- class FillKind(str, Enum):
554
- Normal = "Normal"
555
- Reversal = "Reversal"
556
- Correction = "Correction"
557
-
558
-
559
- HumanDuration = str
854
+ class FillKind(int, Enum):
855
+ Normal = 0
856
+ Reversal = 1
857
+ Correction = 2
560
858
 
561
859
 
562
860
  class Unit(str, Enum):
@@ -567,7 +865,7 @@ class Unit(str, Enum):
567
865
  class MinOrderQuantityUnit(Struct, omit_defaults=True):
568
866
  unit: Unit
569
867
 
570
- # below is a constructor that takes all field titles as arguments for convenience
868
+ # Constructor that takes all field titles as arguments for convenience
571
869
  @classmethod
572
870
  def new(
573
871
  cls,
@@ -593,7 +891,7 @@ PriceDisplayFormat = str
593
891
  class Fiat(Struct, omit_defaults=True):
594
892
  product_type: Literal["Fiat"]
595
893
 
596
- # below is a constructor that takes all field titles as arguments for convenience
894
+ # Constructor that takes all field titles as arguments for convenience
597
895
  @classmethod
598
896
  def new(
599
897
  cls,
@@ -610,7 +908,7 @@ class Fiat(Struct, omit_defaults=True):
610
908
  class Commodity(Struct, omit_defaults=True):
611
909
  product_type: Literal["Commodity"]
612
910
 
613
- # below is a constructor that takes all field titles as arguments for convenience
911
+ # Constructor that takes all field titles as arguments for convenience
614
912
  @classmethod
615
913
  def new(
616
914
  cls,
@@ -627,7 +925,7 @@ class Commodity(Struct, omit_defaults=True):
627
925
  class Crypto(Struct, omit_defaults=True):
628
926
  product_type: Literal["Crypto"]
629
927
 
630
- # below is a constructor that takes all field titles as arguments for convenience
928
+ # Constructor that takes all field titles as arguments for convenience
631
929
  @classmethod
632
930
  def new(
633
931
  cls,
@@ -645,7 +943,7 @@ class Equity(Struct, omit_defaults=True):
645
943
  product_type: Literal["Equity"]
646
944
  easy_to_borrow: Optional[bool] = None
647
945
 
648
- # below is a constructor that takes all field titles as arguments for convenience
946
+ # Constructor that takes all field titles as arguments for convenience
649
947
  @classmethod
650
948
  def new(
651
949
  cls,
@@ -664,7 +962,7 @@ class Equity(Struct, omit_defaults=True):
664
962
  class Index(Struct, omit_defaults=True):
665
963
  product_type: Literal["Index"]
666
964
 
667
- # below is a constructor that takes all field titles as arguments for convenience
965
+ # Constructor that takes all field titles as arguments for convenience
668
966
  @classmethod
669
967
  def new(
670
968
  cls,
@@ -687,7 +985,7 @@ class Future(Struct, omit_defaults=True):
687
985
  series: Optional[str] = None
688
986
  underlying: Optional[str] = None
689
987
 
690
- # below is a constructor that takes all field titles as arguments for convenience
988
+ # Constructor that takes all field titles as arguments for convenience
691
989
  @classmethod
692
990
  def new(
693
991
  cls,
@@ -719,7 +1017,7 @@ class Perpetual(Struct, omit_defaults=True):
719
1017
  product_type: Literal["Perpetual"]
720
1018
  underlying: Optional[str] = None
721
1019
 
722
- # below is a constructor that takes all field titles as arguments for convenience
1020
+ # Constructor that takes all field titles as arguments for convenience
723
1021
  @classmethod
724
1022
  def new(
725
1023
  cls,
@@ -742,7 +1040,7 @@ class Perpetual(Struct, omit_defaults=True):
742
1040
  class Unknown(Struct, omit_defaults=True):
743
1041
  product_type: Literal["Unknown"]
744
1042
 
745
- # below is a constructor that takes all field titles as arguments for convenience
1043
+ # Constructor that takes all field titles as arguments for convenience
746
1044
  @classmethod
747
1045
  def new(
748
1046
  cls,
@@ -756,10 +1054,62 @@ class Unknown(Struct, omit_defaults=True):
756
1054
  return f"Unknown(product_type={self.product_type})"
757
1055
 
758
1056
 
1057
+ class PutOrCall(str, Enum):
1058
+ P = "P"
1059
+ C = "C"
1060
+
1061
+
1062
+ class SnapshotOrUpdateForStringAndProductCatalogInfo1(Struct, omit_defaults=True):
1063
+ snapshot: Dict[str, ProductCatalogInfo]
1064
+
1065
+ # Constructor that takes all field titles as arguments for convenience
1066
+ @classmethod
1067
+ def new(
1068
+ cls,
1069
+ snapshot: Dict[str, ProductCatalogInfo],
1070
+ ):
1071
+ return cls(
1072
+ snapshot,
1073
+ )
1074
+
1075
+ def __str__(self) -> str:
1076
+ return (
1077
+ f"SnapshotOrUpdateForStringAndProductCatalogInfo1(snapshot={self.snapshot})"
1078
+ )
1079
+
1080
+
1081
+ Update6 = List[Union[str, Optional[ProductCatalogInfo]]]
1082
+
1083
+
1084
+ class SnapshotOrUpdateForStringAndProductCatalogInfo2(Struct, omit_defaults=True):
1085
+ updates: List[Update6]
1086
+
1087
+ # Constructor that takes all field titles as arguments for convenience
1088
+ @classmethod
1089
+ def new(
1090
+ cls,
1091
+ updates: List[Update6],
1092
+ ):
1093
+ return cls(
1094
+ updates,
1095
+ )
1096
+
1097
+ def __str__(self) -> str:
1098
+ return (
1099
+ f"SnapshotOrUpdateForStringAndProductCatalogInfo2(updates={self.updates})"
1100
+ )
1101
+
1102
+
1103
+ SnapshotOrUpdateForStringAndProductCatalogInfo = Union[
1104
+ SnapshotOrUpdateForStringAndProductCatalogInfo1,
1105
+ SnapshotOrUpdateForStringAndProductCatalogInfo2,
1106
+ ]
1107
+
1108
+
759
1109
  class SnapshotOrUpdateForStringAndString1(Struct, omit_defaults=True):
760
1110
  snapshot: Dict[str, str]
761
1111
 
762
- # below is a constructor that takes all field titles as arguments for convenience
1112
+ # Constructor that takes all field titles as arguments for convenience
763
1113
  @classmethod
764
1114
  def new(
765
1115
  cls,
@@ -773,17 +1123,17 @@ class SnapshotOrUpdateForStringAndString1(Struct, omit_defaults=True):
773
1123
  return f"SnapshotOrUpdateForStringAndString1(snapshot={self.snapshot})"
774
1124
 
775
1125
 
776
- Update5 = List[Union[str, Optional[str]]]
1126
+ Update7 = List[Union[str, Optional[str]]]
777
1127
 
778
1128
 
779
1129
  class SnapshotOrUpdateForStringAndString2(Struct, omit_defaults=True):
780
- updates: List[Update5]
1130
+ updates: List[Update7]
781
1131
 
782
- # below is a constructor that takes all field titles as arguments for convenience
1132
+ # Constructor that takes all field titles as arguments for convenience
783
1133
  @classmethod
784
1134
  def new(
785
1135
  cls,
786
- updates: List[Update5],
1136
+ updates: List[Update7],
787
1137
  ):
788
1138
  return cls(
789
1139
  updates,
@@ -801,7 +1151,7 @@ SnapshotOrUpdateForStringAndString = Union[
801
1151
  class SimpleDecimal(Struct, omit_defaults=True):
802
1152
  simple: Decimal
803
1153
 
804
- # below is a constructor that takes all field titles as arguments for convenience
1154
+ # Constructor that takes all field titles as arguments for convenience
805
1155
  @classmethod
806
1156
  def new(
807
1157
  cls,
@@ -821,7 +1171,7 @@ Threshold = List[Decimal]
821
1171
  class Varying1(Struct, omit_defaults=True):
822
1172
  thresholds: List[Threshold]
823
1173
 
824
- # below is a constructor that takes all field titles as arguments for convenience
1174
+ # Constructor that takes all field titles as arguments for convenience
825
1175
  @classmethod
826
1176
  def new(
827
1177
  cls,
@@ -842,7 +1192,7 @@ class Varying(Struct, omit_defaults=True):
842
1192
 
843
1193
  varying: Varying1
844
1194
 
845
- # below is a constructor that takes all field titles as arguments for convenience
1195
+ # Constructor that takes all field titles as arguments for convenience
846
1196
  @classmethod
847
1197
  def new(
848
1198
  cls,
@@ -859,606 +1209,6 @@ class Varying(Struct, omit_defaults=True):
859
1209
  TickSize = Union[SimpleDecimal, Varying]
860
1210
 
861
1211
 
862
- class TimeZone(str, Enum):
863
- Africa_Abidjan = "Africa/Abidjan"
864
- Africa_Accra = "Africa/Accra"
865
- Africa_Addis_Ababa = "Africa/Addis_Ababa"
866
- Africa_Algiers = "Africa/Algiers"
867
- Africa_Asmara = "Africa/Asmara"
868
- Africa_Asmera = "Africa/Asmera"
869
- Africa_Bamako = "Africa/Bamako"
870
- Africa_Bangui = "Africa/Bangui"
871
- Africa_Banjul = "Africa/Banjul"
872
- Africa_Bissau = "Africa/Bissau"
873
- Africa_Blantyre = "Africa/Blantyre"
874
- Africa_Brazzaville = "Africa/Brazzaville"
875
- Africa_Bujumbura = "Africa/Bujumbura"
876
- Africa_Cairo = "Africa/Cairo"
877
- Africa_Casablanca = "Africa/Casablanca"
878
- Africa_Ceuta = "Africa/Ceuta"
879
- Africa_Conakry = "Africa/Conakry"
880
- Africa_Dakar = "Africa/Dakar"
881
- Africa_Dar_es_Salaam = "Africa/Dar_es_Salaam"
882
- Africa_Djibouti = "Africa/Djibouti"
883
- Africa_Douala = "Africa/Douala"
884
- Africa_El_Aaiun = "Africa/El_Aaiun"
885
- Africa_Freetown = "Africa/Freetown"
886
- Africa_Gaborone = "Africa/Gaborone"
887
- Africa_Harare = "Africa/Harare"
888
- Africa_Johannesburg = "Africa/Johannesburg"
889
- Africa_Juba = "Africa/Juba"
890
- Africa_Kampala = "Africa/Kampala"
891
- Africa_Khartoum = "Africa/Khartoum"
892
- Africa_Kigali = "Africa/Kigali"
893
- Africa_Kinshasa = "Africa/Kinshasa"
894
- Africa_Lagos = "Africa/Lagos"
895
- Africa_Libreville = "Africa/Libreville"
896
- Africa_Lome = "Africa/Lome"
897
- Africa_Luanda = "Africa/Luanda"
898
- Africa_Lubumbashi = "Africa/Lubumbashi"
899
- Africa_Lusaka = "Africa/Lusaka"
900
- Africa_Malabo = "Africa/Malabo"
901
- Africa_Maputo = "Africa/Maputo"
902
- Africa_Maseru = "Africa/Maseru"
903
- Africa_Mbabane = "Africa/Mbabane"
904
- Africa_Mogadishu = "Africa/Mogadishu"
905
- Africa_Monrovia = "Africa/Monrovia"
906
- Africa_Nairobi = "Africa/Nairobi"
907
- Africa_Ndjamena = "Africa/Ndjamena"
908
- Africa_Niamey = "Africa/Niamey"
909
- Africa_Nouakchott = "Africa/Nouakchott"
910
- Africa_Ouagadougou = "Africa/Ouagadougou"
911
- Africa_Porto_Novo = "Africa/Porto-Novo"
912
- Africa_Sao_Tome = "Africa/Sao_Tome"
913
- Africa_Timbuktu = "Africa/Timbuktu"
914
- Africa_Tripoli = "Africa/Tripoli"
915
- Africa_Tunis = "Africa/Tunis"
916
- Africa_Windhoek = "Africa/Windhoek"
917
- America_Adak = "America/Adak"
918
- America_Anchorage = "America/Anchorage"
919
- America_Anguilla = "America/Anguilla"
920
- America_Antigua = "America/Antigua"
921
- America_Araguaina = "America/Araguaina"
922
- America_Argentina_Buenos_Aires = "America/Argentina/Buenos_Aires"
923
- America_Argentina_Catamarca = "America/Argentina/Catamarca"
924
- America_Argentina_ComodRivadavia = "America/Argentina/ComodRivadavia"
925
- America_Argentina_Cordoba = "America/Argentina/Cordoba"
926
- America_Argentina_Jujuy = "America/Argentina/Jujuy"
927
- America_Argentina_La_Rioja = "America/Argentina/La_Rioja"
928
- America_Argentina_Mendoza = "America/Argentina/Mendoza"
929
- America_Argentina_Rio_Gallegos = "America/Argentina/Rio_Gallegos"
930
- America_Argentina_Salta = "America/Argentina/Salta"
931
- America_Argentina_San_Juan = "America/Argentina/San_Juan"
932
- America_Argentina_San_Luis = "America/Argentina/San_Luis"
933
- America_Argentina_Tucuman = "America/Argentina/Tucuman"
934
- America_Argentina_Ushuaia = "America/Argentina/Ushuaia"
935
- America_Aruba = "America/Aruba"
936
- America_Asuncion = "America/Asuncion"
937
- America_Atikokan = "America/Atikokan"
938
- America_Atka = "America/Atka"
939
- America_Bahia = "America/Bahia"
940
- America_Bahia_Banderas = "America/Bahia_Banderas"
941
- America_Barbados = "America/Barbados"
942
- America_Belem = "America/Belem"
943
- America_Belize = "America/Belize"
944
- America_Blanc_Sablon = "America/Blanc-Sablon"
945
- America_Boa_Vista = "America/Boa_Vista"
946
- America_Bogota = "America/Bogota"
947
- America_Boise = "America/Boise"
948
- America_Buenos_Aires = "America/Buenos_Aires"
949
- America_Cambridge_Bay = "America/Cambridge_Bay"
950
- America_Campo_Grande = "America/Campo_Grande"
951
- America_Cancun = "America/Cancun"
952
- America_Caracas = "America/Caracas"
953
- America_Catamarca = "America/Catamarca"
954
- America_Cayenne = "America/Cayenne"
955
- America_Cayman = "America/Cayman"
956
- America_Chicago = "America/Chicago"
957
- America_Chihuahua = "America/Chihuahua"
958
- America_Ciudad_Juarez = "America/Ciudad_Juarez"
959
- America_Coral_Harbour = "America/Coral_Harbour"
960
- America_Cordoba = "America/Cordoba"
961
- America_Costa_Rica = "America/Costa_Rica"
962
- America_Coyhaique = "America/Coyhaique"
963
- America_Creston = "America/Creston"
964
- America_Cuiaba = "America/Cuiaba"
965
- America_Curacao = "America/Curacao"
966
- America_Danmarkshavn = "America/Danmarkshavn"
967
- America_Dawson = "America/Dawson"
968
- America_Dawson_Creek = "America/Dawson_Creek"
969
- America_Denver = "America/Denver"
970
- America_Detroit = "America/Detroit"
971
- America_Dominica = "America/Dominica"
972
- America_Edmonton = "America/Edmonton"
973
- America_Eirunepe = "America/Eirunepe"
974
- America_El_Salvador = "America/El_Salvador"
975
- America_Ensenada = "America/Ensenada"
976
- America_Fort_Nelson = "America/Fort_Nelson"
977
- America_Fort_Wayne = "America/Fort_Wayne"
978
- America_Fortaleza = "America/Fortaleza"
979
- America_Glace_Bay = "America/Glace_Bay"
980
- America_Godthab = "America/Godthab"
981
- America_Goose_Bay = "America/Goose_Bay"
982
- America_Grand_Turk = "America/Grand_Turk"
983
- America_Grenada = "America/Grenada"
984
- America_Guadeloupe = "America/Guadeloupe"
985
- America_Guatemala = "America/Guatemala"
986
- America_Guayaquil = "America/Guayaquil"
987
- America_Guyana = "America/Guyana"
988
- America_Halifax = "America/Halifax"
989
- America_Havana = "America/Havana"
990
- America_Hermosillo = "America/Hermosillo"
991
- America_Indiana_Indianapolis = "America/Indiana/Indianapolis"
992
- America_Indiana_Knox = "America/Indiana/Knox"
993
- America_Indiana_Marengo = "America/Indiana/Marengo"
994
- America_Indiana_Petersburg = "America/Indiana/Petersburg"
995
- America_Indiana_Tell_City = "America/Indiana/Tell_City"
996
- America_Indiana_Vevay = "America/Indiana/Vevay"
997
- America_Indiana_Vincennes = "America/Indiana/Vincennes"
998
- America_Indiana_Winamac = "America/Indiana/Winamac"
999
- America_Indianapolis = "America/Indianapolis"
1000
- America_Inuvik = "America/Inuvik"
1001
- America_Iqaluit = "America/Iqaluit"
1002
- America_Jamaica = "America/Jamaica"
1003
- America_Jujuy = "America/Jujuy"
1004
- America_Juneau = "America/Juneau"
1005
- America_Kentucky_Louisville = "America/Kentucky/Louisville"
1006
- America_Kentucky_Monticello = "America/Kentucky/Monticello"
1007
- America_Knox_IN = "America/Knox_IN"
1008
- America_Kralendijk = "America/Kralendijk"
1009
- America_La_Paz = "America/La_Paz"
1010
- America_Lima = "America/Lima"
1011
- America_Los_Angeles = "America/Los_Angeles"
1012
- America_Louisville = "America/Louisville"
1013
- America_Lower_Princes = "America/Lower_Princes"
1014
- America_Maceio = "America/Maceio"
1015
- America_Managua = "America/Managua"
1016
- America_Manaus = "America/Manaus"
1017
- America_Marigot = "America/Marigot"
1018
- America_Martinique = "America/Martinique"
1019
- America_Matamoros = "America/Matamoros"
1020
- America_Mazatlan = "America/Mazatlan"
1021
- America_Mendoza = "America/Mendoza"
1022
- America_Menominee = "America/Menominee"
1023
- America_Merida = "America/Merida"
1024
- America_Metlakatla = "America/Metlakatla"
1025
- America_Mexico_City = "America/Mexico_City"
1026
- America_Miquelon = "America/Miquelon"
1027
- America_Moncton = "America/Moncton"
1028
- America_Monterrey = "America/Monterrey"
1029
- America_Montevideo = "America/Montevideo"
1030
- America_Montreal = "America/Montreal"
1031
- America_Montserrat = "America/Montserrat"
1032
- America_Nassau = "America/Nassau"
1033
- America_New_York = "America/New_York"
1034
- America_Nipigon = "America/Nipigon"
1035
- America_Nome = "America/Nome"
1036
- America_Noronha = "America/Noronha"
1037
- America_North_Dakota_Beulah = "America/North_Dakota/Beulah"
1038
- America_North_Dakota_Center = "America/North_Dakota/Center"
1039
- America_North_Dakota_New_Salem = "America/North_Dakota/New_Salem"
1040
- America_Nuuk = "America/Nuuk"
1041
- America_Ojinaga = "America/Ojinaga"
1042
- America_Panama = "America/Panama"
1043
- America_Pangnirtung = "America/Pangnirtung"
1044
- America_Paramaribo = "America/Paramaribo"
1045
- America_Phoenix = "America/Phoenix"
1046
- America_Port_au_Prince = "America/Port-au-Prince"
1047
- America_Port_of_Spain = "America/Port_of_Spain"
1048
- America_Porto_Acre = "America/Porto_Acre"
1049
- America_Porto_Velho = "America/Porto_Velho"
1050
- America_Puerto_Rico = "America/Puerto_Rico"
1051
- America_Punta_Arenas = "America/Punta_Arenas"
1052
- America_Rainy_River = "America/Rainy_River"
1053
- America_Rankin_Inlet = "America/Rankin_Inlet"
1054
- America_Recife = "America/Recife"
1055
- America_Regina = "America/Regina"
1056
- America_Resolute = "America/Resolute"
1057
- America_Rio_Branco = "America/Rio_Branco"
1058
- America_Rosario = "America/Rosario"
1059
- America_Santa_Isabel = "America/Santa_Isabel"
1060
- America_Santarem = "America/Santarem"
1061
- America_Santiago = "America/Santiago"
1062
- America_Santo_Domingo = "America/Santo_Domingo"
1063
- America_Sao_Paulo = "America/Sao_Paulo"
1064
- America_Scoresbysund = "America/Scoresbysund"
1065
- America_Shiprock = "America/Shiprock"
1066
- America_Sitka = "America/Sitka"
1067
- America_St_Barthelemy = "America/St_Barthelemy"
1068
- America_St_Johns = "America/St_Johns"
1069
- America_St_Kitts = "America/St_Kitts"
1070
- America_St_Lucia = "America/St_Lucia"
1071
- America_St_Thomas = "America/St_Thomas"
1072
- America_St_Vincent = "America/St_Vincent"
1073
- America_Swift_Current = "America/Swift_Current"
1074
- America_Tegucigalpa = "America/Tegucigalpa"
1075
- America_Thule = "America/Thule"
1076
- America_Thunder_Bay = "America/Thunder_Bay"
1077
- America_Tijuana = "America/Tijuana"
1078
- America_Toronto = "America/Toronto"
1079
- America_Tortola = "America/Tortola"
1080
- America_Vancouver = "America/Vancouver"
1081
- America_Virgin = "America/Virgin"
1082
- America_Whitehorse = "America/Whitehorse"
1083
- America_Winnipeg = "America/Winnipeg"
1084
- America_Yakutat = "America/Yakutat"
1085
- America_Yellowknife = "America/Yellowknife"
1086
- Antarctica_Casey = "Antarctica/Casey"
1087
- Antarctica_Davis = "Antarctica/Davis"
1088
- Antarctica_DumontDUrville = "Antarctica/DumontDUrville"
1089
- Antarctica_Macquarie = "Antarctica/Macquarie"
1090
- Antarctica_Mawson = "Antarctica/Mawson"
1091
- Antarctica_McMurdo = "Antarctica/McMurdo"
1092
- Antarctica_Palmer = "Antarctica/Palmer"
1093
- Antarctica_Rothera = "Antarctica/Rothera"
1094
- Antarctica_South_Pole = "Antarctica/South_Pole"
1095
- Antarctica_Syowa = "Antarctica/Syowa"
1096
- Antarctica_Troll = "Antarctica/Troll"
1097
- Antarctica_Vostok = "Antarctica/Vostok"
1098
- Arctic_Longyearbyen = "Arctic/Longyearbyen"
1099
- Asia_Aden = "Asia/Aden"
1100
- Asia_Almaty = "Asia/Almaty"
1101
- Asia_Amman = "Asia/Amman"
1102
- Asia_Anadyr = "Asia/Anadyr"
1103
- Asia_Aqtau = "Asia/Aqtau"
1104
- Asia_Aqtobe = "Asia/Aqtobe"
1105
- Asia_Ashgabat = "Asia/Ashgabat"
1106
- Asia_Ashkhabad = "Asia/Ashkhabad"
1107
- Asia_Atyrau = "Asia/Atyrau"
1108
- Asia_Baghdad = "Asia/Baghdad"
1109
- Asia_Bahrain = "Asia/Bahrain"
1110
- Asia_Baku = "Asia/Baku"
1111
- Asia_Bangkok = "Asia/Bangkok"
1112
- Asia_Barnaul = "Asia/Barnaul"
1113
- Asia_Beirut = "Asia/Beirut"
1114
- Asia_Bishkek = "Asia/Bishkek"
1115
- Asia_Brunei = "Asia/Brunei"
1116
- Asia_Calcutta = "Asia/Calcutta"
1117
- Asia_Chita = "Asia/Chita"
1118
- Asia_Choibalsan = "Asia/Choibalsan"
1119
- Asia_Chongqing = "Asia/Chongqing"
1120
- Asia_Chungking = "Asia/Chungking"
1121
- Asia_Colombo = "Asia/Colombo"
1122
- Asia_Dacca = "Asia/Dacca"
1123
- Asia_Damascus = "Asia/Damascus"
1124
- Asia_Dhaka = "Asia/Dhaka"
1125
- Asia_Dili = "Asia/Dili"
1126
- Asia_Dubai = "Asia/Dubai"
1127
- Asia_Dushanbe = "Asia/Dushanbe"
1128
- Asia_Famagusta = "Asia/Famagusta"
1129
- Asia_Gaza = "Asia/Gaza"
1130
- Asia_Harbin = "Asia/Harbin"
1131
- Asia_Hebron = "Asia/Hebron"
1132
- Asia_Ho_Chi_Minh = "Asia/Ho_Chi_Minh"
1133
- Asia_Hong_Kong = "Asia/Hong_Kong"
1134
- Asia_Hovd = "Asia/Hovd"
1135
- Asia_Irkutsk = "Asia/Irkutsk"
1136
- Asia_Istanbul = "Asia/Istanbul"
1137
- Asia_Jakarta = "Asia/Jakarta"
1138
- Asia_Jayapura = "Asia/Jayapura"
1139
- Asia_Jerusalem = "Asia/Jerusalem"
1140
- Asia_Kabul = "Asia/Kabul"
1141
- Asia_Kamchatka = "Asia/Kamchatka"
1142
- Asia_Karachi = "Asia/Karachi"
1143
- Asia_Kashgar = "Asia/Kashgar"
1144
- Asia_Kathmandu = "Asia/Kathmandu"
1145
- Asia_Katmandu = "Asia/Katmandu"
1146
- Asia_Khandyga = "Asia/Khandyga"
1147
- Asia_Kolkata = "Asia/Kolkata"
1148
- Asia_Krasnoyarsk = "Asia/Krasnoyarsk"
1149
- Asia_Kuala_Lumpur = "Asia/Kuala_Lumpur"
1150
- Asia_Kuching = "Asia/Kuching"
1151
- Asia_Kuwait = "Asia/Kuwait"
1152
- Asia_Macao = "Asia/Macao"
1153
- Asia_Macau = "Asia/Macau"
1154
- Asia_Magadan = "Asia/Magadan"
1155
- Asia_Makassar = "Asia/Makassar"
1156
- Asia_Manila = "Asia/Manila"
1157
- Asia_Muscat = "Asia/Muscat"
1158
- Asia_Nicosia = "Asia/Nicosia"
1159
- Asia_Novokuznetsk = "Asia/Novokuznetsk"
1160
- Asia_Novosibirsk = "Asia/Novosibirsk"
1161
- Asia_Omsk = "Asia/Omsk"
1162
- Asia_Oral = "Asia/Oral"
1163
- Asia_Phnom_Penh = "Asia/Phnom_Penh"
1164
- Asia_Pontianak = "Asia/Pontianak"
1165
- Asia_Pyongyang = "Asia/Pyongyang"
1166
- Asia_Qatar = "Asia/Qatar"
1167
- Asia_Qostanay = "Asia/Qostanay"
1168
- Asia_Qyzylorda = "Asia/Qyzylorda"
1169
- Asia_Rangoon = "Asia/Rangoon"
1170
- Asia_Riyadh = "Asia/Riyadh"
1171
- Asia_Saigon = "Asia/Saigon"
1172
- Asia_Sakhalin = "Asia/Sakhalin"
1173
- Asia_Samarkand = "Asia/Samarkand"
1174
- Asia_Seoul = "Asia/Seoul"
1175
- Asia_Shanghai = "Asia/Shanghai"
1176
- Asia_Singapore = "Asia/Singapore"
1177
- Asia_Srednekolymsk = "Asia/Srednekolymsk"
1178
- Asia_Taipei = "Asia/Taipei"
1179
- Asia_Tashkent = "Asia/Tashkent"
1180
- Asia_Tbilisi = "Asia/Tbilisi"
1181
- Asia_Tehran = "Asia/Tehran"
1182
- Asia_Tel_Aviv = "Asia/Tel_Aviv"
1183
- Asia_Thimbu = "Asia/Thimbu"
1184
- Asia_Thimphu = "Asia/Thimphu"
1185
- Asia_Tokyo = "Asia/Tokyo"
1186
- Asia_Tomsk = "Asia/Tomsk"
1187
- Asia_Ujung_Pandang = "Asia/Ujung_Pandang"
1188
- Asia_Ulaanbaatar = "Asia/Ulaanbaatar"
1189
- Asia_Ulan_Bator = "Asia/Ulan_Bator"
1190
- Asia_Urumqi = "Asia/Urumqi"
1191
- Asia_Ust_Nera = "Asia/Ust-Nera"
1192
- Asia_Vientiane = "Asia/Vientiane"
1193
- Asia_Vladivostok = "Asia/Vladivostok"
1194
- Asia_Yakutsk = "Asia/Yakutsk"
1195
- Asia_Yangon = "Asia/Yangon"
1196
- Asia_Yekaterinburg = "Asia/Yekaterinburg"
1197
- Asia_Yerevan = "Asia/Yerevan"
1198
- Atlantic_Azores = "Atlantic/Azores"
1199
- Atlantic_Bermuda = "Atlantic/Bermuda"
1200
- Atlantic_Canary = "Atlantic/Canary"
1201
- Atlantic_Cape_Verde = "Atlantic/Cape_Verde"
1202
- Atlantic_Faeroe = "Atlantic/Faeroe"
1203
- Atlantic_Faroe = "Atlantic/Faroe"
1204
- Atlantic_Jan_Mayen = "Atlantic/Jan_Mayen"
1205
- Atlantic_Madeira = "Atlantic/Madeira"
1206
- Atlantic_Reykjavik = "Atlantic/Reykjavik"
1207
- Atlantic_South_Georgia = "Atlantic/South_Georgia"
1208
- Atlantic_St_Helena = "Atlantic/St_Helena"
1209
- Atlantic_Stanley = "Atlantic/Stanley"
1210
- Australia_ACT = "Australia/ACT"
1211
- Australia_Adelaide = "Australia/Adelaide"
1212
- Australia_Brisbane = "Australia/Brisbane"
1213
- Australia_Broken_Hill = "Australia/Broken_Hill"
1214
- Australia_Canberra = "Australia/Canberra"
1215
- Australia_Currie = "Australia/Currie"
1216
- Australia_Darwin = "Australia/Darwin"
1217
- Australia_Eucla = "Australia/Eucla"
1218
- Australia_Hobart = "Australia/Hobart"
1219
- Australia_LHI = "Australia/LHI"
1220
- Australia_Lindeman = "Australia/Lindeman"
1221
- Australia_Lord_Howe = "Australia/Lord_Howe"
1222
- Australia_Melbourne = "Australia/Melbourne"
1223
- Australia_NSW = "Australia/NSW"
1224
- Australia_North = "Australia/North"
1225
- Australia_Perth = "Australia/Perth"
1226
- Australia_Queensland = "Australia/Queensland"
1227
- Australia_South = "Australia/South"
1228
- Australia_Sydney = "Australia/Sydney"
1229
- Australia_Tasmania = "Australia/Tasmania"
1230
- Australia_Victoria = "Australia/Victoria"
1231
- Australia_West = "Australia/West"
1232
- Australia_Yancowinna = "Australia/Yancowinna"
1233
- Brazil_Acre = "Brazil/Acre"
1234
- Brazil_DeNoronha = "Brazil/DeNoronha"
1235
- Brazil_East = "Brazil/East"
1236
- Brazil_West = "Brazil/West"
1237
- CET = "CET"
1238
- CST6CDT = "CST6CDT"
1239
- Canada_Atlantic = "Canada/Atlantic"
1240
- Canada_Central = "Canada/Central"
1241
- Canada_Eastern = "Canada/Eastern"
1242
- Canada_Mountain = "Canada/Mountain"
1243
- Canada_Newfoundland = "Canada/Newfoundland"
1244
- Canada_Pacific = "Canada/Pacific"
1245
- Canada_Saskatchewan = "Canada/Saskatchewan"
1246
- Canada_Yukon = "Canada/Yukon"
1247
- Chile_Continental = "Chile/Continental"
1248
- Chile_EasterIsland = "Chile/EasterIsland"
1249
- Cuba = "Cuba"
1250
- EET = "EET"
1251
- EST = "EST"
1252
- EST5EDT = "EST5EDT"
1253
- Egypt = "Egypt"
1254
- Eire = "Eire"
1255
- Etc_GMT = "Etc/GMT"
1256
- Etc_GMT_0 = "Etc/GMT+0"
1257
- Etc_GMT_1 = "Etc/GMT+1"
1258
- Etc_GMT_10 = "Etc/GMT+10"
1259
- Etc_GMT_11 = "Etc/GMT+11"
1260
- Etc_GMT_12 = "Etc/GMT+12"
1261
- Etc_GMT_2 = "Etc/GMT+2"
1262
- Etc_GMT_3 = "Etc/GMT+3"
1263
- Etc_GMT_4 = "Etc/GMT+4"
1264
- Etc_GMT_5 = "Etc/GMT+5"
1265
- Etc_GMT_6 = "Etc/GMT+6"
1266
- Etc_GMT_7 = "Etc/GMT+7"
1267
- Etc_GMT_8 = "Etc/GMT+8"
1268
- Etc_GMT_9 = "Etc/GMT+9"
1269
- Etc_GMT_0_1 = "Etc/GMT-0"
1270
- Etc_GMT_1_1 = "Etc/GMT-1"
1271
- Etc_GMT_10_1 = "Etc/GMT-10"
1272
- Etc_GMT_11_1 = "Etc/GMT-11"
1273
- Etc_GMT_12_1 = "Etc/GMT-12"
1274
- Etc_GMT_13 = "Etc/GMT-13"
1275
- Etc_GMT_14 = "Etc/GMT-14"
1276
- Etc_GMT_2_1 = "Etc/GMT-2"
1277
- Etc_GMT_3_1 = "Etc/GMT-3"
1278
- Etc_GMT_4_1 = "Etc/GMT-4"
1279
- Etc_GMT_5_1 = "Etc/GMT-5"
1280
- Etc_GMT_6_1 = "Etc/GMT-6"
1281
- Etc_GMT_7_1 = "Etc/GMT-7"
1282
- Etc_GMT_8_1 = "Etc/GMT-8"
1283
- Etc_GMT_9_1 = "Etc/GMT-9"
1284
- Etc_GMT0 = "Etc/GMT0"
1285
- Etc_Greenwich = "Etc/Greenwich"
1286
- Etc_UCT = "Etc/UCT"
1287
- Etc_UTC = "Etc/UTC"
1288
- Etc_Universal = "Etc/Universal"
1289
- Etc_Zulu = "Etc/Zulu"
1290
- Europe_Amsterdam = "Europe/Amsterdam"
1291
- Europe_Andorra = "Europe/Andorra"
1292
- Europe_Astrakhan = "Europe/Astrakhan"
1293
- Europe_Athens = "Europe/Athens"
1294
- Europe_Belfast = "Europe/Belfast"
1295
- Europe_Belgrade = "Europe/Belgrade"
1296
- Europe_Berlin = "Europe/Berlin"
1297
- Europe_Bratislava = "Europe/Bratislava"
1298
- Europe_Brussels = "Europe/Brussels"
1299
- Europe_Bucharest = "Europe/Bucharest"
1300
- Europe_Budapest = "Europe/Budapest"
1301
- Europe_Busingen = "Europe/Busingen"
1302
- Europe_Chisinau = "Europe/Chisinau"
1303
- Europe_Copenhagen = "Europe/Copenhagen"
1304
- Europe_Dublin = "Europe/Dublin"
1305
- Europe_Gibraltar = "Europe/Gibraltar"
1306
- Europe_Guernsey = "Europe/Guernsey"
1307
- Europe_Helsinki = "Europe/Helsinki"
1308
- Europe_Isle_of_Man = "Europe/Isle_of_Man"
1309
- Europe_Istanbul = "Europe/Istanbul"
1310
- Europe_Jersey = "Europe/Jersey"
1311
- Europe_Kaliningrad = "Europe/Kaliningrad"
1312
- Europe_Kiev = "Europe/Kiev"
1313
- Europe_Kirov = "Europe/Kirov"
1314
- Europe_Kyiv = "Europe/Kyiv"
1315
- Europe_Lisbon = "Europe/Lisbon"
1316
- Europe_Ljubljana = "Europe/Ljubljana"
1317
- Europe_London = "Europe/London"
1318
- Europe_Luxembourg = "Europe/Luxembourg"
1319
- Europe_Madrid = "Europe/Madrid"
1320
- Europe_Malta = "Europe/Malta"
1321
- Europe_Mariehamn = "Europe/Mariehamn"
1322
- Europe_Minsk = "Europe/Minsk"
1323
- Europe_Monaco = "Europe/Monaco"
1324
- Europe_Moscow = "Europe/Moscow"
1325
- Europe_Nicosia = "Europe/Nicosia"
1326
- Europe_Oslo = "Europe/Oslo"
1327
- Europe_Paris = "Europe/Paris"
1328
- Europe_Podgorica = "Europe/Podgorica"
1329
- Europe_Prague = "Europe/Prague"
1330
- Europe_Riga = "Europe/Riga"
1331
- Europe_Rome = "Europe/Rome"
1332
- Europe_Samara = "Europe/Samara"
1333
- Europe_San_Marino = "Europe/San_Marino"
1334
- Europe_Sarajevo = "Europe/Sarajevo"
1335
- Europe_Saratov = "Europe/Saratov"
1336
- Europe_Simferopol = "Europe/Simferopol"
1337
- Europe_Skopje = "Europe/Skopje"
1338
- Europe_Sofia = "Europe/Sofia"
1339
- Europe_Stockholm = "Europe/Stockholm"
1340
- Europe_Tallinn = "Europe/Tallinn"
1341
- Europe_Tirane = "Europe/Tirane"
1342
- Europe_Tiraspol = "Europe/Tiraspol"
1343
- Europe_Ulyanovsk = "Europe/Ulyanovsk"
1344
- Europe_Uzhgorod = "Europe/Uzhgorod"
1345
- Europe_Vaduz = "Europe/Vaduz"
1346
- Europe_Vatican = "Europe/Vatican"
1347
- Europe_Vienna = "Europe/Vienna"
1348
- Europe_Vilnius = "Europe/Vilnius"
1349
- Europe_Volgograd = "Europe/Volgograd"
1350
- Europe_Warsaw = "Europe/Warsaw"
1351
- Europe_Zagreb = "Europe/Zagreb"
1352
- Europe_Zaporozhye = "Europe/Zaporozhye"
1353
- Europe_Zurich = "Europe/Zurich"
1354
- GB = "GB"
1355
- GB_Eire = "GB-Eire"
1356
- GMT = "GMT"
1357
- GMT_0 = "GMT+0"
1358
- GMT_0_1 = "GMT-0"
1359
- GMT0 = "GMT0"
1360
- Greenwich = "Greenwich"
1361
- HST = "HST"
1362
- Hongkong = "Hongkong"
1363
- Iceland = "Iceland"
1364
- Indian_Antananarivo = "Indian/Antananarivo"
1365
- Indian_Chagos = "Indian/Chagos"
1366
- Indian_Christmas = "Indian/Christmas"
1367
- Indian_Cocos = "Indian/Cocos"
1368
- Indian_Comoro = "Indian/Comoro"
1369
- Indian_Kerguelen = "Indian/Kerguelen"
1370
- Indian_Mahe = "Indian/Mahe"
1371
- Indian_Maldives = "Indian/Maldives"
1372
- Indian_Mauritius = "Indian/Mauritius"
1373
- Indian_Mayotte = "Indian/Mayotte"
1374
- Indian_Reunion = "Indian/Reunion"
1375
- Iran = "Iran"
1376
- Israel = "Israel"
1377
- Jamaica = "Jamaica"
1378
- Japan = "Japan"
1379
- Kwajalein = "Kwajalein"
1380
- Libya = "Libya"
1381
- MET = "MET"
1382
- MST = "MST"
1383
- MST7MDT = "MST7MDT"
1384
- Mexico_BajaNorte = "Mexico/BajaNorte"
1385
- Mexico_BajaSur = "Mexico/BajaSur"
1386
- Mexico_General = "Mexico/General"
1387
- NZ = "NZ"
1388
- NZ_CHAT = "NZ-CHAT"
1389
- Navajo = "Navajo"
1390
- PRC = "PRC"
1391
- PST8PDT = "PST8PDT"
1392
- Pacific_Apia = "Pacific/Apia"
1393
- Pacific_Auckland = "Pacific/Auckland"
1394
- Pacific_Bougainville = "Pacific/Bougainville"
1395
- Pacific_Chatham = "Pacific/Chatham"
1396
- Pacific_Chuuk = "Pacific/Chuuk"
1397
- Pacific_Easter = "Pacific/Easter"
1398
- Pacific_Efate = "Pacific/Efate"
1399
- Pacific_Enderbury = "Pacific/Enderbury"
1400
- Pacific_Fakaofo = "Pacific/Fakaofo"
1401
- Pacific_Fiji = "Pacific/Fiji"
1402
- Pacific_Funafuti = "Pacific/Funafuti"
1403
- Pacific_Galapagos = "Pacific/Galapagos"
1404
- Pacific_Gambier = "Pacific/Gambier"
1405
- Pacific_Guadalcanal = "Pacific/Guadalcanal"
1406
- Pacific_Guam = "Pacific/Guam"
1407
- Pacific_Honolulu = "Pacific/Honolulu"
1408
- Pacific_Johnston = "Pacific/Johnston"
1409
- Pacific_Kanton = "Pacific/Kanton"
1410
- Pacific_Kiritimati = "Pacific/Kiritimati"
1411
- Pacific_Kosrae = "Pacific/Kosrae"
1412
- Pacific_Kwajalein = "Pacific/Kwajalein"
1413
- Pacific_Majuro = "Pacific/Majuro"
1414
- Pacific_Marquesas = "Pacific/Marquesas"
1415
- Pacific_Midway = "Pacific/Midway"
1416
- Pacific_Nauru = "Pacific/Nauru"
1417
- Pacific_Niue = "Pacific/Niue"
1418
- Pacific_Norfolk = "Pacific/Norfolk"
1419
- Pacific_Noumea = "Pacific/Noumea"
1420
- Pacific_Pago_Pago = "Pacific/Pago_Pago"
1421
- Pacific_Palau = "Pacific/Palau"
1422
- Pacific_Pitcairn = "Pacific/Pitcairn"
1423
- Pacific_Pohnpei = "Pacific/Pohnpei"
1424
- Pacific_Ponape = "Pacific/Ponape"
1425
- Pacific_Port_Moresby = "Pacific/Port_Moresby"
1426
- Pacific_Rarotonga = "Pacific/Rarotonga"
1427
- Pacific_Saipan = "Pacific/Saipan"
1428
- Pacific_Samoa = "Pacific/Samoa"
1429
- Pacific_Tahiti = "Pacific/Tahiti"
1430
- Pacific_Tarawa = "Pacific/Tarawa"
1431
- Pacific_Tongatapu = "Pacific/Tongatapu"
1432
- Pacific_Truk = "Pacific/Truk"
1433
- Pacific_Wake = "Pacific/Wake"
1434
- Pacific_Wallis = "Pacific/Wallis"
1435
- Pacific_Yap = "Pacific/Yap"
1436
- Poland = "Poland"
1437
- Portugal = "Portugal"
1438
- ROC = "ROC"
1439
- ROK = "ROK"
1440
- Singapore = "Singapore"
1441
- Turkey = "Turkey"
1442
- UCT = "UCT"
1443
- US_Alaska = "US/Alaska"
1444
- US_Aleutian = "US/Aleutian"
1445
- US_Arizona = "US/Arizona"
1446
- US_Central = "US/Central"
1447
- US_East_Indiana = "US/East-Indiana"
1448
- US_Eastern = "US/Eastern"
1449
- US_Hawaii = "US/Hawaii"
1450
- US_Indiana_Starke = "US/Indiana-Starke"
1451
- US_Michigan = "US/Michigan"
1452
- US_Mountain = "US/Mountain"
1453
- US_Pacific = "US/Pacific"
1454
- US_Samoa = "US/Samoa"
1455
- UTC = "UTC"
1456
- Universal = "Universal"
1457
- W_SU = "W-SU"
1458
- WET = "WET"
1459
- Zulu = "Zulu"
1460
-
1461
-
1462
1212
  AccountName = str
1463
1213
 
1464
1214
 
@@ -1466,7 +1216,7 @@ class OptionLike(Struct, omit_defaults=True):
1466
1216
  strike: Decimal
1467
1217
  expiration: Optional[datetime] = None
1468
1218
 
1469
- # below is a constructor that takes all field titles as arguments for convenience
1219
+ # Constructor that takes all field titles as arguments for convenience
1470
1220
  @classmethod
1471
1221
  def new(
1472
1222
  cls,
@@ -1485,7 +1235,7 @@ class OptionLike(Struct, omit_defaults=True):
1485
1235
  class EventContractSeriesInstance2(Struct, omit_defaults=True):
1486
1236
  OptionLike: OptionLike
1487
1237
 
1488
- # below is a constructor that takes all field titles as arguments for convenience
1238
+ # Constructor that takes all field titles as arguments for convenience
1489
1239
  @classmethod
1490
1240
  def new(
1491
1241
  cls,
@@ -1499,6 +1249,33 @@ class EventContractSeriesInstance2(Struct, omit_defaults=True):
1499
1249
  return f"EventContractSeriesInstance2(OptionLike={self.OptionLike})"
1500
1250
 
1501
1251
 
1252
+ class OptionsSeriesInstance(Struct, omit_defaults=True):
1253
+ """
1254
+ A specific option from a series.
1255
+ """
1256
+
1257
+ expiration: datetime
1258
+ put_or_call: PutOrCall
1259
+ strike: Decimal
1260
+
1261
+ # Constructor that takes all field titles as arguments for convenience
1262
+ @classmethod
1263
+ def new(
1264
+ cls,
1265
+ expiration: datetime,
1266
+ put_or_call: PutOrCall,
1267
+ strike: Decimal,
1268
+ ):
1269
+ return cls(
1270
+ expiration,
1271
+ put_or_call,
1272
+ strike,
1273
+ )
1274
+
1275
+ def __str__(self) -> str:
1276
+ return f"OptionsSeriesInstance(expiration={self.expiration},put_or_call={self.put_or_call},strike={self.strike})"
1277
+
1278
+
1502
1279
  class SpreadLeg(Struct, omit_defaults=True):
1503
1280
  product: str
1504
1281
  quantity: Annotated[
@@ -1511,7 +1288,7 @@ class SpreadLeg(Struct, omit_defaults=True):
1511
1288
  Some spreads have different ratios for their legs, like buy 1 A, sell 2 B, buy 1 C; We would represent that with quantities in the legs: 1, -2, 1
1512
1289
  """
1513
1290
 
1514
- # below is a constructor that takes all field titles as arguments for convenience
1291
+ # Constructor that takes all field titles as arguments for convenience
1515
1292
  @classmethod
1516
1293
  def new(
1517
1294
  cls,
@@ -1530,7 +1307,7 @@ class SpreadLeg(Struct, omit_defaults=True):
1530
1307
  class Outcome(Struct, omit_defaults=True):
1531
1308
  name: str
1532
1309
 
1533
- # below is a constructor that takes all field titles as arguments for convenience
1310
+ # Constructor that takes all field titles as arguments for convenience
1534
1311
  @classmethod
1535
1312
  def new(
1536
1313
  cls,
@@ -1544,11 +1321,6 @@ class Outcome(Struct, omit_defaults=True):
1544
1321
  return f"Outcome(name={self.name})"
1545
1322
 
1546
1323
 
1547
- class PutOrCall(str, Enum):
1548
- P = "P"
1549
- C = "C"
1550
-
1551
-
1552
1324
  class AberrantFill(Struct, omit_defaults=True):
1553
1325
  """
1554
1326
  Fills which we received but couldn't parse fully, return details best effort
@@ -1559,7 +1331,7 @@ class AberrantFill(Struct, omit_defaults=True):
1559
1331
  a: Optional[Annotated[Optional[str], Meta(title="account")]] = None
1560
1332
  atn: Optional[Annotated[Optional[int], Meta(title="recv_time_ns")]] = None
1561
1333
  ats: Optional[Annotated[Optional[int], Meta(title="recv_time")]] = None
1562
- d: Optional[Annotated[Optional[OrderDir], Meta(title="direction")]] = None
1334
+ d: Optional[Annotated[Optional[OrderDir], Meta(title="dir")]] = None
1563
1335
  f: Optional[Annotated[Optional[Decimal], Meta(title="fee")]] = None
1564
1336
  fu: Optional[Annotated[Optional[str], Meta(title="fee_currency")]] = None
1565
1337
  k: Optional[Annotated[Optional[FillKind], Meta(title="fill_kind")]] = None
@@ -1572,7 +1344,7 @@ class AberrantFill(Struct, omit_defaults=True):
1572
1344
  u: Optional[Annotated[Optional[UserId], Meta(title="trader")]] = None
1573
1345
  xid: Optional[Annotated[Optional[str], Meta(title="exchange_fill_id")]] = None
1574
1346
 
1575
- # below is a constructor that takes all field titles as arguments for convenience
1347
+ # Constructor that takes all field titles as arguments for convenience
1576
1348
  @classmethod
1577
1349
  def new(
1578
1350
  cls,
@@ -1581,7 +1353,7 @@ class AberrantFill(Struct, omit_defaults=True):
1581
1353
  account: Optional[str] = None,
1582
1354
  recv_time_ns: Optional[int] = None,
1583
1355
  recv_time: Optional[int] = None,
1584
- direction: Optional[OrderDir] = None,
1356
+ dir: Optional[OrderDir] = None,
1585
1357
  fee: Optional[Decimal] = None,
1586
1358
  fee_currency: Optional[str] = None,
1587
1359
  fill_kind: Optional[FillKind] = None,
@@ -1600,7 +1372,7 @@ class AberrantFill(Struct, omit_defaults=True):
1600
1372
  account,
1601
1373
  recv_time_ns,
1602
1374
  recv_time,
1603
- direction,
1375
+ dir,
1604
1376
  fee,
1605
1377
  fee_currency,
1606
1378
  fill_kind,
@@ -1615,7 +1387,7 @@ class AberrantFill(Struct, omit_defaults=True):
1615
1387
  )
1616
1388
 
1617
1389
  def __str__(self) -> str:
1618
- return f"AberrantFill(fill_id={self.id},execution_venue={self.x},account={self.a},recv_time_ns={self.atn},recv_time={self.ats},direction={self.d},fee={self.f},fee_currency={self.fu},fill_kind={self.k},order_id={self.oid},price={self.p},quantity={self.q},symbol={self.s},trade_time_ns={self.tn},trade_time={self.ts},trader={self.u},exchange_fill_id={self.xid})"
1390
+ return f"AberrantFill(fill_id={self.id},execution_venue={self.x},account={self.a},recv_time_ns={self.atn},recv_time={self.ats},dir={self.d},fee={self.f},fee_currency={self.fu},fill_kind={self.k},order_id={self.oid},price={self.p},quantity={self.q},symbol={self.s},trade_time_ns={self.tn},trade_time={self.ts},trader={self.u},exchange_fill_id={self.xid})"
1619
1391
 
1620
1392
  @property
1621
1393
  def fill_id(self) -> str:
@@ -1658,11 +1430,11 @@ class AberrantFill(Struct, omit_defaults=True):
1658
1430
  self.ats = value
1659
1431
 
1660
1432
  @property
1661
- def direction(self) -> Optional[OrderDir]:
1433
+ def dir(self) -> Optional[OrderDir]:
1662
1434
  return self.d
1663
1435
 
1664
- @direction.setter
1665
- def direction(self, value: Optional[OrderDir]) -> None:
1436
+ @dir.setter
1437
+ def dir(self, value: Optional[OrderDir]) -> None:
1666
1438
  self.d = value
1667
1439
 
1668
1440
  @property
@@ -1759,7 +1531,7 @@ class CancelReject(Struct, omit_defaults=True):
1759
1531
  xid: str
1760
1532
  rm: Optional[str] = None
1761
1533
 
1762
- # below is a constructor that takes all field titles as arguments for convenience
1534
+ # Constructor that takes all field titles as arguments for convenience
1763
1535
  @classmethod
1764
1536
  def new(
1765
1537
  cls,
@@ -1781,7 +1553,7 @@ class CptyLoginRequest(Struct, omit_defaults=True):
1781
1553
  account: str
1782
1554
  trader: UserId
1783
1555
 
1784
- # below is a constructor that takes all field titles as arguments for convenience
1556
+ # Constructor that takes all field titles as arguments for convenience
1785
1557
  @classmethod
1786
1558
  def new(
1787
1559
  cls,
@@ -1822,7 +1594,7 @@ class ExecutionInfo(Struct, omit_defaults=True):
1822
1594
  initial_margin: Optional[Decimal] = None
1823
1595
  maintenance_margin: Optional[Decimal] = None
1824
1596
 
1825
- # below is a constructor that takes all field titles as arguments for convenience
1597
+ # Constructor that takes all field titles as arguments for convenience
1826
1598
  @classmethod
1827
1599
  def new(
1828
1600
  cls,
@@ -1853,7 +1625,7 @@ class ExecutionInfo(Struct, omit_defaults=True):
1853
1625
 
1854
1626
 
1855
1627
  class Fill(Struct, omit_defaults=True):
1856
- d: Annotated[OrderDir, Meta(title="direction")]
1628
+ d: Annotated[OrderDir, Meta(title="dir")]
1857
1629
  id: Annotated[str, Meta(title="fill_id")]
1858
1630
  k: Annotated[FillKind, Meta(title="fill_kind")]
1859
1631
  p: Annotated[Decimal, Meta(title="price")]
@@ -1900,11 +1672,11 @@ class Fill(Struct, omit_defaults=True):
1900
1672
  u: Optional[Annotated[Optional[UserId], Meta(title="trader")]] = None
1901
1673
  xid: Optional[Annotated[Optional[str], Meta(title="exchange_fill_id")]] = None
1902
1674
 
1903
- # below is a constructor that takes all field titles as arguments for convenience
1675
+ # Constructor that takes all field titles as arguments for convenience
1904
1676
  @classmethod
1905
1677
  def new(
1906
1678
  cls,
1907
- direction: OrderDir,
1679
+ dir: OrderDir,
1908
1680
  fill_id: str,
1909
1681
  fill_kind: FillKind,
1910
1682
  price: Decimal,
@@ -1924,7 +1696,7 @@ class Fill(Struct, omit_defaults=True):
1924
1696
  exchange_fill_id: Optional[str] = None,
1925
1697
  ):
1926
1698
  return cls(
1927
- direction,
1699
+ dir,
1928
1700
  fill_id,
1929
1701
  fill_kind,
1930
1702
  price,
@@ -1945,14 +1717,14 @@ class Fill(Struct, omit_defaults=True):
1945
1717
  )
1946
1718
 
1947
1719
  def __str__(self) -> str:
1948
- return f"Fill(direction={self.d},fill_id={self.id},fill_kind={self.k},price={self.p},quantity={self.q},symbol={self.s},trade_time_ns={self.tn},trade_time={self.ts},execution_venue={self.x},account={self.a},is_taker={self.agg},recv_time_ns={self.atn},recv_time={self.ats},fee={self.f},fee_currency={self.fu},order_id={self.oid},trader={self.u},exchange_fill_id={self.xid})"
1720
+ return f"Fill(dir={self.d},fill_id={self.id},fill_kind={self.k},price={self.p},quantity={self.q},symbol={self.s},trade_time_ns={self.tn},trade_time={self.ts},execution_venue={self.x},account={self.a},is_taker={self.agg},recv_time_ns={self.atn},recv_time={self.ats},fee={self.f},fee_currency={self.fu},order_id={self.oid},trader={self.u},exchange_fill_id={self.xid})"
1949
1721
 
1950
1722
  @property
1951
- def direction(self) -> OrderDir:
1723
+ def dir(self) -> OrderDir:
1952
1724
  return self.d
1953
1725
 
1954
- @direction.setter
1955
- def direction(self, value: OrderDir) -> None:
1726
+ @dir.setter
1727
+ def dir(self, value: OrderDir) -> None:
1956
1728
  self.d = value
1957
1729
 
1958
1730
  @property
@@ -2092,11 +1864,90 @@ class Fill(Struct, omit_defaults=True):
2092
1864
  self.xid = value
2093
1865
 
2094
1866
 
1867
+ class OptionsContract(Struct, omit_defaults=True):
1868
+ expiration: date
1869
+ put_or_call: PutOrCall
1870
+ strike: Decimal
1871
+ ticker: Ticker
1872
+ underlying: str
1873
+ in_the_money: Optional[bool] = None
1874
+
1875
+ # Constructor that takes all field titles as arguments for convenience
1876
+ @classmethod
1877
+ def new(
1878
+ cls,
1879
+ expiration: date,
1880
+ put_or_call: PutOrCall,
1881
+ strike: Decimal,
1882
+ ticker: Ticker,
1883
+ underlying: str,
1884
+ in_the_money: Optional[bool] = None,
1885
+ ):
1886
+ return cls(
1887
+ expiration,
1888
+ put_or_call,
1889
+ strike,
1890
+ ticker,
1891
+ underlying,
1892
+ in_the_money,
1893
+ )
1894
+
1895
+ def __str__(self) -> str:
1896
+ return f"OptionsContract(expiration={self.expiration},put_or_call={self.put_or_call},strike={self.strike},ticker={self.ticker},underlying={self.underlying},in_the_money={self.in_the_money})"
1897
+
1898
+
1899
+ class OptionsGreeks(Struct, omit_defaults=True):
1900
+ delta: Decimal
1901
+ expiration: date
1902
+ gamma: Decimal
1903
+ implied_volatility: Decimal
1904
+ put_or_call: PutOrCall
1905
+ rho: Decimal
1906
+ strike: Decimal
1907
+ symbol: str
1908
+ theta: Decimal
1909
+ underlying: str
1910
+ vega: Decimal
1911
+
1912
+ # Constructor that takes all field titles as arguments for convenience
1913
+ @classmethod
1914
+ def new(
1915
+ cls,
1916
+ delta: Decimal,
1917
+ expiration: date,
1918
+ gamma: Decimal,
1919
+ implied_volatility: Decimal,
1920
+ put_or_call: PutOrCall,
1921
+ rho: Decimal,
1922
+ strike: Decimal,
1923
+ symbol: str,
1924
+ theta: Decimal,
1925
+ underlying: str,
1926
+ vega: Decimal,
1927
+ ):
1928
+ return cls(
1929
+ delta,
1930
+ expiration,
1931
+ gamma,
1932
+ implied_volatility,
1933
+ put_or_call,
1934
+ rho,
1935
+ strike,
1936
+ symbol,
1937
+ theta,
1938
+ underlying,
1939
+ vega,
1940
+ )
1941
+
1942
+ def __str__(self) -> str:
1943
+ return f"OptionsGreeks(delta={self.delta},expiration={self.expiration},gamma={self.gamma},implied_volatility={self.implied_volatility},put_or_call={self.put_or_call},rho={self.rho},strike={self.strike},symbol={self.symbol},theta={self.theta},underlying={self.underlying},vega={self.vega})"
1944
+
1945
+
2095
1946
  class OptionsSeriesInfo(Struct, omit_defaults=True):
2096
1947
  derivative_kind: DerivativeKind
2097
1948
  exercise_type: OptionsExerciseType
2098
1949
  expiration_time_of_day: time
2099
- expiration_time_zone: TimeZone
1950
+ expiration_time_zone: str
2100
1951
  is_cash_settled: bool
2101
1952
  multiplier: Decimal
2102
1953
  options_series: str
@@ -2105,14 +1956,14 @@ class OptionsSeriesInfo(Struct, omit_defaults=True):
2105
1956
  underlying: str
2106
1957
  venue_discriminant: Optional[str] = None
2107
1958
 
2108
- # below is a constructor that takes all field titles as arguments for convenience
1959
+ # Constructor that takes all field titles as arguments for convenience
2109
1960
  @classmethod
2110
1961
  def new(
2111
1962
  cls,
2112
1963
  derivative_kind: DerivativeKind,
2113
1964
  exercise_type: OptionsExerciseType,
2114
1965
  expiration_time_of_day: time,
2115
- expiration_time_zone: TimeZone,
1966
+ expiration_time_zone: str,
2116
1967
  is_cash_settled: bool,
2117
1968
  multiplier: Decimal,
2118
1969
  options_series: str,
@@ -2143,7 +1994,7 @@ class OrderAck(Struct, omit_defaults=True):
2143
1994
  id: Annotated[OrderId, Meta(title="order_id")]
2144
1995
  eid: Optional[Annotated[Optional[str], Meta(title="exchange_order_id")]] = None
2145
1996
 
2146
- # below is a constructor that takes all field titles as arguments for convenience
1997
+ # Constructor that takes all field titles as arguments for convenience
2147
1998
  @classmethod
2148
1999
  def new(
2149
2000
  cls,
@@ -2179,7 +2030,7 @@ class OrderCanceled(Struct, omit_defaults=True):
2179
2030
  id: OrderId
2180
2031
  xid: Optional[str] = None
2181
2032
 
2182
- # below is a constructor that takes all field titles as arguments for convenience
2033
+ # Constructor that takes all field titles as arguments for convenience
2183
2034
  @classmethod
2184
2035
  def new(
2185
2036
  cls,
@@ -2199,7 +2050,7 @@ class OrderCanceling(Struct, omit_defaults=True):
2199
2050
  id: OrderId
2200
2051
  xid: Optional[str] = None
2201
2052
 
2202
- # below is a constructor that takes all field titles as arguments for convenience
2053
+ # Constructor that takes all field titles as arguments for convenience
2203
2054
  @classmethod
2204
2055
  def new(
2205
2056
  cls,
@@ -2217,25 +2068,41 @@ class OrderCanceling(Struct, omit_defaults=True):
2217
2068
 
2218
2069
  class OrderReject(Struct, omit_defaults=True):
2219
2070
  id: OrderId
2220
- r: OrderRejectReason
2221
- rm: Optional[str] = None
2071
+ r: Annotated[OrderRejectReason, Meta(title="reject_reason")]
2072
+ rm: Optional[Annotated[Optional[str], Meta(title="message")]] = None
2222
2073
 
2223
- # below is a constructor that takes all field titles as arguments for convenience
2074
+ # Constructor that takes all field titles as arguments for convenience
2224
2075
  @classmethod
2225
2076
  def new(
2226
2077
  cls,
2227
2078
  id: OrderId,
2228
- r: OrderRejectReason,
2229
- rm: Optional[str] = None,
2079
+ reject_reason: OrderRejectReason,
2080
+ message: Optional[str] = None,
2230
2081
  ):
2231
2082
  return cls(
2232
2083
  id,
2233
- r,
2234
- rm,
2084
+ reject_reason,
2085
+ message,
2235
2086
  )
2236
2087
 
2237
2088
  def __str__(self) -> str:
2238
- return f"OrderReject(id={self.id},r={self.r},rm={self.rm})"
2089
+ return f"OrderReject(id={self.id},reject_reason={self.r},message={self.rm})"
2090
+
2091
+ @property
2092
+ def reject_reason(self) -> OrderRejectReason:
2093
+ return self.r
2094
+
2095
+ @reject_reason.setter
2096
+ def reject_reason(self, value: OrderRejectReason) -> None:
2097
+ self.r = value
2098
+
2099
+ @property
2100
+ def message(self) -> Optional[str]:
2101
+ return self.rm
2102
+
2103
+ @message.setter
2104
+ def message(self, value: Optional[str]) -> None:
2105
+ self.rm = value
2239
2106
 
2240
2107
 
2241
2108
  class SnapshotOrUpdateForAliasKindAndSnapshotOrUpdateForStringAndString1(
@@ -2243,7 +2110,7 @@ class SnapshotOrUpdateForAliasKindAndSnapshotOrUpdateForStringAndString1(
2243
2110
  ):
2244
2111
  snapshot: Dict[str, SnapshotOrUpdateForStringAndString]
2245
2112
 
2246
- # below is a constructor that takes all field titles as arguments for convenience
2113
+ # Constructor that takes all field titles as arguments for convenience
2247
2114
  @classmethod
2248
2115
  def new(
2249
2116
  cls,
@@ -2265,7 +2132,7 @@ class SnapshotOrUpdateForAliasKindAndSnapshotOrUpdateForStringAndString2(
2265
2132
  ):
2266
2133
  updates: List[Update]
2267
2134
 
2268
- # below is a constructor that takes all field titles as arguments for convenience
2135
+ # Constructor that takes all field titles as arguments for convenience
2269
2136
  @classmethod
2270
2137
  def new(
2271
2138
  cls,
@@ -2288,7 +2155,7 @@ SnapshotOrUpdateForAliasKindAndSnapshotOrUpdateForStringAndString = Union[
2288
2155
  class SnapshotOrUpdateForStringAndOptionsSeriesInfo1(Struct, omit_defaults=True):
2289
2156
  snapshot: Dict[str, OptionsSeriesInfo]
2290
2157
 
2291
- # below is a constructor that takes all field titles as arguments for convenience
2158
+ # Constructor that takes all field titles as arguments for convenience
2292
2159
  @classmethod
2293
2160
  def new(
2294
2161
  cls,
@@ -2310,7 +2177,7 @@ Update1 = List[Union[str, Optional[OptionsSeriesInfo]]]
2310
2177
  class SnapshotOrUpdateForStringAndOptionsSeriesInfo2(Struct, omit_defaults=True):
2311
2178
  updates: List[Update1]
2312
2179
 
2313
- # below is a constructor that takes all field titles as arguments for convenience
2180
+ # Constructor that takes all field titles as arguments for convenience
2314
2181
  @classmethod
2315
2182
  def new(
2316
2183
  cls,
@@ -2330,49 +2197,58 @@ SnapshotOrUpdateForStringAndOptionsSeriesInfo = Union[
2330
2197
  ]
2331
2198
 
2332
2199
 
2333
- class TwapParams(Struct, omit_defaults=True):
2334
- dir: OrderDir
2335
- end_time: datetime
2336
- execution_venue: str
2337
- interval: HumanDuration
2338
- quantity: Decimal
2339
- reject_lockout: HumanDuration
2340
- symbol: str
2341
- take_through_frac: Optional[Decimal] = None
2200
+ class SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo1(
2201
+ Struct
2202
+ ):
2203
+ snapshot: Dict[str, SnapshotOrUpdateForStringAndProductCatalogInfo]
2342
2204
 
2343
- # below is a constructor that takes all field titles as arguments for convenience
2205
+ # Constructor that takes all field titles as arguments for convenience
2344
2206
  @classmethod
2345
2207
  def new(
2346
2208
  cls,
2347
- dir: OrderDir,
2348
- end_time: datetime,
2349
- execution_venue: str,
2350
- interval: HumanDuration,
2351
- quantity: Decimal,
2352
- reject_lockout: HumanDuration,
2353
- symbol: str,
2354
- take_through_frac: Optional[Decimal] = None,
2209
+ snapshot: Dict[str, SnapshotOrUpdateForStringAndProductCatalogInfo],
2355
2210
  ):
2356
2211
  return cls(
2357
- dir,
2358
- end_time,
2359
- execution_venue,
2360
- interval,
2361
- quantity,
2362
- reject_lockout,
2363
- symbol,
2364
- take_through_frac,
2212
+ snapshot,
2213
+ )
2214
+
2215
+ def __str__(self) -> str:
2216
+ return f"SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo1(snapshot={self.snapshot})"
2217
+
2218
+
2219
+ Update4 = List[Union[str, Optional[SnapshotOrUpdateForStringAndProductCatalogInfo]]]
2220
+
2221
+
2222
+ class SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo2(
2223
+ Struct
2224
+ ):
2225
+ updates: List[Update4]
2226
+
2227
+ # Constructor that takes all field titles as arguments for convenience
2228
+ @classmethod
2229
+ def new(
2230
+ cls,
2231
+ updates: List[Update4],
2232
+ ):
2233
+ return cls(
2234
+ updates,
2365
2235
  )
2366
2236
 
2367
2237
  def __str__(self) -> str:
2368
- return f"TwapParams(dir={self.dir},end_time={self.end_time},execution_venue={self.execution_venue},interval={self.interval},quantity={self.quantity},reject_lockout={self.reject_lockout},symbol={self.symbol},take_through_frac={self.take_through_frac})"
2238
+ return f"SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo2(updates={self.updates})"
2239
+
2240
+
2241
+ SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo = Union[
2242
+ SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo1,
2243
+ SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo2,
2244
+ ]
2369
2245
 
2370
2246
 
2371
2247
  class Account(Struct, omit_defaults=True):
2372
2248
  id: str
2373
2249
  name: AccountName
2374
2250
 
2375
- # below is a constructor that takes all field titles as arguments for convenience
2251
+ # Constructor that takes all field titles as arguments for convenience
2376
2252
  @classmethod
2377
2253
  def new(
2378
2254
  cls,
@@ -2392,7 +2268,7 @@ class FutureSpread(Struct, omit_defaults=True):
2392
2268
  legs: List[SpreadLeg]
2393
2269
  product_type: Literal["FutureSpread"]
2394
2270
 
2395
- # below is a constructor that takes all field titles as arguments for convenience
2271
+ # Constructor that takes all field titles as arguments for convenience
2396
2272
  @classmethod
2397
2273
  def new(
2398
2274
  cls,
@@ -2408,10 +2284,33 @@ class FutureSpread(Struct, omit_defaults=True):
2408
2284
  return f"FutureSpread(legs={self.legs},product_type={self.product_type})"
2409
2285
 
2410
2286
 
2287
+ class Option(Struct, omit_defaults=True):
2288
+ instance: OptionsSeriesInstance
2289
+ product_type: Literal["Option"]
2290
+ series: str
2291
+
2292
+ # Constructor that takes all field titles as arguments for convenience
2293
+ @classmethod
2294
+ def new(
2295
+ cls,
2296
+ instance: OptionsSeriesInstance,
2297
+ product_type: Literal["Option"],
2298
+ series: str,
2299
+ ):
2300
+ return cls(
2301
+ instance,
2302
+ product_type,
2303
+ series,
2304
+ )
2305
+
2306
+ def __str__(self) -> str:
2307
+ return f"Option(instance={self.instance},product_type={self.product_type},series={self.series})"
2308
+
2309
+
2411
2310
  class SnapshotOrUpdateForStringAndExecutionInfo1(Struct, omit_defaults=True):
2412
2311
  snapshot: Dict[str, ExecutionInfo]
2413
2312
 
2414
- # below is a constructor that takes all field titles as arguments for convenience
2313
+ # Constructor that takes all field titles as arguments for convenience
2415
2314
  @classmethod
2416
2315
  def new(
2417
2316
  cls,
@@ -2425,17 +2324,17 @@ class SnapshotOrUpdateForStringAndExecutionInfo1(Struct, omit_defaults=True):
2425
2324
  return f"SnapshotOrUpdateForStringAndExecutionInfo1(snapshot={self.snapshot})"
2426
2325
 
2427
2326
 
2428
- Update4 = List[Union[str, Optional[ExecutionInfo]]]
2327
+ Update5 = List[Union[str, Optional[ExecutionInfo]]]
2429
2328
 
2430
2329
 
2431
2330
  class SnapshotOrUpdateForStringAndExecutionInfo2(Struct, omit_defaults=True):
2432
- updates: List[Update4]
2331
+ updates: List[Update5]
2433
2332
 
2434
- # below is a constructor that takes all field titles as arguments for convenience
2333
+ # Constructor that takes all field titles as arguments for convenience
2435
2334
  @classmethod
2436
2335
  def new(
2437
2336
  cls,
2438
- updates: List[Update4],
2337
+ updates: List[Update5],
2439
2338
  ):
2440
2339
  return cls(
2441
2340
  updates,
@@ -2454,7 +2353,7 @@ SnapshotOrUpdateForStringAndExecutionInfo = Union[
2454
2353
  class Enumerated(Struct, omit_defaults=True):
2455
2354
  outcome: Outcome
2456
2355
 
2457
- # below is a constructor that takes all field titles as arguments for convenience
2356
+ # Constructor that takes all field titles as arguments for convenience
2458
2357
  @classmethod
2459
2358
  def new(
2460
2359
  cls,
@@ -2471,7 +2370,7 @@ class Enumerated(Struct, omit_defaults=True):
2471
2370
  class EventContractSeriesInstance1(Struct, omit_defaults=True):
2472
2371
  Enumerated: Enumerated
2473
2372
 
2474
- # below is a constructor that takes all field titles as arguments for convenience
2373
+ # Constructor that takes all field titles as arguments for convenience
2475
2374
  @classmethod
2476
2375
  def new(
2477
2376
  cls,
@@ -2490,39 +2389,12 @@ EventContractSeriesInstance = Union[
2490
2389
  ]
2491
2390
 
2492
2391
 
2493
- class OptionsSeriesInstance(Struct, omit_defaults=True):
2494
- """
2495
- A specific option from a series.
2496
- """
2497
-
2498
- expiration: datetime
2499
- put_or_call: PutOrCall
2500
- strike: Decimal
2501
-
2502
- # below is a constructor that takes all field titles as arguments for convenience
2503
- @classmethod
2504
- def new(
2505
- cls,
2506
- expiration: datetime,
2507
- put_or_call: PutOrCall,
2508
- strike: Decimal,
2509
- ):
2510
- return cls(
2511
- expiration,
2512
- put_or_call,
2513
- strike,
2514
- )
2515
-
2516
- def __str__(self) -> str:
2517
- return f"OptionsSeriesInstance(expiration={self.expiration},put_or_call={self.put_or_call},strike={self.strike})"
2518
-
2519
-
2520
2392
  class AccountWithPermissions(Struct, omit_defaults=True):
2521
2393
  account: Account
2522
2394
  permissions: AccountPermissions
2523
2395
  trader: UserId
2524
2396
 
2525
- # below is a constructor that takes all field titles as arguments for convenience
2397
+ # Constructor that takes all field titles as arguments for convenience
2526
2398
  @classmethod
2527
2399
  def new(
2528
2400
  cls,
@@ -2545,7 +2417,7 @@ class SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndExecutionInfo1(
2545
2417
  ):
2546
2418
  snapshot: Dict[str, SnapshotOrUpdateForStringAndExecutionInfo]
2547
2419
 
2548
- # below is a constructor that takes all field titles as arguments for convenience
2420
+ # Constructor that takes all field titles as arguments for convenience
2549
2421
  @classmethod
2550
2422
  def new(
2551
2423
  cls,
@@ -2567,7 +2439,7 @@ class SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndExecutionInfo2(
2567
2439
  ):
2568
2440
  updates: List[Update3]
2569
2441
 
2570
- # below is a constructor that takes all field titles as arguments for convenience
2442
+ # Constructor that takes all field titles as arguments for convenience
2571
2443
  @classmethod
2572
2444
  def new(
2573
2445
  cls,
@@ -2587,35 +2459,12 @@ SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndExecutionInfo = Union[
2587
2459
  ]
2588
2460
 
2589
2461
 
2590
- class Option(Struct, omit_defaults=True):
2591
- instance: OptionsSeriesInstance
2592
- product_type: Literal["Option"]
2593
- series: str
2594
-
2595
- # below is a constructor that takes all field titles as arguments for convenience
2596
- @classmethod
2597
- def new(
2598
- cls,
2599
- instance: OptionsSeriesInstance,
2600
- product_type: Literal["Option"],
2601
- series: str,
2602
- ):
2603
- return cls(
2604
- instance,
2605
- product_type,
2606
- series,
2607
- )
2608
-
2609
- def __str__(self) -> str:
2610
- return f"Option(instance={self.instance},product_type={self.product_type},series={self.series})"
2611
-
2612
-
2613
2462
  class EventContract(Struct, omit_defaults=True):
2614
2463
  instance: EventContractSeriesInstance
2615
2464
  product_type: Literal["EventContract"]
2616
2465
  series: str
2617
2466
 
2618
- # below is a constructor that takes all field titles as arguments for convenience
2467
+ # Constructor that takes all field titles as arguments for convenience
2619
2468
  @classmethod
2620
2469
  def new(
2621
2470
  cls,
@@ -2653,7 +2502,7 @@ class ProductInfo(Struct, omit_defaults=True):
2653
2502
  price_display_format: Optional[PriceDisplayFormat] = None
2654
2503
  primary_venue: Optional[str] = None
2655
2504
 
2656
- # below is a constructor that takes all field titles as arguments for convenience
2505
+ # Constructor that takes all field titles as arguments for convenience
2657
2506
  @classmethod
2658
2507
  def new(
2659
2508
  cls,
@@ -2674,7 +2523,7 @@ class ProductInfo(Struct, omit_defaults=True):
2674
2523
  class SnapshotOrUpdateForStringAndProductInfo1(Struct, omit_defaults=True):
2675
2524
  snapshot: Dict[str, ProductInfo]
2676
2525
 
2677
- # below is a constructor that takes all field titles as arguments for convenience
2526
+ # Constructor that takes all field titles as arguments for convenience
2678
2527
  @classmethod
2679
2528
  def new(
2680
2529
  cls,
@@ -2694,7 +2543,7 @@ Update2 = List[Union[str, Optional[ProductInfo]]]
2694
2543
  class SnapshotOrUpdateForStringAndProductInfo2(Struct, omit_defaults=True):
2695
2544
  updates: List[Update2]
2696
2545
 
2697
- # below is a constructor that takes all field titles as arguments for convenience
2546
+ # Constructor that takes all field titles as arguments for convenience
2698
2547
  @classmethod
2699
2548
  def new(
2700
2549
  cls,