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: Marketdata/TickerRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.Ticker import Ticker
5
+ from architect_py.grpc.models.Marketdata.Ticker import Ticker
6
6
 
7
7
  from typing import Optional
8
8
 
@@ -13,7 +13,7 @@ class TickerRequest(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/TickersRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Marketdata.TickersResponse import TickersResponse
5
+ from architect_py.grpc.models.Marketdata.TickersResponse import TickersResponse
6
6
 
7
7
  from typing import List, Optional
8
8
 
@@ -18,7 +18,7 @@ class TickersRequest(Struct, omit_defaults=True):
18
18
  symbols: Optional[List[str]] = None
19
19
  venue: Optional[str] = None
20
20
 
21
- # below is a constructor that takes all field titles as arguments for convenience
21
+ # Constructor that takes all field titles as arguments for convenience
22
22
  @classmethod
23
23
  def new(
24
24
  cls,
@@ -13,7 +13,7 @@ from .Ticker import Ticker
13
13
  class TickersResponse(Struct, omit_defaults=True):
14
14
  tickers: List[Ticker]
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/Trade.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 Trade(Struct, omit_defaults=True):
21
21
  ts: Annotated[int, Meta(title="timestamp")]
22
22
  d: Optional[Annotated[Optional[OrderDir], Meta(title="direction")]] = 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,
@@ -0,0 +1,2 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: schemas
@@ -0,0 +1,90 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: Oms/Cancel.json
3
+
4
+ from __future__ import annotations
5
+
6
+ from typing import Annotated, Optional
7
+
8
+ from msgspec import Meta, Struct
9
+
10
+ from .. import definitions
11
+
12
+
13
+ class Cancel(Struct, omit_defaults=True):
14
+ id: Annotated[definitions.OrderId, Meta(title="order_id")]
15
+ o: Annotated[definitions.CancelStatus, Meta(title="status")]
16
+ tn: Annotated[int, Meta(ge=0, title="recv_time_ns")]
17
+ ts: Annotated[int, Meta(title="recv_time")]
18
+ xid: Annotated[str, Meta(title="cancel_id")]
19
+ r: Optional[Annotated[Optional[str], Meta(title="reject_reason")]] = None
20
+
21
+ # Constructor that takes all field titles as arguments for convenience
22
+ @classmethod
23
+ def new(
24
+ cls,
25
+ order_id: definitions.OrderId,
26
+ status: definitions.CancelStatus,
27
+ recv_time_ns: int,
28
+ recv_time: int,
29
+ cancel_id: str,
30
+ reject_reason: Optional[str] = None,
31
+ ):
32
+ return cls(
33
+ order_id,
34
+ status,
35
+ recv_time_ns,
36
+ recv_time,
37
+ cancel_id,
38
+ reject_reason,
39
+ )
40
+
41
+ def __str__(self) -> str:
42
+ return f"Cancel(order_id={self.id},status={self.o},recv_time_ns={self.tn},recv_time={self.ts},cancel_id={self.xid},reject_reason={self.r})"
43
+
44
+ @property
45
+ def order_id(self) -> definitions.OrderId:
46
+ return self.id
47
+
48
+ @order_id.setter
49
+ def order_id(self, value: definitions.OrderId) -> None:
50
+ self.id = value
51
+
52
+ @property
53
+ def status(self) -> definitions.CancelStatus:
54
+ return self.o
55
+
56
+ @status.setter
57
+ def status(self, value: definitions.CancelStatus) -> None:
58
+ self.o = value
59
+
60
+ @property
61
+ def recv_time_ns(self) -> int:
62
+ return self.tn
63
+
64
+ @recv_time_ns.setter
65
+ def recv_time_ns(self, value: int) -> None:
66
+ self.tn = value
67
+
68
+ @property
69
+ def recv_time(self) -> int:
70
+ return self.ts
71
+
72
+ @recv_time.setter
73
+ def recv_time(self, value: int) -> None:
74
+ self.ts = value
75
+
76
+ @property
77
+ def cancel_id(self) -> str:
78
+ return self.xid
79
+
80
+ @cancel_id.setter
81
+ def cancel_id(self, value: str) -> None:
82
+ self.xid = value
83
+
84
+ @property
85
+ def reject_reason(self) -> Optional[str]:
86
+ return self.r
87
+
88
+ @reject_reason.setter
89
+ def reject_reason(self, value: Optional[str]) -> None:
90
+ self.r = value
@@ -2,7 +2,7 @@
2
2
  # filename: Oms/CancelAllOrdersRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Oms.CancelAllOrdersResponse import CancelAllOrdersResponse
5
+ from architect_py.grpc.models.Oms.CancelAllOrdersResponse import CancelAllOrdersResponse
6
6
 
7
7
  from typing import Optional
8
8
 
@@ -17,7 +17,7 @@ class CancelAllOrdersRequest(Struct, omit_defaults=True):
17
17
  execution_venue: Optional[str] = None
18
18
  trader: Optional[definitions.TraderIdOrEmail] = 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,
@@ -9,7 +9,7 @@ from msgspec import Struct
9
9
  class CancelAllOrdersResponse(Struct, omit_defaults=True):
10
10
  pass
11
11
 
12
- # below is a constructor that takes all field titles as arguments for convenience
12
+ # Constructor that takes all field titles as arguments for convenience
13
13
  @classmethod
14
14
  def new(
15
15
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Oms/CancelOrderRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Oms.Cancel import Cancel
5
+ from architect_py.grpc.models.Oms.Cancel import Cancel
6
6
 
7
7
  from typing import Annotated, Optional
8
8
 
@@ -26,7 +26,7 @@ class CancelOrderRequest(Struct, omit_defaults=True):
26
26
  If not specified, one will be generated for you; note, in that case, you won't know for sure if the specific request went through.
27
27
  """
28
28
 
29
- # below is a constructor that takes all field titles as arguments for convenience
29
+ # Constructor that takes all field titles as arguments for convenience
30
30
  @classmethod
31
31
  def new(
32
32
  cls,
@@ -2,7 +2,7 @@
2
2
  # filename: Oms/OpenOrdersRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Oms.OpenOrdersResponse import OpenOrdersResponse
5
+ from architect_py.grpc.models.Oms.OpenOrdersResponse import OpenOrdersResponse
6
6
 
7
7
  from typing import List, Optional
8
8
 
@@ -19,7 +19,7 @@ class OpenOrdersRequest(Struct, omit_defaults=True):
19
19
  trader: Optional[definitions.TraderIdOrEmail] = None
20
20
  venue: Optional[str] = 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,
@@ -13,7 +13,7 @@ from .Order import Order
13
13
  class OpenOrdersResponse(Struct, omit_defaults=True):
14
14
  open_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,
@@ -2,10 +2,9 @@
2
2
  # filename: Oms/Order.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
 
7
7
  from decimal import Decimal
8
- from enum import Enum
9
8
  from typing import Annotated, Optional
10
9
 
11
10
  from msgspec import Meta, Struct
@@ -13,12 +12,6 @@ from msgspec import Meta, Struct
13
12
  from .. import definitions
14
13
 
15
14
 
16
- class OrderType(str, Enum):
17
- LIMIT = "LIMIT"
18
- STOP_LOSS_LIMIT = "STOP_LOSS_LIMIT"
19
- TAKE_PROFIT_LIMIT = "TAKE_PROFIT_LIMIT"
20
-
21
-
22
15
  class Order(Struct, omit_defaults=True):
23
16
  a: Annotated[str, Meta(title="account")]
24
17
  d: Annotated[OrderDir, Meta(title="dir")]
@@ -34,7 +27,7 @@ class Order(Struct, omit_defaults=True):
34
27
  ve: Annotated[str, Meta(title="execution_venue")]
35
28
  xq: Annotated[Decimal, Meta(title="filled_quantity")]
36
29
  p: Annotated[Decimal, Meta(title="limit_price")]
37
- k: Annotated[OrderType, Meta(title="order_type")]
30
+ k: Annotated[definitions.OrderType, Meta(title="order_type")]
38
31
  eid: Optional[Annotated[Optional[str], Meta(title="exchange_order_id")]] = None
39
32
  pid: Optional[Annotated[Optional[definitions.OrderId], Meta(title="parent_id")]] = (
40
33
  None
@@ -48,7 +41,7 @@ class Order(Struct, omit_defaults=True):
48
41
  po: Optional[Annotated[bool, Meta(title="post_only")]] = None
49
42
  tp: Optional[Annotated[Decimal, Meta(title="trigger_price")]] = None
50
43
 
51
- # below is a constructor that takes all field titles as arguments for convenience
44
+ # Constructor that takes all field titles as arguments for convenience
52
45
  @classmethod
53
46
  def new(
54
47
  cls,
@@ -66,7 +59,7 @@ class Order(Struct, omit_defaults=True):
66
59
  execution_venue: str,
67
60
  filled_quantity: Decimal,
68
61
  limit_price: Decimal,
69
- order_type: OrderType,
62
+ order_type: definitions.OrderType,
70
63
  exchange_order_id: Optional[str] = None,
71
64
  parent_id: Optional[definitions.OrderId] = None,
72
65
  reject_reason: Optional[definitions.OrderRejectReason] = None,
@@ -210,11 +203,11 @@ class Order(Struct, omit_defaults=True):
210
203
  self.p = value
211
204
 
212
205
  @property
213
- def order_type(self) -> OrderType:
206
+ def order_type(self) -> definitions.OrderType:
214
207
  return self.k
215
208
 
216
209
  @order_type.setter
217
- def order_type(self, value: OrderType) -> None:
210
+ def order_type(self, value: definitions.OrderType) -> None:
218
211
  self.k = value
219
212
 
220
213
  @property
@@ -2,7 +2,7 @@
2
2
  # filename: Oms/PendingCancelsRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Oms.PendingCancelsResponse import PendingCancelsResponse
5
+ from architect_py.grpc.models.Oms.PendingCancelsResponse import PendingCancelsResponse
6
6
 
7
7
  from typing import List, Optional
8
8
 
@@ -18,7 +18,7 @@ class PendingCancelsRequest(Struct, omit_defaults=True):
18
18
  trader: Optional[definitions.TraderIdOrEmail] = None
19
19
  venue: Optional[str] = None
20
20
 
21
- # below is a constructor that takes all field titles as arguments for convenience
21
+ # Constructor that takes all field titles as arguments for convenience
22
22
  @classmethod
23
23
  def new(
24
24
  cls,
@@ -13,7 +13,7 @@ from .Cancel import Cancel
13
13
  class PendingCancelsResponse(Struct, omit_defaults=True):
14
14
  pending_cancels: List[Cancel]
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,11 +2,10 @@
2
2
  # filename: Oms/PlaceOrderRequest.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.grpc_client.Oms.Order import Order
6
- from architect_py.scalars import OrderDir
5
+ from architect_py.grpc.models.Oms.Order import Order
6
+ from architect_py.common_types import OrderDir
7
7
 
8
8
  from decimal import Decimal
9
- from enum import Enum
10
9
  from typing import Annotated, Optional
11
10
 
12
11
  from msgspec import Meta, Struct
@@ -14,19 +13,13 @@ from msgspec import Meta, Struct
14
13
  from .. import definitions
15
14
 
16
15
 
17
- class PlaceOrderRequestType(str, Enum):
18
- LIMIT = "LIMIT"
19
- STOP_LOSS_LIMIT = "STOP_LOSS_LIMIT"
20
- TAKE_PROFIT_LIMIT = "TAKE_PROFIT_LIMIT"
21
-
22
-
23
16
  class PlaceOrderRequest(Struct, omit_defaults=True):
24
17
  d: Annotated[OrderDir, Meta(title="dir")]
25
18
  q: Annotated[Decimal, Meta(title="quantity")]
26
19
  s: Annotated[str, Meta(title="symbol")]
27
20
  tif: Annotated[definitions.TimeInForce, Meta(title="time_in_force")]
28
21
  p: Annotated[Decimal, Meta(title="limit_price")]
29
- k: Annotated[PlaceOrderRequestType, Meta(title="place_order_request_type")]
22
+ k: Annotated[definitions.OrderType, Meta(title="order_type")]
30
23
  a: Optional[
31
24
  Annotated[Optional[definitions.AccountIdOrName], Meta(title="account")]
32
25
  ] = None
@@ -54,7 +47,7 @@ class PlaceOrderRequest(Struct, omit_defaults=True):
54
47
  po: Optional[Annotated[bool, Meta(title="post_only")]] = None
55
48
  tp: Optional[Annotated[Decimal, Meta(title="trigger_price")]] = None
56
49
 
57
- # below is a constructor that takes all field titles as arguments for convenience
50
+ # Constructor that takes all field titles as arguments for convenience
58
51
  @classmethod
59
52
  def new(
60
53
  cls,
@@ -63,7 +56,7 @@ class PlaceOrderRequest(Struct, omit_defaults=True):
63
56
  symbol: str,
64
57
  time_in_force: definitions.TimeInForce,
65
58
  limit_price: Decimal,
66
- place_order_request_type: PlaceOrderRequestType,
59
+ order_type: definitions.OrderType,
67
60
  account: Optional[definitions.AccountIdOrName] = None,
68
61
  id: Optional[definitions.OrderId] = None,
69
62
  parent_id: Optional[definitions.OrderId] = None,
@@ -79,7 +72,7 @@ class PlaceOrderRequest(Struct, omit_defaults=True):
79
72
  symbol,
80
73
  time_in_force,
81
74
  limit_price,
82
- place_order_request_type,
75
+ order_type,
83
76
  account,
84
77
  id,
85
78
  parent_id,
@@ -91,7 +84,7 @@ class PlaceOrderRequest(Struct, omit_defaults=True):
91
84
  )
92
85
 
93
86
  def __str__(self) -> str:
94
- return f"PlaceOrderRequest(dir={self.d},quantity={self.q},symbol={self.s},time_in_force={self.tif},limit_price={self.p},place_order_request_type={self.k},account={self.a},id={self.id},parent_id={self.pid},source={self.src},trader={self.u},execution_venue={self.x},post_only={self.po},trigger_price={self.tp})"
87
+ return f"PlaceOrderRequest(dir={self.d},quantity={self.q},symbol={self.s},time_in_force={self.tif},limit_price={self.p},order_type={self.k},account={self.a},id={self.id},parent_id={self.pid},source={self.src},trader={self.u},execution_venue={self.x},post_only={self.po},trigger_price={self.tp})"
95
88
 
96
89
  @property
97
90
  def dir(self) -> OrderDir:
@@ -134,11 +127,11 @@ class PlaceOrderRequest(Struct, omit_defaults=True):
134
127
  self.p = value
135
128
 
136
129
  @property
137
- def place_order_request_type(self) -> PlaceOrderRequestType:
130
+ def order_type(self) -> definitions.OrderType:
138
131
  return self.k
139
132
 
140
- @place_order_request_type.setter
141
- def place_order_request_type(self, value: PlaceOrderRequestType) -> None:
133
+ @order_type.setter
134
+ def order_type(self, value: definitions.OrderType) -> None:
142
135
  self.k = value
143
136
 
144
137
  @property
@@ -217,27 +210,27 @@ class PlaceOrderRequest(Struct, omit_defaults=True):
217
210
  if self.k == "LIMIT":
218
211
  if not all(getattr(self, key) is not None for key in ["po"]):
219
212
  raise ValueError(
220
- f"When field k (place_order_request_type) is of value LIMIT, class PlaceOrderRequest requires fields ['po']"
213
+ f"When field k (order_type) is of value LIMIT, class PlaceOrderRequest requires fields ['po']"
221
214
  )
222
215
  elif any(getattr(self, key) is not None for key in ["tp"]):
223
216
  raise ValueError(
224
- f"When field k (place_order_request_type) is of value LIMIT, class PlaceOrderRequest should not have fields ['tp']"
217
+ f"When field k (order_type) is of value LIMIT, class PlaceOrderRequest should not have fields ['tp']"
225
218
  )
226
219
  elif self.k == "STOP_LOSS_LIMIT":
227
220
  if not all(getattr(self, key) is not None for key in ["tp"]):
228
221
  raise ValueError(
229
- f"When field k (place_order_request_type) is of value STOP_LOSS_LIMIT, class PlaceOrderRequest requires fields ['tp']"
222
+ f"When field k (order_type) is of value STOP_LOSS_LIMIT, class PlaceOrderRequest requires fields ['tp']"
230
223
  )
231
224
  elif any(getattr(self, key) is not None for key in ["po"]):
232
225
  raise ValueError(
233
- f"When field k (place_order_request_type) is of value STOP_LOSS_LIMIT, class PlaceOrderRequest should not have fields ['po']"
226
+ f"When field k (order_type) is of value STOP_LOSS_LIMIT, class PlaceOrderRequest should not have fields ['po']"
234
227
  )
235
228
  elif self.k == "TAKE_PROFIT_LIMIT":
236
229
  if not all(getattr(self, key) is not None for key in ["tp"]):
237
230
  raise ValueError(
238
- f"When field k (place_order_request_type) is of value TAKE_PROFIT_LIMIT, class PlaceOrderRequest requires fields ['tp']"
231
+ f"When field k (order_type) is of value TAKE_PROFIT_LIMIT, class PlaceOrderRequest requires fields ['tp']"
239
232
  )
240
233
  elif any(getattr(self, key) is not None for key in ["po"]):
241
234
  raise ValueError(
242
- f"When field k (place_order_request_type) is of value TAKE_PROFIT_LIMIT, class PlaceOrderRequest should not have fields ['po']"
235
+ f"When field k (order_type) is of value TAKE_PROFIT_LIMIT, class PlaceOrderRequest should not have fields ['po']"
243
236
  )
@@ -0,0 +1,2 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: schemas
@@ -0,0 +1,30 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: OptionsMarketdata/OptionsChain.json
3
+
4
+ from __future__ import annotations
5
+
6
+ from typing import List
7
+
8
+ from msgspec import Struct
9
+
10
+ from .. import definitions
11
+
12
+
13
+ class OptionsChain(Struct, omit_defaults=True):
14
+ calls: List[definitions.OptionsContract]
15
+ puts: List[definitions.OptionsContract]
16
+
17
+ # Constructor that takes all field titles as arguments for convenience
18
+ @classmethod
19
+ def new(
20
+ cls,
21
+ calls: List[definitions.OptionsContract],
22
+ puts: List[definitions.OptionsContract],
23
+ ):
24
+ return cls(
25
+ calls,
26
+ puts,
27
+ )
28
+
29
+ def __str__(self) -> str:
30
+ return f"OptionsChain(calls={self.calls},puts={self.puts})"
@@ -0,0 +1,30 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: OptionsMarketdata/OptionsChainGreeks.json
3
+
4
+ from __future__ import annotations
5
+
6
+ from typing import List
7
+
8
+ from msgspec import Struct
9
+
10
+ from .. import definitions
11
+
12
+
13
+ class OptionsChainGreeks(Struct, omit_defaults=True):
14
+ calls: List[definitions.OptionsGreeks]
15
+ puts: List[definitions.OptionsGreeks]
16
+
17
+ # Constructor that takes all field titles as arguments for convenience
18
+ @classmethod
19
+ def new(
20
+ cls,
21
+ calls: List[definitions.OptionsGreeks],
22
+ puts: List[definitions.OptionsGreeks],
23
+ ):
24
+ return cls(
25
+ calls,
26
+ puts,
27
+ )
28
+
29
+ def __str__(self) -> str:
30
+ return f"OptionsChainGreeks(calls={self.calls},puts={self.puts})"
@@ -0,0 +1,47 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: OptionsMarketdata/OptionsChainGreeksRequest.json
3
+
4
+ from __future__ import annotations
5
+ from architect_py.grpc.models.OptionsMarketdata.OptionsChainGreeks import (
6
+ OptionsChainGreeks,
7
+ )
8
+
9
+ from datetime import date
10
+
11
+ from msgspec import Struct
12
+
13
+
14
+ class OptionsChainGreeksRequest(Struct, omit_defaults=True):
15
+ expiration: date
16
+ underlying: str
17
+
18
+ # Constructor that takes all field titles as arguments for convenience
19
+ @classmethod
20
+ def new(
21
+ cls,
22
+ expiration: date,
23
+ underlying: str,
24
+ ):
25
+ return cls(
26
+ expiration,
27
+ underlying,
28
+ )
29
+
30
+ def __str__(self) -> str:
31
+ return f"OptionsChainGreeksRequest(expiration={self.expiration},underlying={self.underlying})"
32
+
33
+ @staticmethod
34
+ def get_response_type():
35
+ return OptionsChainGreeks
36
+
37
+ @staticmethod
38
+ def get_unannotated_response_type():
39
+ return OptionsChainGreeks
40
+
41
+ @staticmethod
42
+ def get_route() -> str:
43
+ return "/json.architect.OptionsMarketdata/OptionsChainGreeks"
44
+
45
+ @staticmethod
46
+ def get_rpc_method():
47
+ return "unary"
@@ -0,0 +1,45 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: OptionsMarketdata/OptionsChainRequest.json
3
+
4
+ from __future__ import annotations
5
+ from architect_py.grpc.models.OptionsMarketdata.OptionsChain import OptionsChain
6
+
7
+ from datetime import date
8
+
9
+ from msgspec import Struct
10
+
11
+
12
+ class OptionsChainRequest(Struct, omit_defaults=True):
13
+ expiration: date
14
+ underlying: str
15
+
16
+ # Constructor that takes all field titles as arguments for convenience
17
+ @classmethod
18
+ def new(
19
+ cls,
20
+ expiration: date,
21
+ underlying: str,
22
+ ):
23
+ return cls(
24
+ expiration,
25
+ underlying,
26
+ )
27
+
28
+ def __str__(self) -> str:
29
+ return f"OptionsChainRequest(expiration={self.expiration},underlying={self.underlying})"
30
+
31
+ @staticmethod
32
+ def get_response_type():
33
+ return OptionsChain
34
+
35
+ @staticmethod
36
+ def get_unannotated_response_type():
37
+ return OptionsChain
38
+
39
+ @staticmethod
40
+ def get_route() -> str:
41
+ return "/json.architect.OptionsMarketdata/OptionsChain"
42
+
43
+ @staticmethod
44
+ def get_rpc_method():
45
+ return "unary"
@@ -0,0 +1,29 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: OptionsMarketdata/OptionsExpirations.json
3
+
4
+ from __future__ import annotations
5
+
6
+ from datetime import date
7
+ from typing import List
8
+
9
+ from msgspec import Struct
10
+
11
+
12
+ class OptionsExpirations(Struct, omit_defaults=True):
13
+ expirations: List[date]
14
+ underlying: str
15
+
16
+ # Constructor that takes all field titles as arguments for convenience
17
+ @classmethod
18
+ def new(
19
+ cls,
20
+ expirations: List[date],
21
+ underlying: str,
22
+ ):
23
+ return cls(
24
+ expirations,
25
+ underlying,
26
+ )
27
+
28
+ def __str__(self) -> str:
29
+ return f"OptionsExpirations(expirations={self.expirations},underlying={self.underlying})"