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: Folio/AccountSummaryRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Folio.AccountSummary import AccountSummary
5
+ from architect_py.grpc.models.Folio.AccountSummary import AccountSummary
6
6
 
7
7
  from msgspec import Struct
8
8
 
@@ -12,7 +12,7 @@ from .. import definitions
12
12
  class AccountSummaryRequest(Struct, omit_defaults=True):
13
13
  account: definitions.AccountIdOrName
14
14
 
15
- # below is a constructor that takes all field titles as arguments for convenience
15
+ # Constructor that takes all field titles as arguments for convenience
16
16
  @classmethod
17
17
  def new(
18
18
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Folio/HistoricalFillsRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Folio.HistoricalFillsResponse import (
5
+ from architect_py.grpc.models.Folio.HistoricalFillsResponse import (
6
6
  HistoricalFillsResponse,
7
7
  )
8
8
 
@@ -18,17 +18,18 @@ class HistoricalFillsRequest(Struct, omit_defaults=True):
18
18
  account: Optional[definitions.AccountIdOrName] = None
19
19
  from_inclusive: Optional[datetime] = None
20
20
  limit: Optional[
21
- Annotated[Optional[int], Meta(description="Default maximum is 1000.", ge=0)]
21
+ Annotated[Optional[int], Meta(description="Default maximum is 1000.")]
22
22
  ] = None
23
23
  """
24
24
  Default maximum is 1000.
25
25
  """
26
26
  order_id: Optional[definitions.OrderId] = None
27
+ symbol: Optional[str] = None
27
28
  to_exclusive: Optional[datetime] = None
28
29
  trader: Optional[definitions.TraderIdOrEmail] = None
29
30
  venue: Optional[str] = None
30
31
 
31
- # below is a constructor that takes all field titles as arguments for convenience
32
+ # Constructor that takes all field titles as arguments for convenience
32
33
  @classmethod
33
34
  def new(
34
35
  cls,
@@ -36,6 +37,7 @@ class HistoricalFillsRequest(Struct, omit_defaults=True):
36
37
  from_inclusive: Optional[datetime] = None,
37
38
  limit: Optional[int] = None,
38
39
  order_id: Optional[definitions.OrderId] = None,
40
+ symbol: Optional[str] = None,
39
41
  to_exclusive: Optional[datetime] = None,
40
42
  trader: Optional[definitions.TraderIdOrEmail] = None,
41
43
  venue: Optional[str] = None,
@@ -45,13 +47,14 @@ class HistoricalFillsRequest(Struct, omit_defaults=True):
45
47
  from_inclusive,
46
48
  limit,
47
49
  order_id,
50
+ symbol,
48
51
  to_exclusive,
49
52
  trader,
50
53
  venue,
51
54
  )
52
55
 
53
56
  def __str__(self) -> str:
54
- return f"HistoricalFillsRequest(account={self.account},from_inclusive={self.from_inclusive},limit={self.limit},order_id={self.order_id},to_exclusive={self.to_exclusive},trader={self.trader},venue={self.venue})"
57
+ return f"HistoricalFillsRequest(account={self.account},from_inclusive={self.from_inclusive},limit={self.limit},order_id={self.order_id},symbol={self.symbol},to_exclusive={self.to_exclusive},trader={self.trader},venue={self.venue})"
55
58
 
56
59
  @staticmethod
57
60
  def get_response_type():
@@ -14,7 +14,7 @@ class HistoricalFillsResponse(Struct, omit_defaults=True):
14
14
  aberrant_fills: List[definitions.AberrantFill]
15
15
  fills: List[definitions.Fill]
16
16
 
17
- # below is a constructor that takes all field titles as arguments for convenience
17
+ # Constructor that takes all field titles as arguments for convenience
18
18
  @classmethod
19
19
  def new(
20
20
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Folio/HistoricalOrdersRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Folio.HistoricalOrdersResponse import (
5
+ from architect_py.grpc.models.Folio.HistoricalOrdersResponse import (
6
6
  HistoricalOrdersResponse,
7
7
  )
8
8
 
@@ -18,7 +18,7 @@ class HistoricalOrdersRequest(Struct, omit_defaults=True):
18
18
  account: Optional[definitions.AccountIdOrName] = None
19
19
  from_inclusive: Optional[datetime] = None
20
20
  limit: Optional[
21
- Annotated[Optional[int], Meta(description="Default maximum is 1000.", ge=0)]
21
+ Annotated[Optional[int], Meta(description="Default maximum is 1000.")]
22
22
  ] = None
23
23
  """
24
24
  Default maximum is 1000.
@@ -37,7 +37,7 @@ class HistoricalOrdersRequest(Struct, omit_defaults=True):
37
37
  trader: Optional[definitions.TraderIdOrEmail] = None
38
38
  venue: Optional[str] = None
39
39
 
40
- # below is a constructor that takes all field titles as arguments for convenience
40
+ # Constructor that takes all field titles as arguments for convenience
41
41
  @classmethod
42
42
  def new(
43
43
  cls,
@@ -13,7 +13,7 @@ from ..Oms.Order import Order
13
13
  class HistoricalOrdersResponse(Struct, omit_defaults=True):
14
14
  orders: List[Order]
15
15
 
16
- # below is a constructor that takes all field titles as arguments for convenience
16
+ # Constructor that takes all field titles as arguments for convenience
17
17
  @classmethod
18
18
  def new(
19
19
  cls,
@@ -0,0 +1,2 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: schemas
@@ -2,7 +2,7 @@
2
2
  # filename: Health/HealthCheckRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Health.HealthCheckResponse import HealthCheckResponse
5
+ from architect_py.grpc.models.Health.HealthCheckResponse import HealthCheckResponse
6
6
 
7
7
  from typing import Annotated, Optional
8
8
 
@@ -25,7 +25,7 @@ class HealthCheckRequest(Struct, omit_defaults=True):
25
25
  Generally, this will only be set when querying the API gateway. It's not recommended to rely on internal subservice names being stable.
26
26
  """
27
27
 
28
- # below is a constructor that takes all field titles as arguments for convenience
28
+ # Constructor that takes all field titles as arguments for convenience
29
29
  @classmethod
30
30
  def new(
31
31
  cls,
@@ -14,7 +14,7 @@ class HealthCheckResponse(Struct, omit_defaults=True):
14
14
  status: definitions.HealthStatus
15
15
  metrics: Optional[Dict[str, Any]] = None
16
16
 
17
- # below is a constructor that takes all field titles as arguments for convenience
17
+ # Constructor that takes all field titles as arguments for convenience
18
18
  @classmethod
19
19
  def new(
20
20
  cls,
@@ -0,0 +1,2 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: schemas
@@ -37,7 +37,7 @@ class Candle(Struct, omit_defaults=True):
37
37
  mo: Optional[Annotated[Optional[Decimal], Meta(title="mid_open")]] = None
38
38
  o: Optional[Annotated[Optional[Decimal], Meta(title="open")]] = None
39
39
 
40
- # below is a constructor that takes all field titles as arguments for convenience
40
+ # Constructor that takes all field titles as arguments for convenience
41
41
  @classmethod
42
42
  def new(
43
43
  cls,
@@ -2,11 +2,11 @@
2
2
  # filename: Marketdata/HistoricalCandlesRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.HistoricalCandlesResponse import (
5
+ from architect_py.grpc.models.Marketdata.HistoricalCandlesResponse import (
6
6
  HistoricalCandlesResponse,
7
7
  )
8
8
 
9
- from datetime import datetime
9
+ from typing import Optional
10
10
 
11
11
  from msgspec import Struct
12
12
 
@@ -15,28 +15,31 @@ from .. import definitions
15
15
 
16
16
  class HistoricalCandlesRequest(Struct, omit_defaults=True):
17
17
  candle_width: definitions.CandleWidth
18
- end_date: datetime
19
- start_date: datetime
18
+ end_date: definitions.DateTimeOrUtc
19
+ start_date: definitions.DateTimeOrUtc
20
20
  symbol: str
21
+ venue: Optional[str] = None
21
22
 
22
- # below is a constructor that takes all field titles as arguments for convenience
23
+ # Constructor that takes all field titles as arguments for convenience
23
24
  @classmethod
24
25
  def new(
25
26
  cls,
26
27
  candle_width: definitions.CandleWidth,
27
- end_date: datetime,
28
- start_date: datetime,
28
+ end_date: definitions.DateTimeOrUtc,
29
+ start_date: definitions.DateTimeOrUtc,
29
30
  symbol: str,
31
+ venue: Optional[str] = None,
30
32
  ):
31
33
  return cls(
32
34
  candle_width,
33
35
  end_date,
34
36
  start_date,
35
37
  symbol,
38
+ venue,
36
39
  )
37
40
 
38
41
  def __str__(self) -> str:
39
- return f"HistoricalCandlesRequest(candle_width={self.candle_width},end_date={self.end_date},start_date={self.start_date},symbol={self.symbol})"
42
+ return f"HistoricalCandlesRequest(candle_width={self.candle_width},end_date={self.end_date},start_date={self.start_date},symbol={self.symbol},venue={self.venue})"
40
43
 
41
44
  @staticmethod
42
45
  def get_response_type():
@@ -13,7 +13,7 @@ from .Candle import Candle
13
13
  class HistoricalCandlesResponse(Struct, omit_defaults=True):
14
14
  candles: List[Candle]
15
15
 
16
- # below is a constructor that takes all field titles as arguments for convenience
16
+ # Constructor that takes all field titles as arguments for convenience
17
17
  @classmethod
18
18
  def new(
19
19
  cls,
@@ -14,10 +14,37 @@ class L1BookSnapshot(Struct, omit_defaults=True):
14
14
  s: Annotated[str, Meta(title="symbol")]
15
15
  tn: Annotated[int, Meta(ge=0, title="timestamp_ns")]
16
16
  ts: Annotated[int, Meta(title="timestamp")]
17
- a: Optional[Annotated[List[Decimal], Meta(title="best_ask")]] = None
18
- b: Optional[Annotated[List[Decimal], Meta(title="best_bid")]] = None
19
-
20
- # below is a constructor that takes all field titles as arguments for convenience
17
+ a: Optional[
18
+ Annotated[
19
+ List[Decimal], Meta(description="(price, quantity)", title="best_ask")
20
+ ]
21
+ ] = None
22
+ """
23
+ (price, quantity)
24
+ """
25
+ b: Optional[
26
+ Annotated[
27
+ List[Decimal], Meta(description="(price, quantity)", title="best_bid")
28
+ ]
29
+ ] = None
30
+ """
31
+ (price, quantity)
32
+ """
33
+ rt: Optional[
34
+ Annotated[
35
+ Optional[int],
36
+ Meta(
37
+ description="Time that Architect feed received the message; only set if streaming from direct L1 feeds",
38
+ title="recv_time",
39
+ ),
40
+ ]
41
+ ] = None
42
+ """
43
+ Time that Architect feed received the message; only set if streaming from direct L1 feeds
44
+ """
45
+ rtn: Optional[Annotated[Optional[int], Meta(title="recv_time_ns")]] = None
46
+
47
+ # Constructor that takes all field titles as arguments for convenience
21
48
  @classmethod
22
49
  def new(
23
50
  cls,
@@ -26,6 +53,8 @@ class L1BookSnapshot(Struct, omit_defaults=True):
26
53
  timestamp: int,
27
54
  best_ask: Optional[List[Decimal]] = None,
28
55
  best_bid: Optional[List[Decimal]] = None,
56
+ recv_time: Optional[int] = None,
57
+ recv_time_ns: Optional[int] = None,
29
58
  ):
30
59
  return cls(
31
60
  symbol,
@@ -33,10 +62,12 @@ class L1BookSnapshot(Struct, omit_defaults=True):
33
62
  timestamp,
34
63
  best_ask,
35
64
  best_bid,
65
+ recv_time,
66
+ recv_time_ns,
36
67
  )
37
68
 
38
69
  def __str__(self) -> str:
39
- return f"L1BookSnapshot(symbol={self.s},timestamp_ns={self.tn},timestamp={self.ts},best_ask={self.a},best_bid={self.b})"
70
+ return f"L1BookSnapshot(symbol={self.s},timestamp_ns={self.tn},timestamp={self.ts},best_ask={self.a},best_bid={self.b},recv_time={self.rt},recv_time_ns={self.rtn})"
40
71
 
41
72
  @property
42
73
  def symbol(self) -> str:
@@ -85,3 +116,19 @@ class L1BookSnapshot(Struct, omit_defaults=True):
85
116
  @best_bid.setter
86
117
  def best_bid(self, value: Optional[List[Decimal]]) -> None:
87
118
  self.b = value
119
+
120
+ @property
121
+ def recv_time(self) -> Optional[int]:
122
+ return self.rt
123
+
124
+ @recv_time.setter
125
+ def recv_time(self, value: Optional[int]) -> None:
126
+ self.rt = value
127
+
128
+ @property
129
+ def recv_time_ns(self) -> Optional[int]:
130
+ return self.rtn
131
+
132
+ @recv_time_ns.setter
133
+ def recv_time_ns(self, value: Optional[int]) -> None:
134
+ self.rtn = value
@@ -2,26 +2,31 @@
2
2
  # filename: Marketdata/L1BookSnapshotRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.L1BookSnapshot import L1BookSnapshot
5
+ from architect_py.grpc.models.Marketdata.L1BookSnapshot import L1BookSnapshot
6
+
7
+ from typing import Optional
6
8
 
7
9
  from msgspec import Struct
8
10
 
9
11
 
10
12
  class L1BookSnapshotRequest(Struct, omit_defaults=True):
11
13
  symbol: str
14
+ venue: Optional[str] = None
12
15
 
13
- # below is a constructor that takes all field titles as arguments for convenience
16
+ # Constructor that takes all field titles as arguments for convenience
14
17
  @classmethod
15
18
  def new(
16
19
  cls,
17
20
  symbol: str,
21
+ venue: Optional[str] = None,
18
22
  ):
19
23
  return cls(
20
24
  symbol,
25
+ venue,
21
26
  )
22
27
 
23
28
  def __str__(self) -> str:
24
- return f"L1BookSnapshotRequest(symbol={self.symbol})"
29
+ return f"L1BookSnapshotRequest(symbol={self.symbol},venue={self.venue})"
25
30
 
26
31
  @staticmethod
27
32
  def get_response_type():
@@ -2,7 +2,7 @@
2
2
  # filename: Marketdata/L1BookSnapshotsRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.ArrayOfL1BookSnapshot import (
5
+ from architect_py.grpc.models.Marketdata.ArrayOfL1BookSnapshot import (
6
6
  ArrayOfL1BookSnapshot,
7
7
  L1BookSnapshot,
8
8
  )
@@ -14,19 +14,22 @@ from msgspec import Struct
14
14
 
15
15
  class L1BookSnapshotsRequest(Struct, omit_defaults=True):
16
16
  symbols: Optional[List[str]] = None
17
+ venue: Optional[str] = None
17
18
 
18
- # below is a constructor that takes all field titles as arguments for convenience
19
+ # Constructor that takes all field titles as arguments for convenience
19
20
  @classmethod
20
21
  def new(
21
22
  cls,
22
23
  symbols: Optional[List[str]] = None,
24
+ venue: Optional[str] = None,
23
25
  ):
24
26
  return cls(
25
27
  symbols,
28
+ venue,
26
29
  )
27
30
 
28
31
  def __str__(self) -> str:
29
- return f"L1BookSnapshotsRequest(symbols={self.symbols})"
32
+ return f"L1BookSnapshotsRequest(symbols={self.symbols},venue={self.venue})"
30
33
 
31
34
  @staticmethod
32
35
  def get_response_type():
@@ -27,7 +27,7 @@ class L2BookSnapshot(Struct, omit_defaults=True):
27
27
  tn: Annotated[int, Meta(ge=0, title="timestamp_ns")]
28
28
  ts: Annotated[int, Meta(title="timestamp")]
29
29
 
30
- # below is a constructor that takes all field titles as arguments for convenience
30
+ # Constructor that takes all field titles as arguments for convenience
31
31
  @classmethod
32
32
  def new(
33
33
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Marketdata/L2BookSnapshotRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.L2BookSnapshot import L2BookSnapshot
5
+ from architect_py.grpc.models.Marketdata.L2BookSnapshot import L2BookSnapshot
6
6
 
7
7
  from typing import Optional
8
8
 
@@ -13,7 +13,7 @@ class L2BookSnapshotRequest(Struct, omit_defaults=True):
13
13
  symbol: str
14
14
  venue: Optional[str] = None
15
15
 
16
- # below is a constructor that takes all field titles as arguments for convenience
16
+ # Constructor that takes all field titles as arguments for convenience
17
17
  @classmethod
18
18
  def new(
19
19
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Marketdata/Liquidation.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 decimal import Decimal
@@ -21,7 +21,7 @@ class Liquidation(Struct, omit_defaults=True):
21
21
  tn: Annotated[int, Meta(ge=0, title="timestamp_ns")]
22
22
  ts: Annotated[int, Meta(title="timestamp")]
23
23
 
24
- # below is a constructor that takes all field titles as arguments for convenience
24
+ # Constructor that takes all field titles as arguments for convenience
25
25
  @classmethod
26
26
  def new(
27
27
  cls,
@@ -13,7 +13,7 @@ class MarketStatus(Struct, omit_defaults=True):
13
13
  is_quoting: Optional[bool] = None
14
14
  is_trading: Optional[bool] = None
15
15
 
16
- # below is a constructor that takes all field titles as arguments for convenience
16
+ # Constructor that takes all field titles as arguments for convenience
17
17
  @classmethod
18
18
  def new(
19
19
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Marketdata/MarketStatusRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.MarketStatus import MarketStatus
5
+ from architect_py.grpc.models.Marketdata.MarketStatus import MarketStatus
6
6
 
7
7
  from typing import Optional
8
8
 
@@ -13,7 +13,7 @@ class MarketStatusRequest(Struct, omit_defaults=True):
13
13
  symbol: str
14
14
  venue: Optional[str] = None
15
15
 
16
- # below is a constructor that takes all field titles as arguments for convenience
16
+ # Constructor that takes all field titles as arguments for convenience
17
17
  @classmethod
18
18
  def new(
19
19
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Marketdata/SubscribeCandlesRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.Candle import Candle
5
+ from architect_py.grpc.models.Marketdata.Candle import Candle
6
6
 
7
7
  from typing import Annotated, List, Optional
8
8
 
@@ -24,7 +24,7 @@ class SubscribeCandlesRequest(Struct, omit_defaults=True):
24
24
  """
25
25
  venue: Optional[str] = None
26
26
 
27
- # below is a constructor that takes all field titles as arguments for convenience
27
+ # Constructor that takes all field titles as arguments for convenience
28
28
  @classmethod
29
29
  def new(
30
30
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Marketdata/SubscribeCurrentCandlesRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.Candle import Candle
5
+ from architect_py.grpc.models.Marketdata.Candle import Candle
6
6
 
7
7
  from typing import Annotated, Optional
8
8
 
@@ -22,8 +22,7 @@ class SubscribeCurrentCandlesRequest(Struct, omit_defaults=True):
22
22
  Annotated[
23
23
  Optional[int],
24
24
  Meta(
25
- description="If None, send the current candle on every trade or candle tick. Otherwise, send a candle every `tick_period_ms`.",
26
- ge=0,
25
+ description="If None, send the current candle on every trade or candle tick. Otherwise, send a candle every `tick_period_ms`."
27
26
  ),
28
27
  ]
29
28
  ] = None
@@ -32,7 +31,7 @@ class SubscribeCurrentCandlesRequest(Struct, omit_defaults=True):
32
31
  """
33
32
  venue: Optional[str] = None
34
33
 
35
- # below is a constructor that takes all field titles as arguments for convenience
34
+ # Constructor that takes all field titles as arguments for convenience
36
35
  @classmethod
37
36
  def new(
38
37
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Marketdata/SubscribeL1BookSnapshotsRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.L1BookSnapshot import L1BookSnapshot
5
+ from architect_py.grpc.models.Marketdata.L1BookSnapshot import L1BookSnapshot
6
6
 
7
7
  from typing import Annotated, List, Optional
8
8
 
@@ -19,19 +19,22 @@ class SubscribeL1BookSnapshotsRequest(Struct, omit_defaults=True):
19
19
  """
20
20
  If None, subscribe from all symbols on the feed
21
21
  """
22
+ venue: Optional[str] = None
22
23
 
23
- # below is a constructor that takes all field titles as arguments for convenience
24
+ # Constructor that takes all field titles as arguments for convenience
24
25
  @classmethod
25
26
  def new(
26
27
  cls,
27
28
  symbols: Optional[List[str]] = None,
29
+ venue: Optional[str] = None,
28
30
  ):
29
31
  return cls(
30
32
  symbols,
33
+ venue,
31
34
  )
32
35
 
33
36
  def __str__(self) -> str:
34
- return f"SubscribeL1BookSnapshotsRequest(symbols={self.symbols})"
37
+ return f"SubscribeL1BookSnapshotsRequest(symbols={self.symbols},venue={self.venue})"
35
38
 
36
39
  @staticmethod
37
40
  def get_response_type():
@@ -2,7 +2,7 @@
2
2
  # filename: Marketdata/SubscribeL2BookUpdatesRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.L2BookUpdate import (
5
+ from architect_py.grpc.models.Marketdata.L2BookUpdate import (
6
6
  L2BookUpdate,
7
7
  Snapshot,
8
8
  Diff,
@@ -17,7 +17,7 @@ class SubscribeL2BookUpdatesRequest(Struct, omit_defaults=True):
17
17
  symbol: str
18
18
  venue: Optional[str] = None
19
19
 
20
- # below is a constructor that takes all field titles as arguments for convenience
20
+ # Constructor that takes all field titles as arguments for convenience
21
21
  @classmethod
22
22
  def new(
23
23
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Marketdata/SubscribeLiquidationsRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.Liquidation import Liquidation
5
+ from architect_py.grpc.models.Marketdata.Liquidation import Liquidation
6
6
 
7
7
  from typing import List, Optional
8
8
 
@@ -12,7 +12,7 @@ from msgspec import Struct
12
12
  class SubscribeLiquidationsRequest(Struct, omit_defaults=True):
13
13
  symbols: Optional[List[str]] = None
14
14
 
15
- # below is a constructor that takes all field titles as arguments for convenience
15
+ # Constructor that takes all field titles as arguments for convenience
16
16
  @classmethod
17
17
  def new(
18
18
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Marketdata/SubscribeManyCandlesRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.Candle import Candle
5
+ from architect_py.grpc.models.Marketdata.Candle import Candle
6
6
 
7
7
  from typing import Annotated, List, Optional
8
8
 
@@ -24,7 +24,7 @@ class SubscribeManyCandlesRequest(Struct, omit_defaults=True):
24
24
  """
25
25
  venue: Optional[str] = None
26
26
 
27
- # below is a constructor that takes all field titles as arguments for convenience
27
+ # Constructor that takes all field titles as arguments for convenience
28
28
  @classmethod
29
29
  def new(
30
30
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Marketdata/SubscribeTickersRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.TickerUpdate import (
5
+ from architect_py.grpc.models.Marketdata.TickerUpdate import (
6
6
  TickerUpdate,
7
7
  Snapshot,
8
8
  Diff,
@@ -28,7 +28,7 @@ class SubscribeTickersRequest(Struct, omit_defaults=True):
28
28
  If None, subscribe from all symbols on the feed
29
29
  """
30
30
 
31
- # below is a constructor that takes all field titles as arguments for convenience
31
+ # Constructor that takes all field titles as arguments for convenience
32
32
  @classmethod
33
33
  def new(
34
34
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Marketdata/SubscribeTradesRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.Trade import Trade
5
+ from architect_py.grpc.models.Marketdata.Trade import Trade
6
6
 
7
7
  from typing import Annotated, Optional
8
8
 
@@ -21,7 +21,7 @@ class SubscribeTradesRequest(Struct, omit_defaults=True):
21
21
  """
22
22
  venue: Optional[str] = None
23
23
 
24
- # below is a constructor that takes all field titles as arguments for convenience
24
+ # Constructor that takes all field titles as arguments for convenience
25
25
  @classmethod
26
26
  def new(
27
27
  cls,
@@ -49,7 +49,7 @@ class Ticker(Struct, omit_defaults=True):
49
49
  xo: Optional[Annotated[Optional[Decimal], Meta(title="session_open")]] = None
50
50
  xv: Optional[Annotated[Optional[Decimal], Meta(title="session_volume")]] = None
51
51
 
52
- # below is a constructor that takes all field titles as arguments for convenience
52
+ # Constructor that takes all field titles as arguments for convenience
53
53
  @classmethod
54
54
  def new(
55
55
  cls,