architect-py 3.2.2__py3-none-any.whl → 5.0.0b1__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 (169) hide show
  1. architect_py/__init__.py +8 -2
  2. architect_py/async_client.py +879 -576
  3. architect_py/client.py +25 -26
  4. architect_py/client_interface.py +62 -0
  5. architect_py/common_types/__init__.py +6 -0
  6. architect_py/common_types/order_dir.py +85 -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/client.py +3 -6
  10. architect_py/graphql_client/fragments.py +3 -6
  11. architect_py/graphql_client/get_fills_query.py +2 -1
  12. architect_py/graphql_client/search_symbols_query.py +2 -1
  13. architect_py/graphql_client/subscribe_orderflow.py +2 -1
  14. architect_py/graphql_client/subscribe_trades.py +2 -1
  15. architect_py/grpc/__init__.py +125 -0
  16. architect_py/grpc/client.py +86 -0
  17. architect_py/{grpc_client → grpc/models}/Accounts/AccountsRequest.py +2 -2
  18. architect_py/{grpc_client → grpc/models}/Accounts/AccountsResponse.py +1 -1
  19. architect_py/{grpc_client → grpc/models}/Accounts/__init__.py +1 -1
  20. architect_py/{grpc_client → grpc/models}/Algo/AlgoOrderForTwapAlgo.py +1 -1
  21. architect_py/{grpc_client → grpc/models}/Algo/CreateAlgoOrderRequestForTwapAlgo.py +2 -2
  22. architect_py/{grpc_client → grpc/models}/Algo/ModifyAlgoOrderRequestForTwapAlgo.py +2 -2
  23. architect_py/{grpc_client → grpc/models}/Algo/__init__.py +1 -1
  24. architect_py/grpc/models/Auth/CreateJwtRequest.py +47 -0
  25. architect_py/grpc/models/Auth/CreateJwtResponse.py +23 -0
  26. architect_py/{grpc_client/Cpty → grpc/models/Auth}/__init__.py +1 -1
  27. architect_py/grpc/models/Core/ConfigRequest.py +37 -0
  28. architect_py/grpc/models/Core/ConfigResponse.py +25 -0
  29. architect_py/{grpc_client/Folio → grpc/models/Core}/__init__.py +1 -1
  30. architect_py/{grpc_client → grpc/models}/Cpty/CptyRequest.py +2 -2
  31. architect_py/{grpc_client → grpc/models}/Cpty/CptyResponse.py +3 -3
  32. architect_py/{grpc_client → grpc/models}/Cpty/CptyStatus.py +1 -1
  33. architect_py/{grpc_client → grpc/models}/Cpty/CptyStatusRequest.py +2 -2
  34. architect_py/{grpc_client → grpc/models}/Cpty/CptysRequest.py +2 -2
  35. architect_py/{grpc_client → grpc/models}/Cpty/CptysResponse.py +1 -1
  36. architect_py/grpc/models/Cpty/__init__.py +2 -0
  37. architect_py/{grpc_client → grpc/models}/Folio/AccountHistoryRequest.py +2 -2
  38. architect_py/{grpc_client → grpc/models}/Folio/AccountHistoryResponse.py +1 -1
  39. architect_py/{grpc_client → grpc/models}/Folio/AccountSummariesRequest.py +2 -2
  40. architect_py/{grpc_client → grpc/models}/Folio/AccountSummariesResponse.py +1 -1
  41. architect_py/{grpc_client → grpc/models}/Folio/AccountSummary.py +1 -1
  42. architect_py/{grpc_client → grpc/models}/Folio/AccountSummaryRequest.py +2 -2
  43. architect_py/{grpc_client → grpc/models}/Folio/HistoricalFillsRequest.py +3 -3
  44. architect_py/{grpc_client → grpc/models}/Folio/HistoricalFillsResponse.py +1 -1
  45. architect_py/{grpc_client → grpc/models}/Folio/HistoricalOrdersRequest.py +3 -3
  46. architect_py/{grpc_client → grpc/models}/Folio/HistoricalOrdersResponse.py +1 -1
  47. architect_py/grpc/models/Folio/__init__.py +2 -0
  48. architect_py/{grpc_client → grpc/models}/Health/HealthCheckRequest.py +2 -2
  49. architect_py/{grpc_client → grpc/models}/Health/HealthCheckResponse.py +1 -1
  50. architect_py/grpc/models/Health/__init__.py +2 -0
  51. architect_py/{grpc_client → grpc/models}/Marketdata/Candle.py +1 -1
  52. architect_py/{grpc_client → grpc/models}/Marketdata/HistoricalCandlesRequest.py +11 -8
  53. architect_py/{grpc_client → grpc/models}/Marketdata/HistoricalCandlesResponse.py +1 -1
  54. architect_py/{grpc_client → grpc/models}/Marketdata/L1BookSnapshot.py +36 -3
  55. architect_py/{grpc_client → grpc/models}/Marketdata/L1BookSnapshotRequest.py +8 -3
  56. architect_py/{grpc_client → grpc/models}/Marketdata/L1BookSnapshotsRequest.py +6 -3
  57. architect_py/{grpc_client → grpc/models}/Marketdata/L2BookSnapshot.py +1 -1
  58. architect_py/{grpc_client → grpc/models}/Marketdata/L2BookSnapshotRequest.py +2 -2
  59. architect_py/{grpc_client → grpc/models}/Marketdata/Liquidation.py +2 -2
  60. architect_py/{grpc_client → grpc/models}/Marketdata/MarketStatus.py +1 -1
  61. architect_py/{grpc_client → grpc/models}/Marketdata/MarketStatusRequest.py +2 -2
  62. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeCandlesRequest.py +2 -2
  63. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeCurrentCandlesRequest.py +3 -4
  64. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeL1BookSnapshotsRequest.py +6 -3
  65. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeL2BookUpdatesRequest.py +2 -2
  66. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeLiquidationsRequest.py +2 -2
  67. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeManyCandlesRequest.py +2 -2
  68. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeTickersRequest.py +2 -2
  69. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeTradesRequest.py +2 -2
  70. architect_py/{grpc_client → grpc/models}/Marketdata/Ticker.py +1 -1
  71. architect_py/{grpc_client → grpc/models}/Marketdata/TickerRequest.py +2 -2
  72. architect_py/{grpc_client → grpc/models}/Marketdata/TickersRequest.py +2 -2
  73. architect_py/{grpc_client → grpc/models}/Marketdata/TickersResponse.py +1 -1
  74. architect_py/{grpc_client → grpc/models}/Marketdata/Trade.py +2 -2
  75. architect_py/grpc/models/Marketdata/__init__.py +2 -0
  76. architect_py/{grpc_client → grpc/models}/Oms/Cancel.py +1 -1
  77. architect_py/{grpc_client → grpc/models}/Oms/CancelAllOrdersRequest.py +2 -2
  78. architect_py/{grpc_client → grpc/models}/Oms/CancelAllOrdersResponse.py +1 -1
  79. architect_py/{grpc_client → grpc/models}/Oms/CancelOrderRequest.py +2 -2
  80. architect_py/{grpc_client → grpc/models}/Oms/OpenOrdersRequest.py +2 -2
  81. architect_py/{grpc_client → grpc/models}/Oms/OpenOrdersResponse.py +1 -1
  82. architect_py/{grpc_client → grpc/models}/Oms/Order.py +2 -2
  83. architect_py/{grpc_client → grpc/models}/Oms/PendingCancelsRequest.py +2 -2
  84. architect_py/{grpc_client → grpc/models}/Oms/PendingCancelsResponse.py +1 -1
  85. architect_py/{grpc_client → grpc/models}/Oms/PlaceOrderRequest.py +3 -3
  86. architect_py/grpc/models/Oms/__init__.py +2 -0
  87. architect_py/{grpc_client → grpc/models}/Orderflow/DropcopyRequest.py +2 -2
  88. architect_py/{grpc_client → grpc/models}/Orderflow/OrderflowRequest.py +1 -1
  89. architect_py/{grpc_client → grpc/models}/Orderflow/SubscribeOrderflowRequest.py +2 -2
  90. architect_py/grpc/models/Orderflow/__init__.py +2 -0
  91. architect_py/grpc/models/Symbology/DownloadProductCatalogRequest.py +42 -0
  92. architect_py/grpc/models/Symbology/DownloadProductCatalogResponse.py +27 -0
  93. architect_py/{grpc_client → grpc/models}/Symbology/PruneExpiredSymbolsRequest.py +2 -2
  94. architect_py/{grpc_client → grpc/models}/Symbology/PruneExpiredSymbolsResponse.py +1 -1
  95. architect_py/{grpc_client → grpc/models}/Symbology/SubscribeSymbology.py +1 -1
  96. architect_py/{grpc_client → grpc/models}/Symbology/SymbologyRequest.py +2 -2
  97. architect_py/{grpc_client → grpc/models}/Symbology/SymbologySnapshot.py +7 -2
  98. architect_py/{grpc_client → grpc/models}/Symbology/SymbologyUpdate.py +9 -2
  99. architect_py/{grpc_client → grpc/models}/Symbology/SymbolsRequest.py +2 -2
  100. architect_py/{grpc_client → grpc/models}/Symbology/SymbolsResponse.py +1 -1
  101. architect_py/grpc/models/Symbology/UploadProductCatalogRequest.py +49 -0
  102. architect_py/grpc/models/Symbology/UploadProductCatalogResponse.py +20 -0
  103. architect_py/{grpc_client → grpc/models}/Symbology/UploadSymbologyRequest.py +2 -2
  104. architect_py/{grpc_client → grpc/models}/Symbology/UploadSymbologyResponse.py +1 -1
  105. architect_py/grpc/models/Symbology/__init__.py +2 -0
  106. architect_py/grpc/models/__init__.py +2 -0
  107. architect_py/{grpc_client → grpc/models}/definitions.py +248 -66
  108. architect_py/grpc/resolve_endpoint.py +67 -0
  109. architect_py/{grpc_client/grpc_server.py → grpc/server.py} +9 -6
  110. architect_py/grpc/utils.py +32 -0
  111. architect_py/tests/conftest.py +86 -87
  112. architect_py/tests/test_book_building.py +49 -50
  113. architect_py/tests/test_marketdata.py +168 -0
  114. architect_py/tests/test_order_entry.py +37 -0
  115. architect_py/tests/test_orderflow.py +38 -0
  116. architect_py/tests/test_portfolio_management.py +23 -0
  117. architect_py/tests/test_rounding.py +28 -28
  118. architect_py/tests/test_symbology.py +37 -30
  119. architect_py/utils/nearest_tick.py +2 -5
  120. architect_py/utils/nearest_tick_2.py +1 -2
  121. architect_py/utils/orderbook.py +35 -0
  122. architect_py/utils/pandas.py +44 -0
  123. architect_py/utils/price_bands.py +0 -3
  124. architect_py/utils/symbol_parsing.py +29 -0
  125. architect_py-5.0.0b1.dist-info/METADATA +124 -0
  126. architect_py-5.0.0b1.dist-info/RECORD +184 -0
  127. {architect_py-3.2.2.dist-info → architect_py-5.0.0b1.dist-info}/WHEEL +2 -1
  128. architect_py-5.0.0b1.dist-info/top_level.txt +4 -0
  129. examples/__init__.py +0 -0
  130. examples/book_subscription.py +53 -0
  131. examples/candles.py +30 -0
  132. examples/common.py +107 -0
  133. examples/external_cpty.py +77 -0
  134. examples/funding_rate_mean_reversion_algo.py +192 -0
  135. examples/order_sending.py +92 -0
  136. examples/stream_l1_marketdata.py +25 -0
  137. examples/stream_l2_marketdata.py +40 -0
  138. examples/trades.py +21 -0
  139. examples/tutorial_async.py +84 -0
  140. examples/tutorial_sync.py +95 -0
  141. scripts/generate_functions_md.py +164 -0
  142. scripts/generate_sync_interface.py +207 -0
  143. scripts/postprocess_grpc.py +594 -0
  144. scripts/preprocess_grpc_schema.py +647 -0
  145. templates/exceptions.py +83 -0
  146. templates/juniper_base_client.py +371 -0
  147. architect_py/client_protocol.py +0 -53
  148. architect_py/grpc_client/Health/__init__.py +0 -2
  149. architect_py/grpc_client/Marketdata/__init__.py +0 -2
  150. architect_py/grpc_client/Oms/__init__.py +0 -2
  151. architect_py/grpc_client/Orderflow/__init__.py +0 -2
  152. architect_py/grpc_client/Symbology/__init__.py +0 -2
  153. architect_py/grpc_client/__init__.py +0 -2
  154. architect_py/grpc_client/grpc_client.py +0 -413
  155. architect_py/scalars.py +0 -172
  156. architect_py/tests/test_accounts.py +0 -31
  157. architect_py/tests/test_client.py +0 -29
  158. architect_py/tests/test_grpc_client.py +0 -30
  159. architect_py/tests/test_order_sending.py +0 -65
  160. architect_py/tests/test_snapshots.py +0 -52
  161. architect_py/tests/test_subscriptions.py +0 -126
  162. architect_py-3.2.2.dist-info/METADATA +0 -191
  163. architect_py-3.2.2.dist-info/RECORD +0 -148
  164. /architect_py/{grpc_client → grpc/models}/Marketdata/ArrayOfL1BookSnapshot.py +0 -0
  165. /architect_py/{grpc_client → grpc/models}/Marketdata/L2BookUpdate.py +0 -0
  166. /architect_py/{grpc_client → grpc/models}/Marketdata/TickerUpdate.py +0 -0
  167. /architect_py/{grpc_client → grpc/models}/Orderflow/Dropcopy.py +0 -0
  168. /architect_py/{grpc_client → grpc/models}/Orderflow/Orderflow.py +0 -0
  169. {architect_py-3.2.2.dist-info → architect_py-5.0.0b1.dist-info/licenses}/LICENSE +0 -0
@@ -25,7 +25,7 @@ class AlgoOrderForTwapAlgo(Struct, omit_defaults=True):
25
25
  last_error_time: Optional[datetime] = None
26
26
  parent_order_id: Optional[definitions.OrderId] = None
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,
@@ -2,7 +2,7 @@
2
2
  # filename: Algo/CreateAlgoOrderRequestForTwapAlgo.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Algo.AlgoOrderForTwapAlgo import AlgoOrderForTwapAlgo
5
+ from architect_py.grpc.models.Algo.AlgoOrderForTwapAlgo import AlgoOrderForTwapAlgo
6
6
 
7
7
  from typing import Optional
8
8
 
@@ -19,7 +19,7 @@ class CreateAlgoOrderRequestForTwapAlgo(Struct, omit_defaults=True):
19
19
  parent_order_id: Optional[definitions.OrderId] = None
20
20
  trader: Optional[definitions.UserId] = None
21
21
 
22
- # below is a constructor that takes all field titles as arguments for convenience
22
+ # Constructor that takes all field titles as arguments for convenience
23
23
  @classmethod
24
24
  def new(
25
25
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Algo/ModifyAlgoOrderRequestForTwapAlgo.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Algo.AlgoOrderForTwapAlgo import AlgoOrderForTwapAlgo
5
+ from architect_py.grpc.models.Algo.AlgoOrderForTwapAlgo import AlgoOrderForTwapAlgo
6
6
 
7
7
  from msgspec import Struct
8
8
 
@@ -13,7 +13,7 @@ class ModifyAlgoOrderRequestForTwapAlgo(Struct, omit_defaults=True):
13
13
  algo_order_id: definitions.OrderId
14
14
  params: definitions.TwapParams
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,
@@ -1,2 +1,2 @@
1
1
  # generated by datamodel-codegen:
2
- # filename: processed_schemas
2
+ # filename: schemas
@@ -0,0 +1,47 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: Auth/CreateJwtRequest.json
3
+
4
+ from __future__ import annotations
5
+ from architect_py.grpc.models.Auth.CreateJwtResponse import CreateJwtResponse
6
+
7
+ from msgspec import Struct
8
+
9
+
10
+ class CreateJwtRequest(Struct, omit_defaults=True):
11
+ """
12
+ Create a session JWT to use for authentication with upstream gRPC services.
13
+ """
14
+
15
+ api_key: str
16
+ api_secret: str
17
+
18
+ # Constructor that takes all field titles as arguments for convenience
19
+ @classmethod
20
+ def new(
21
+ cls,
22
+ api_key: str,
23
+ api_secret: str,
24
+ ):
25
+ return cls(
26
+ api_key,
27
+ api_secret,
28
+ )
29
+
30
+ def __str__(self) -> str:
31
+ return f"CreateJwtRequest(api_key={self.api_key},api_secret={self.api_secret})"
32
+
33
+ @staticmethod
34
+ def get_response_type():
35
+ return CreateJwtResponse
36
+
37
+ @staticmethod
38
+ def get_unannotated_response_type():
39
+ return CreateJwtResponse
40
+
41
+ @staticmethod
42
+ def get_route() -> str:
43
+ return "/json.architect.Auth/CreateJwt"
44
+
45
+ @staticmethod
46
+ def get_rpc_method():
47
+ return "unary"
@@ -0,0 +1,23 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: Auth/CreateJwtResponse.json
3
+
4
+ from __future__ import annotations
5
+
6
+ from msgspec import Struct
7
+
8
+
9
+ class CreateJwtResponse(Struct, omit_defaults=True):
10
+ jwt: str
11
+
12
+ # Constructor that takes all field titles as arguments for convenience
13
+ @classmethod
14
+ def new(
15
+ cls,
16
+ jwt: str,
17
+ ):
18
+ return cls(
19
+ jwt,
20
+ )
21
+
22
+ def __str__(self) -> str:
23
+ return f"CreateJwtResponse(jwt={self.jwt})"
@@ -1,2 +1,2 @@
1
1
  # generated by datamodel-codegen:
2
- # filename: processed_schemas
2
+ # filename: schemas
@@ -0,0 +1,37 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: Core/ConfigRequest.json
3
+
4
+ from __future__ import annotations
5
+ from architect_py.grpc.models.Core.ConfigResponse import ConfigResponse
6
+
7
+ from msgspec import Struct
8
+
9
+
10
+ class ConfigRequest(Struct, omit_defaults=True):
11
+ pass
12
+
13
+ # Constructor that takes all field titles as arguments for convenience
14
+ @classmethod
15
+ def new(
16
+ cls,
17
+ ):
18
+ return cls()
19
+
20
+ def __str__(self) -> str:
21
+ return f"ConfigRequest()"
22
+
23
+ @staticmethod
24
+ def get_response_type():
25
+ return ConfigResponse
26
+
27
+ @staticmethod
28
+ def get_unannotated_response_type():
29
+ return ConfigResponse
30
+
31
+ @staticmethod
32
+ def get_route() -> str:
33
+ return "/json.architect.Core/Config"
34
+
35
+ @staticmethod
36
+ def get_rpc_method():
37
+ return "unary"
@@ -0,0 +1,25 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: Core/ConfigResponse.json
3
+
4
+ from __future__ import annotations
5
+
6
+ from typing import Dict
7
+
8
+ from msgspec import Struct
9
+
10
+
11
+ class ConfigResponse(Struct, omit_defaults=True):
12
+ marketdata: Dict[str, str]
13
+
14
+ # Constructor that takes all field titles as arguments for convenience
15
+ @classmethod
16
+ def new(
17
+ cls,
18
+ marketdata: Dict[str, str],
19
+ ):
20
+ return cls(
21
+ marketdata,
22
+ )
23
+
24
+ def __str__(self) -> str:
25
+ return f"ConfigResponse(marketdata={self.marketdata})"
@@ -1,2 +1,2 @@
1
1
  # generated by datamodel-codegen:
2
- # filename: processed_schemas
2
+ # filename: schemas
@@ -2,7 +2,7 @@
2
2
  # filename: Cpty/CptyRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Cpty.CptyResponse import (
5
+ from architect_py.grpc.models.Cpty.CptyResponse import (
6
6
  CptyResponse,
7
7
  Symbology,
8
8
  ReconcileOrder,
@@ -23,7 +23,7 @@ class CancelOrder(Struct, omit_defaults=True, tag_field="t", tag="cancel_order")
23
23
  cancel: Cancel
24
24
  original_order: Optional[Order] = None
25
25
 
26
- # below is a constructor that takes all field titles as arguments for convenience
26
+ # Constructor that takes all field titles as arguments for convenience
27
27
  @classmethod
28
28
  def new(
29
29
  cls,
@@ -20,7 +20,7 @@ class UpdateAccountSummary(Struct, omit_defaults=True, tag_field="t", tag="as"):
20
20
  positions: Optional[Dict[str, Any]] = None
21
21
  statistics: Optional[definitions.AccountStatistics] = None
22
22
 
23
- # below is a constructor that takes all field titles as arguments for convenience
23
+ # Constructor that takes all field titles as arguments for convenience
24
24
  @classmethod
25
25
  def new(
26
26
  cls,
@@ -49,7 +49,7 @@ class UpdateAccountSummary(Struct, omit_defaults=True, tag_field="t", tag="as"):
49
49
  class Symbology(Struct, omit_defaults=True, tag_field="t", tag="xs"):
50
50
  execution_info: Dict[str, Dict[str, definitions.ExecutionInfo]]
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,
@@ -67,7 +67,7 @@ class ReconcileOpenOrders(Struct, omit_defaults=True, tag_field="t", tag="oo"):
67
67
  orders: List[Order]
68
68
  snapshot_for_account: Optional[definitions.AccountIdOrName] = None
69
69
 
70
- # below is a constructor that takes all field titles as arguments for convenience
70
+ # Constructor that takes all field titles as arguments for convenience
71
71
  @classmethod
72
72
  def new(
73
73
  cls,
@@ -24,7 +24,7 @@ class CptyStatus(Struct, omit_defaults=True):
24
24
  logged_in: bool
25
25
  instance: 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: Cpty/CptyStatusRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Cpty.CptyStatus import CptyStatus
5
+ from architect_py.grpc.models.Cpty.CptyStatus import CptyStatus
6
6
 
7
7
  from typing import Optional
8
8
 
@@ -13,7 +13,7 @@ class CptyStatusRequest(Struct, omit_defaults=True):
13
13
  kind: str
14
14
  instance: 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: Cpty/CptysRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Cpty.CptysResponse import CptysResponse
5
+ from architect_py.grpc.models.Cpty.CptysResponse import CptysResponse
6
6
 
7
7
  from msgspec import Struct
8
8
 
@@ -10,7 +10,7 @@ from msgspec import Struct
10
10
  class CptysRequest(Struct, omit_defaults=True):
11
11
  pass
12
12
 
13
- # below is a constructor that takes all field titles as arguments for convenience
13
+ # Constructor that takes all field titles as arguments for convenience
14
14
  @classmethod
15
15
  def new(
16
16
  cls,
@@ -13,7 +13,7 @@ from .CptyStatus import CptyStatus
13
13
  class CptysResponse(Struct, omit_defaults=True):
14
14
  cptys: List[CptyStatus]
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: Folio/AccountHistoryRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Folio.AccountHistoryResponse import AccountHistoryResponse
5
+ from architect_py.grpc.models.Folio.AccountHistoryResponse import AccountHistoryResponse
6
6
 
7
7
  from datetime import datetime
8
8
  from typing import Optional
@@ -17,7 +17,7 @@ class AccountHistoryRequest(Struct, omit_defaults=True):
17
17
  from_inclusive: Optional[datetime] = None
18
18
  to_exclusive: Optional[datetime] = 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,
@@ -13,7 +13,7 @@ from .AccountSummary import AccountSummary
13
13
  class AccountHistoryResponse(Struct, omit_defaults=True):
14
14
  history: List[AccountSummary]
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: Folio/AccountSummariesRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Folio.AccountSummariesResponse import (
5
+ from architect_py.grpc.models.Folio.AccountSummariesResponse import (
6
6
  AccountSummariesResponse,
7
7
  )
8
8
 
@@ -27,7 +27,7 @@ class AccountSummariesRequest(Struct, omit_defaults=True):
27
27
  """
28
28
  trader: Optional[definitions.TraderIdOrEmail] = None
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,
@@ -13,7 +13,7 @@ from .AccountSummary import AccountSummary
13
13
  class AccountSummariesResponse(Struct, omit_defaults=True):
14
14
  account_summaries: List[AccountSummary]
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,
@@ -74,7 +74,7 @@ class AccountSummary(Struct, omit_defaults=True):
74
74
  Yesterday total account equity.
75
75
  """
76
76
 
77
- # below is a constructor that takes all field titles as arguments for convenience
77
+ # Constructor that takes all field titles as arguments for convenience
78
78
  @classmethod
79
79
  def new(
80
80
  cls,
@@ -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,7 +18,7 @@ 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.
@@ -28,7 +28,7 @@ class HistoricalFillsRequest(Struct, omit_defaults=True):
28
28
  trader: Optional[definitions.TraderIdOrEmail] = None
29
29
  venue: Optional[str] = None
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,
@@ -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,
@@ -16,8 +16,21 @@ class L1BookSnapshot(Struct, omit_defaults=True):
16
16
  ts: Annotated[int, Meta(title="timestamp")]
17
17
  a: Optional[Annotated[List[Decimal], Meta(title="best_ask")]] = None
18
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
19
+ rt: Optional[
20
+ Annotated[
21
+ Optional[int],
22
+ Meta(
23
+ description="Time that Architect feed received the message; only set if streaming from direct L1 feeds",
24
+ title="recv_time",
25
+ ),
26
+ ]
27
+ ] = None
28
+ """
29
+ Time that Architect feed received the message; only set if streaming from direct L1 feeds
30
+ """
31
+ rtn: Optional[Annotated[Optional[int], Meta(title="recv_time_ns")]] = None
32
+
33
+ # Constructor that takes all field titles as arguments for convenience
21
34
  @classmethod
22
35
  def new(
23
36
  cls,
@@ -26,6 +39,8 @@ class L1BookSnapshot(Struct, omit_defaults=True):
26
39
  timestamp: int,
27
40
  best_ask: Optional[List[Decimal]] = None,
28
41
  best_bid: Optional[List[Decimal]] = None,
42
+ recv_time: Optional[int] = None,
43
+ recv_time_ns: Optional[int] = None,
29
44
  ):
30
45
  return cls(
31
46
  symbol,
@@ -33,10 +48,12 @@ class L1BookSnapshot(Struct, omit_defaults=True):
33
48
  timestamp,
34
49
  best_ask,
35
50
  best_bid,
51
+ recv_time,
52
+ recv_time_ns,
36
53
  )
37
54
 
38
55
  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})"
56
+ 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
57
 
41
58
  @property
42
59
  def symbol(self) -> str:
@@ -85,3 +102,19 @@ class L1BookSnapshot(Struct, omit_defaults=True):
85
102
  @best_bid.setter
86
103
  def best_bid(self, value: Optional[List[Decimal]]) -> None:
87
104
  self.b = value
105
+
106
+ @property
107
+ def recv_time(self) -> Optional[int]:
108
+ return self.rt
109
+
110
+ @recv_time.setter
111
+ def recv_time(self, value: Optional[int]) -> None:
112
+ self.rt = value
113
+
114
+ @property
115
+ def recv_time_ns(self) -> Optional[int]:
116
+ return self.rtn
117
+
118
+ @recv_time_ns.setter
119
+ def recv_time_ns(self, value: Optional[int]) -> None:
120
+ self.rtn = value