architect-py 3.2.1__py3-none-any.whl → 5.0.0__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 (207) hide show
  1. architect_py/__init__.py +18 -2
  2. architect_py/async_client.py +1089 -658
  3. architect_py/client.py +36 -33
  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 +145 -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 +5 -4
  52. architect_py/{grpc_client → grpc/models}/Cpty/CptyResponse.py +6 -6
  53. architect_py/grpc/models/Cpty/CptyStatus.py +48 -0
  54. architect_py/grpc/models/Cpty/CptyStatusRequest.py +45 -0
  55. architect_py/grpc/models/Cpty/CptysRequest.py +37 -0
  56. architect_py/grpc/models/Cpty/CptysResponse.py +27 -0
  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 +14 -3
  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 +2 -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 +671 -934
  138. architect_py/grpc/resolve_endpoint.py +70 -0
  139. architect_py/{grpc_client/grpc_server.py → grpc/server.py} +13 -9
  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 -85
  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.0.dist-info/METADATA +54 -0
  158. architect_py-5.0.0.dist-info/RECORD +214 -0
  159. {architect_py-3.2.1.dist-info → architect_py-5.0.0.dist-info}/WHEEL +2 -1
  160. architect_py-5.0.0.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 -52
  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/Folio/AggregatedAccountSummariesRequest.py +0 -59
  184. architect_py/grpc_client/Folio/AggregatedAccountSummariesResponse.py +0 -27
  185. architect_py/grpc_client/Health/__init__.py +0 -2
  186. architect_py/grpc_client/Marketdata/__init__.py +0 -2
  187. architect_py/grpc_client/Oms/Cancel.py +0 -42
  188. architect_py/grpc_client/Oms/__init__.py +0 -2
  189. architect_py/grpc_client/Orderflow/__init__.py +0 -2
  190. architect_py/grpc_client/Symbology/__init__.py +0 -2
  191. architect_py/grpc_client/__init__.py +0 -2
  192. architect_py/grpc_client/grpc_client.py +0 -405
  193. architect_py/scalars.py +0 -172
  194. architect_py/tests/test_accounts.py +0 -31
  195. architect_py/tests/test_client.py +0 -29
  196. architect_py/tests/test_grpc_client.py +0 -30
  197. architect_py/tests/test_order_sending.py +0 -61
  198. architect_py/tests/test_snapshots.py +0 -52
  199. architect_py/tests/test_subscriptions.py +0 -129
  200. architect_py-3.2.1.dist-info/METADATA +0 -212
  201. architect_py-3.2.1.dist-info/RECORD +0 -146
  202. /architect_py/{grpc_client → grpc/models}/Marketdata/ArrayOfL1BookSnapshot.py +0 -0
  203. /architect_py/{grpc_client → grpc/models}/Marketdata/L2BookUpdate.py +0 -0
  204. /architect_py/{grpc_client → grpc/models}/Marketdata/TickerUpdate.py +0 -0
  205. /architect_py/{grpc_client → grpc/models}/Orderflow/Dropcopy.py +0 -0
  206. /architect_py/{grpc_client → grpc/models}/Orderflow/Orderflow.py +0 -0
  207. {architect_py-3.2.1.dist-info → architect_py-5.0.0.dist-info/licenses}/LICENSE +0 -0
@@ -1,212 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: architect-py
3
- Version: 3.2.1
4
- Summary: Client library for the Architect trading platform.
5
- Author: Architect Financial Technologies, Inc.
6
- Author-email: hello@architect.xyz
7
- Requires-Python: >=3.10,<4
8
- Classifier: Development Status :: 3 - Alpha
9
- Classifier: License :: OSI Approved :: Apache Software License
10
- Classifier: Operating System :: OS Independent
11
- Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.10
13
- Classifier: Programming Language :: Python :: 3.11
14
- Classifier: Programming Language :: Python :: 3.12
15
- Classifier: Programming Language :: Python :: 3.13
16
- Requires-Dist: asyncio (>=3)
17
- Requires-Dist: dnspython (>=2.0)
18
- Requires-Dist: gql[httpx] (>=3.5.0,<4.0.0)
19
- Requires-Dist: grpcio (>=1.66.1)
20
- Requires-Dist: msgspec (>=0.19,<0.20)
21
- Requires-Dist: pydantic (>=2.10,<3.0)
22
- Requires-Dist: websockets (>=11)
23
- Description-Content-Type: text/markdown
24
-
25
- # architect_py
26
- [![PyPI version](https://img.shields.io/pypi/v/architect-py.svg)](https://pypi.org/project/architect-py/)
27
-
28
- A Python API for [Architect](https://architect.co).
29
-
30
- Just some of the features of this API:
31
- symbology, market snapshots, past trades, account queries, order management (including sending advanced algos!), and market feed subscriptions.
32
-
33
- This repo heavily uses type hinting, so using a type checker such as Pylance or mypy is suggestible to reduce potential for error.
34
-
35
-
36
- ## Example usage
37
-
38
- `AsyncClient` and `Client` are the entryways into making calls to the Architect backend.
39
- Note that the sync `Client` does not have access to any subscription functions, because they are async by nature.
40
-
41
-
42
- ```python
43
- import asyncio
44
-
45
- from architect_py.async_client import AsyncClient
46
- from architect_py.scalars import TradableProduct
47
-
48
- async def main():
49
- c = await AsyncClient.connect(
50
- host="<your installation domain>", # e.g. app.architect.co for the brokerage
51
- api_key="<api key>",
52
- api_secret="<api secret>"
53
- paper_trading=True,
54
- )
55
- print(await c.who_am_i())
56
-
57
- series = await async_client.get_cme_futures_series("ES CME Futures")
58
- front_ES_future = series[0][1]
59
-
60
- s = c.subscribe_trades_stream(front_ES_future)
61
- async for trade in s:
62
- print(trade)
63
-
64
- asyncio.run(main())
65
- ```
66
-
67
- ```python
68
- from architect_py.client import Client
69
-
70
- def main():
71
- c = Client(
72
- host="<your installation domain>",
73
- api_key="<api key>",
74
- api_secret="<api secret>"
75
- paper_trading=True,
76
- )
77
- print(c.who_am_i())
78
-
79
- print(client.get_account_summaries())
80
-
81
- print(client.search_symbols("ES"))
82
- ```
83
-
84
- While the AsyncClient is the recommended way to use the Architect API, the Client instead without any familiarity with `async/await`.
85
- The sync clients and async clients usage is identical, except one removes the `await` before the call. The only exception to this is that the sync client does not support any subscriptions, because they are inherently asynchronous.
86
-
87
- Check the `examples` folder or the `architect_py/tests` folders for example usages.
88
-
89
-
90
- ## Function Breakdown
91
-
92
-
93
- The `async` client has the following functions
94
- ```
95
- # Initialization
96
-
97
- connect: The main way to create an AsyncClient object.
98
- __init__: Users should not be using this constructor directly, unless they do not want to use any subscription methods.
99
-
100
- # Symbology
101
-
102
- search_symbols: Search for symbols in the Architect database.
103
- get_product_info: Get the product information (product_type, underlying, multiplier, etc.) for a symbol.
104
- get_product_infos: Get the product information (product_type, underlying, multiplier, etc.) for a list of symbols.
105
- get_execution_info: Get the execution information (tick_size, step_size, margin, etc.) for a symbol.
106
- get_execution_infos: Get the execution information (tick_size, step_size, etc.) for a list of symbols.
107
- get_cme_first_notice_date: Get the first notice date for a CME future.
108
- get_future_series: Get the series of futures for a given series symbol.
109
- get_expiration_from_CME_name: Get the expiration date from a CME future name.
110
- get_cme_futures_series: Get the futures in a series from the CME.
111
- get_cme_future_from_root_month_year: Get the symbol for a CME future from the root, month, and year.
112
-
113
- # Account Management
114
-
115
- who_am_i: Gets the user_id and user_email for the user that the API key belongs to.
116
- list_accounts: List accounts for the user that the API key belongs to.
117
- get_account_summary: Gets the account summary for the given account.
118
- get_account_summaries: Gets the account summaries for the given accounts and trader.
119
- get_account_history: Gets the account history for the given account and dates.
120
-
121
- # Order Management
122
-
123
- get_open_orders: Returns a list of open orders for the user that match the filters.
124
- get_all_open_orders: Returns a list of all open orders for the user.
125
- get_historical_orders: Gets the historical orders that match the filters.
126
- get_order: Returns the OrderFields object for the specified order.
127
- get_orders: Returns a list of OrderFields objects for the specified orders.
128
- get_fills: Returns a list of fills for the given filters.
129
-
130
- # Market Data
131
-
132
- get_market_status: Returns market status for symbol (ie if it is quoting and trading).
133
- get_market_snapshot: This is an alias for l1_book_snapshot.
134
- get_market_snapshots: This is an alias for l1_book_snapshot.
135
- get_historical_candles: Gets the historical candles for a symbol.
136
- get_l1_book_snapshot: Gets the L1 book snapshot for a symbol.
137
- get_l1_book_snapshots: Gets the L1 book snapshots for a list of symbols.
138
- get_l2_book_snapshot: Gets the L2 book snapshot for a symbol.
139
- subscribe_l1_book_stream: Subscribe to the stream of L1BookSnapshots for a symbol.
140
- subscribe_l2_book_stream: Subscribe to the stream of L2BookUpdates for a symbol.
141
- subscribe_l1_book: Returns a L1BookSnapshot object that is constantly updating in the background.
142
- subscribe_l2_book: Returns a L2BookSnapshot object that is constantly updating in the background.
143
- subscribe_trades_stream: Subscribe to a stream of trades for a symbol
144
- subscribe_candles_stream: Subscribe to a stream of candles for a symbol
145
-
146
- # Order Entry and Cancellation
147
-
148
- send_limit_order: Sends a regular limit order.
149
- send_market_pro_order: Sends a market-order like limit price based on the BBO.
150
- cancel_order: Cancels an order by order id.
151
- cancel_all_orders: Cancels all open orders.
152
- ```
153
-
154
-
155
- ### Running examples from this package
156
-
157
- Clone this repository to run examples in the `examples` directory. This package
158
- uses poetry for dependency management. To enter a poetry virtual environment, make
159
- sure you have [poetry](https://python-poetry.org/docs/) installed and run the
160
- following from the repository root.
161
-
162
- ```bash
163
- poetry shell
164
- poetry install --sync
165
-
166
- export ARCHITECT_HOST="<your installation domain>"
167
- export ARCHITECT_API_KEY="<api key>"
168
- export ARCHITECT_API_SECRET="<api secret>"
169
-
170
- python -m examples.trades
171
- ```
172
-
173
- You can exit the poetry shell by running `exit`. Environment variables set
174
- within the shell are not persisted.
175
-
176
-
177
- ## API keys for the brokerage
178
-
179
- API keys/secrets for the brokerage can be generated on the [user account page](https://app.architect.co/user/account).
180
-
181
-
182
- ## Maintainers
183
-
184
- Python type conversions for scalars should be added to the codegen toml files, if needed.
185
-
186
- Important files:
187
- - `schema.graphql`: autogenerated from `architect-gql schema`
188
- - `queries.graphql`: add any new queries/mutations
189
- - `generate_protocol.py`: autogenerates the `architect_py/protocol/client_protocol.py`
190
- - `architect_py/protocol/client_protocol.py`: autogenerated from `generate_protocol.py`, contains the class that the sync client inherits from
191
- - `architect_py/async_client.py`: inherits from the ariadne generated base client
192
- - `architect_py/client.py`: contains the sync client, delegates functions calls to a composed AsyncClient in the innards, inherits from the client_protocol to give the correct type hinting from Pylance
193
- - `tests` and `examples`: self-explanatory
194
-
195
- The purpose of the client_protocol.py is so that the sync client can inherit from it and users can get good code completion and get the correct typing on their function calls, because
196
- the type-checker would otherwise not play nice with the way the sync_client is using the getattr magic function.
197
-
198
- On any update, please run `update.sh` and update the version in the `version` file on the top level.
199
- To publish a version, run `poetry build` then `poetry publish`.
200
-
201
-
202
- In addition, any new function should have a test included in test.py
203
-
204
- To run tests:
205
- `export $(cat pytest.env | xargs)`
206
- `pytest tests/*`
207
-
208
- ### What does `update.sh` do?
209
-
210
- 1. Uses ariadne-codegen to generate the async client
211
- 2. Autogenerates the protocol that the sync client inherits from
212
-
@@ -1,146 +0,0 @@
1
- architect_py/__init__.py,sha256=1S5KH1FNPb4rx92ez4CpJ-tqA4N6BnsBTl7-6NcBIu8,98
2
- architect_py/async_client.py,sha256=Btn5gOfQ2f02o5G7wLN_UtM_pfcWfDDTrT7HveziZk8,41720
3
- architect_py/client.py,sha256=8pANKT0tFDh7Ii2DsEQNkTNK_fA7erOctOtc_fVetS0,5545
4
- architect_py/client_protocol.py,sha256=j3YiGfAHWAdI2FFdPnYtS-jAx6248COAbZdaWG7fYWc,4809
5
- architect_py/graphql_client/__init__.py,sha256=HscnI0xDeyLY2SveYrtDPJyA4Qir1sfoHC1JxuHWQZE,8955
6
- architect_py/graphql_client/base_model.py,sha256=o2d-DixASFCGztr3rTiGX0AwgFu7Awr7EgD70FI8a-I,620
7
- architect_py/graphql_client/cancel_all_orders_mutation.py,sha256=h8S_lUy7rdSu1UgcUloiX2CCnuPIDaPCmfL2X2MOq8Y,352
8
- architect_py/graphql_client/cancel_order_mutation.py,sha256=FGCNrbLFmPXAYQ1vmpGC44viu2K2lZSCtXiO3O214ic,499
9
- architect_py/graphql_client/client.py,sha256=2BFPLLPmLZ5FU4Oj4zzWqaMoUfmnqEq3RwVU9jg3nek,43190
10
- architect_py/graphql_client/create_jwt.py,sha256=PiiOOjGnHLXro8AU7FSu_vQA_adEK1iZM6XAzHpJP5E,285
11
- architect_py/graphql_client/enums.py,sha256=FRcMJma0Rgjh9FY_gGGcXuuezAPy69yqFaXr4ZQwOZE,1468
12
- architect_py/graphql_client/exceptions.py,sha256=OQu-ZYCCV4VyMWTd1HR8gIjIK2CrA_JMlFxqOAJugWY,2411
13
- architect_py/graphql_client/fragments.py,sha256=bE-4W31jjwkiJCxsw2_PhE-YKBaifV-atwIfgiMYqwI,6398
14
- architect_py/graphql_client/get_account_history_query.py,sha256=eRx07b_vAroTOMvIxnigtSguQ3GmGBL8l8veS-ABRAM,605
15
- architect_py/graphql_client/get_account_query.py,sha256=l3eUIFkWJXxDWDKmqltJC3qT0UcOlO4BPMRJZ24El8M,478
16
- architect_py/graphql_client/get_account_summaries_query.py,sha256=3ZKIvNFqb4xLOLYuMg4Z4ZGQGZAd7W31yBIyqgKkhbA,627
17
- architect_py/graphql_client/get_account_summary_query.py,sha256=15MgJMzNG8mmDd1-NFZK65E8vvR6LoMRe_5wwRBuXnE,574
18
- architect_py/graphql_client/get_candle_snapshot_query.py,sha256=KjY1gCkfVTIJ-JXmHc2CzHgi9LB51w66Lvc0qHZ-Bok,633
19
- architect_py/graphql_client/get_execution_info_query.py,sha256=SFrCAAI3nBOezy0uz7VViWcyLlDgfWjbjdR66-lqSF8,585
20
- architect_py/graphql_client/get_execution_infos_query.py,sha256=fa5_sVw2xghrZiX8uSDx5rPbbV4wW_XpE5LxeaTID78,627
21
- architect_py/graphql_client/get_fills_query.py,sha256=ICu8pJM_Ezfl0EBGRZG5MJzFlibkGJqJBCOjryqhfjs,2242
22
- architect_py/graphql_client/get_first_notice_date_query.py,sha256=YT9nzW0GihGwr3eQ1_NULnb68RezVnT3xUnQNYcDTn0,665
23
- architect_py/graphql_client/get_future_series_query.py,sha256=pRfdJ31gW2bxYotmXvll6PtwFz8K6eNAZSo3DYBj1jI,383
24
- architect_py/graphql_client/get_historical_orders_query.py,sha256=FwxWPICnnfvdcQ7zftOLiROWOvaCrBLEibtaLsG_bnk,609
25
- architect_py/graphql_client/get_l_1_book_snapshot_query.py,sha256=UVfuPb7Rw62S5xwyS2Z8ynpNzY8WKroEmyCcFQ-HUWg,501
26
- architect_py/graphql_client/get_l_1_book_snapshots_query.py,sha256=CejehYMtqbibcat8pO8CICZo3Vhl1N1zRaiPaJWMhVw,542
27
- architect_py/graphql_client/get_l_2_book_snapshot_query.py,sha256=paAIdFw-YWZEFrbD1YdidzgTIyYHuG3AUmxEn3x8oOM,590
28
- architect_py/graphql_client/get_market_status_query.py,sha256=0O5KqC1kgbB5uHqESmZ505ORE5SZdCZT7h2kI0riEVY,578
29
- architect_py/graphql_client/get_open_orders_query.py,sha256=23Qk_RwXrDK8Ub_r-ma3N_YYwm_FWnVjv7QKuVuZE5Y,517
30
- architect_py/graphql_client/get_product_info_query.py,sha256=oxDDx3J2jGSnNXQZw-lDHdzZO33XCOC0hpNSofjqKQ0,598
31
- architect_py/graphql_client/get_product_infos_query.py,sha256=vZImiKh19LCG0yKiw9aP9y1lnUgxgywW7whj1FeSnGk,601
32
- architect_py/graphql_client/input_types.py,sha256=6Obe-vvDm4TDgH3oRZUzbEvkbquaQOHYRK_62B1_0FA,57
33
- architect_py/graphql_client/juniper_base_client.py,sha256=njikUx3G2PLqYmx6PGhT_EHALUwD9EHlI2o4W1XMnMk,12609
34
- architect_py/graphql_client/list_accounts_query.py,sha256=C-CpCZfbIfrT_4KJbvQlLIRKQb2DWGQCNWYFJy-K87g,487
35
- architect_py/graphql_client/place_order_mutation.py,sha256=KG45qNafDPvbuy3gfrBtre1zdLanam_gBKMmdf6GtFs,486
36
- architect_py/graphql_client/search_symbols_query.py,sha256=3YFDNoFmci-dGMuYQBoQpElqMqE16uRvBF3QKgwBaDQ,555
37
- architect_py/graphql_client/subscribe_candles.py,sha256=IWc1Rjs8aAPR4nDhDe_IzMYRVjdSSy5k7MpvSsTIH6w,295
38
- architect_py/graphql_client/subscribe_orderflow.py,sha256=5iB5nKa1YGFB8FfEdxKd8eGvKpyBm9LINGMQg_ZMhek,3350
39
- architect_py/graphql_client/subscribe_trades.py,sha256=XNIG5a0FaDPskHyDbV6WB75i5VhJP1wLrZ8xZ_LEiLM,602
40
- architect_py/graphql_client/user_email_query.py,sha256=KDFLFfLW5YtAptBm6CMQ_dVpcuEBofv4XlaYkW-VmcA,305
41
- architect_py/graphql_client/user_id_query.py,sha256=tWKJJLgEINzd8e7rYlGklQCnwcwHzYFpCGQvhxQGX20,334
42
- architect_py/grpc_client/Accounts/AccountsRequest.py,sha256=bxnUHm9VuyCWxMj5HzWnplIF5Vf_XTL5kxu54j1dDRk,1424
43
- architect_py/grpc_client/Accounts/AccountsResponse.py,sha256=UMK3OkB6wE50z_sXeFGzCW9mJIbVt75uWoSy3mHd218,647
44
- architect_py/grpc_client/Accounts/__init__.py,sha256=PdhPxuRZD3EWWUOG4cnz3WqTKn7jOOBeUZ_BzeELbNc,67
45
- architect_py/grpc_client/Algo/AlgoOrderForTwapAlgo.py,sha256=0wy8x1SdmtakFwLccFxmXwfqEK1ZqrTGFRdxibOwm-k,2073
46
- architect_py/grpc_client/Algo/CreateAlgoOrderRequestForTwapAlgo.py,sha256=Xl0yzCYMRITPb13HUFSpGJL_DwUSNxE0LTF8lPTHcS4,1809
47
- architect_py/grpc_client/Algo/ModifyAlgoOrderRequestForTwapAlgo.py,sha256=qZ_osRuqnbrWprDmjA7I6hw7r1dmuMvDdAhYZ6bthyM,1205
48
- architect_py/grpc_client/Algo/__init__.py,sha256=PdhPxuRZD3EWWUOG4cnz3WqTKn7jOOBeUZ_BzeELbNc,67
49
- architect_py/grpc_client/Cpty/CptyRequest.py,sha256=zUqwvkwHs-4lWughh8gc-Ivm87vDc53zNiqACyshEws,1653
50
- architect_py/grpc_client/Cpty/CptyResponse.py,sha256=sg8yWjebOgvJD33OdSjz9YA3cwFjA-GMacAt1HH8YXk,2895
51
- architect_py/grpc_client/Cpty/__init__.py,sha256=PdhPxuRZD3EWWUOG4cnz3WqTKn7jOOBeUZ_BzeELbNc,67
52
- architect_py/grpc_client/Folio/AccountHistoryRequest.py,sha256=kvzs3IewDe5XKnntqrNEx1dm1NCehdgE-wOoDFtvq0Q,1418
53
- architect_py/grpc_client/Folio/AccountHistoryResponse.py,sha256=YXjoM4yoJSVV9sC514hfNscVnSk46yWV39bAAvkV_Wg,633
54
- architect_py/grpc_client/Folio/AccountSummariesRequest.py,sha256=ZSOxFC9yErHj-iCTazb77J5m0C9zFowwMd2ozBJGags,1606
55
- architect_py/grpc_client/Folio/AccountSummariesResponse.py,sha256=bdkgXndmG06q94bkJRVsmJSqBTODMcOUqf6fcniufWA,689
56
- architect_py/grpc_client/Folio/AccountSummary.py,sha256=6-vpF_rTCDQyo5yRcrecIS6Lpdr6Fw8L3fUyI4joapU,3644
57
- architect_py/grpc_client/Folio/AccountSummaryRequest.py,sha256=an_dgK-vupkKJvDtm8bNtPJP-7eETXn9H03gAHkj590,1013
58
- architect_py/grpc_client/Folio/AggregatedAccountSummariesRequest.py,sha256=FsyKDVM5lTJuoju_2mfJBHFlkiUMjtgL9sXaWvsynxU,1686
59
- architect_py/grpc_client/Folio/AggregatedAccountSummariesResponse.py,sha256=DKzB7Hfz4EaqbNzYNc3lyoPJ5QZG9dyOeOfKZ5jG77c,747
60
- architect_py/grpc_client/Folio/HistoricalFillsRequest.py,sha256=cKkipWnPYcK9d_YZa3Z5A0ymOV00--qzC9ryOvzZKmU,2146
61
- architect_py/grpc_client/Folio/HistoricalFillsResponse.py,sha256=Wtds3tCbX_7XnkLgH_77Qns0PXKptMww1wop1VUZVJY,786
62
- architect_py/grpc_client/Folio/HistoricalOrdersRequest.py,sha256=_4KhbT5D_C-f6_oIs0q_AmRMkNog_kSedGcQyT867b0,2575
63
- architect_py/grpc_client/Folio/HistoricalOrdersResponse.py,sha256=44X3M7PGcEOZLFUcXSJ6U5lzGzJArUlyXygCCFxbNa0,603
64
- architect_py/grpc_client/Folio/__init__.py,sha256=PdhPxuRZD3EWWUOG4cnz3WqTKn7jOOBeUZ_BzeELbNc,67
65
- architect_py/grpc_client/Health/HealthCheckRequest.py,sha256=TDW71w8jvNF4U-sZmtdcA_r49xlfzVpkggtUhHKX7BY,1804
66
- architect_py/grpc_client/Health/HealthCheckResponse.py,sha256=7fQQfNGTn4xXBofWE94uUf9NJfJ22ICUTtplOG4mVWI,766
67
- architect_py/grpc_client/Health/__init__.py,sha256=PdhPxuRZD3EWWUOG4cnz3WqTKn7jOOBeUZ_BzeELbNc,67
68
- architect_py/grpc_client/Marketdata/ArrayOfL1BookSnapshot.py,sha256=Os13kKncZgwoCqrorTspvcj8EO7u4Xr3fNQV8mWONFM,329
69
- architect_py/grpc_client/Marketdata/Candle.py,sha256=W1ErJf7_Elf3o3voNYT4zOGwGkJ3Aqjob12iWxShA7E,8270
70
- architect_py/grpc_client/Marketdata/HistoricalCandlesRequest.py,sha256=TV0Lti-oOxZN7W-Mg0KvDOShKf4Eo-4Nol5x6cwa-xI,1425
71
- architect_py/grpc_client/Marketdata/HistoricalCandlesResponse.py,sha256=i6Ena2a572ywWAyMLq0R3RPdxQkwZTNCqw7FJN9az1Q,615
72
- architect_py/grpc_client/Marketdata/L1BookSnapshot.py,sha256=tH2gVk9TEL3o0l-rO__FhGyhqieI64qYgf1JeSa0zY0,2320
73
- architect_py/grpc_client/Marketdata/L1BookSnapshotRequest.py,sha256=TQeCKRNDfz_sQoeIEDQf3uhsdNHd0LVab6chkTRj9oY,947
74
- architect_py/grpc_client/Marketdata/L1BookSnapshotsRequest.py,sha256=1BfZd83R_ewDezjO8HHmte9T4Z8f_4yP0ZT-cmD1yYY,1093
75
- architect_py/grpc_client/Marketdata/L2BookSnapshot.py,sha256=dP4SnEK9HLYRbVg6zQjIbsfjZ3PIO7lGmQfnXPGkZ6k,2583
76
- architect_py/grpc_client/Marketdata/L2BookSnapshotRequest.py,sha256=Wc4MAVYWDKFn6oObpqxsndnnw7ntv2Uaw5LyeHwK11A,1083
77
- architect_py/grpc_client/Marketdata/L2BookUpdate.py,sha256=i-kWdJZvAoYEI280TfC3sTH46VIpMoj8N2UxWAkTDLs,2602
78
- architect_py/grpc_client/Marketdata/Liquidation.py,sha256=spPYu2QormVQRhFsjR2Ua1CFWEMY-9izebD8EUnn_ng,2453
79
- architect_py/grpc_client/Marketdata/MarketStatus.py,sha256=wyfjynbsqN-raeKKJDFU-xf7Qtv89TptzHzIs0V-2Aw,988
80
- architect_py/grpc_client/Marketdata/MarketStatusRequest.py,sha256=EBDYuz32PYbG9ARpFe7DV1LYK0Rmsfufn3wHTTu0iT4,1067
81
- architect_py/grpc_client/Marketdata/SubscribeCandlesRequest.py,sha256=DzL_eb2hycqjm04fE22W8bRRWD9CeevoKKvcWSAaXCY,1519
82
- architect_py/grpc_client/Marketdata/SubscribeCurrentCandlesRequest.py,sha256=GgoJPdriRaHVCv8La7v6jJcUqTOtGwncOgnfDzZK54Y,1964
83
- architect_py/grpc_client/Marketdata/SubscribeL1BookSnapshotsRequest.py,sha256=qHXC-2REIuD_W6vABUcE7wkamMm47X1K_XHAVyistGE,1288
84
- architect_py/grpc_client/Marketdata/SubscribeL2BookUpdatesRequest.py,sha256=_y5HbIra5IZlZLinGv0okSLy5Y0fxmBmpEQyKbWCI88,1144
85
- architect_py/grpc_client/Marketdata/SubscribeLiquidationsRequest.py,sha256=RDRkSXNq7KFnQPLZ0z_7Ac_A1qNptA7CLJJSou5Yirw,1050
86
- architect_py/grpc_client/Marketdata/SubscribeManyCandlesRequest.py,sha256=6YF3eVPH64iHWO5FcfezR7PZP3mDCn8OhnsJGkQUPgU,1523
87
- architect_py/grpc_client/Marketdata/SubscribeTickersRequest.py,sha256=2bxGr4jXwMrCcR2nzJtOfO5kJTHckVN4YLEJofYC4iA,1448
88
- architect_py/grpc_client/Marketdata/SubscribeTradesRequest.py,sha256=GPKWAgZBAGHx1StLZABZhS5akSAuzt-iGo1v_qqVBTM,1310
89
- architect_py/grpc_client/Marketdata/Ticker.py,sha256=l4tlb9Cay2ACWrEj_1x5ZAOWapWSXKg2ysoVERLHTHI,10674
90
- architect_py/grpc_client/Marketdata/TickerRequest.py,sha256=8tBrA3Qf-iaVcidZYzXM4Y3EYr3loOeJy-Fz7gXICAk,1019
91
- architect_py/grpc_client/Marketdata/TickerUpdate.py,sha256=sJ4wvCeGckMV30HwAcAsEMQbCzjN31OxF19q70jdxok,437
92
- architect_py/grpc_client/Marketdata/TickersRequest.py,sha256=2AXUtlpHoFEFL2-3tSIWxl6XW03-5k_4mmaz4twUa7s,1449
93
- architect_py/grpc_client/Marketdata/TickersResponse.py,sha256=6vQP9THIZLB4Wg6qsyxHyiwcNqJZqX1YdM_mDquxDQQ,585
94
- architect_py/grpc_client/Marketdata/Trade.py,sha256=ulehhycY8zc7c7rOaIA518FkiDyPHFScCiFFNY3YKnI,2509
95
- architect_py/grpc_client/Marketdata/__init__.py,sha256=PdhPxuRZD3EWWUOG4cnz3WqTKn7jOOBeUZ_BzeELbNc,67
96
- architect_py/grpc_client/Oms/Cancel.py,sha256=SnsTUrHxcw-KrOZ2FkosS6lBhvCCLGqhU5V8CI_wv74,945
97
- architect_py/grpc_client/Oms/CancelAllOrdersRequest.py,sha256=pPEqfDLIsp-5Q-6GugKwcH7rKUGO4Dyfh5E3ASmAEgk,1485
98
- architect_py/grpc_client/Oms/CancelAllOrdersResponse.py,sha256=CwMzd4bUHZPSb4huU7uLXE_abb7mMvafrOvzFmDJ748,449
99
- architect_py/grpc_client/Oms/CancelOrderRequest.py,sha256=X7VwVNvNOTyOVXKD_Urt4R71LZC0qYGEzwVaF0qEdik,1950
100
- architect_py/grpc_client/Oms/OpenOrdersRequest.py,sha256=J6JJetxfDtFxS9iuYRJBsC_KFqThqNgZVXYXkSpGmKQ,1815
101
- architect_py/grpc_client/Oms/OpenOrdersResponse.py,sha256=-0IhdvACdbnawPlv65m3x00VYTuIQu0bF-fQKFPyx1o,603
102
- architect_py/grpc_client/Oms/Order.py,sha256=wBGU656WhT-axd19sFSwGMEOm76aHSIfi1HCQAB8-jk,9810
103
- architect_py/grpc_client/Oms/PendingCancelsRequest.py,sha256=sl3yaAXckZOFIOLJ6hGw1n4SfHerifyVbym3vyxODUM,1631
104
- architect_py/grpc_client/Oms/PendingCancelsResponse.py,sha256=-fo9aD3w-vMADJtYm4t0oQO3u-dERA_diXH6X3iIEHc,639
105
- architect_py/grpc_client/Oms/PlaceOrderRequest.py,sha256=CI_DjpvbBzfqh7a0J3Jb9yTg_R_FO-51zmzbngE04Uk,8088
106
- architect_py/grpc_client/Oms/__init__.py,sha256=PdhPxuRZD3EWWUOG4cnz3WqTKn7jOOBeUZ_BzeELbNc,67
107
- architect_py/grpc_client/Orderflow/Dropcopy.py,sha256=hjcGXX1V-pWJNjirLW2a2-oLbb9WUw_h1nhFh-hPthM,621
108
- architect_py/grpc_client/Orderflow/DropcopyRequest.py,sha256=vPrmiXke5VZsWTy7qFz8eLe89sFUdrtXdz7uffPCN-o,1842
109
- architect_py/grpc_client/Orderflow/Orderflow.py,sha256=5y8d33GvVspOg5Nn_kXrV3VYKCts-MXiiFevrpRTORA,1894
110
- architect_py/grpc_client/Orderflow/OrderflowRequest.py,sha256=fghe41IVxNaybx1kYhruUg874bPzLiesuyCGGF1uF0A,1573
111
- architect_py/grpc_client/Orderflow/SubscribeOrderflowRequest.py,sha256=kqQMIB75k9MzqlrAu0ScQKw2huOWePlScQRN02HkoqQ,2100
112
- architect_py/grpc_client/Orderflow/__init__.py,sha256=PdhPxuRZD3EWWUOG4cnz3WqTKn7jOOBeUZ_BzeELbNc,67
113
- architect_py/grpc_client/Symbology/PruneExpiredSymbolsRequest.py,sha256=AUEDzBLmUKVfedG5c-U62EH4fJase1BfUlX5rvLt_0k,1442
114
- architect_py/grpc_client/Symbology/PruneExpiredSymbolsResponse.py,sha256=KckBKxq5W-IVzrFIhg32p9SfxUT8bOPnURIDG-ClrJQ,467
115
- architect_py/grpc_client/Symbology/SubscribeSymbology.py,sha256=Wu2MnLmwFbTKJRQsioXv6Vt1NQLrr3rTRlkJDxebaP8,440
116
- architect_py/grpc_client/Symbology/SymbologyRequest.py,sha256=MLTn2wYT9PSyFXZCReJYY76WCn-OA0f59s33MfWgm2M,859
117
- architect_py/grpc_client/Symbology/SymbologySnapshot.py,sha256=iBFcbDCURL1CWRAJ1O9dlrJ8VkjdiVlMojNjP4kBn-Y,1939
118
- architect_py/grpc_client/Symbology/SymbologyUpdate.py,sha256=VHvjUvAcbTSNX70BzPgqjZKIIB1nO7F4m2bitjG8InM,2381
119
- architect_py/grpc_client/Symbology/SymbolsRequest.py,sha256=j34Xd6u04nVMgACsownYYAR0kSq5DM9sDy21qw5iUMs,871
120
- architect_py/grpc_client/Symbology/SymbolsResponse.py,sha256=tkDlM6EcyzfZ0BKaVN3TXe-RmXwhVeQDkzopidxFwYw,550
121
- architect_py/grpc_client/Symbology/UploadSymbologyRequest.py,sha256=gbx9MpQvjCenP0aKogtCWZ21p-sqfvUKa5oI31sCx78,1851
122
- architect_py/grpc_client/Symbology/UploadSymbologyResponse.py,sha256=icEsRoE4g9hANqQjzsQm3SG8mMYAFTx9GgIvP-ST9qw,455
123
- architect_py/grpc_client/Symbology/__init__.py,sha256=PdhPxuRZD3EWWUOG4cnz3WqTKn7jOOBeUZ_BzeELbNc,67
124
- architect_py/grpc_client/__init__.py,sha256=LhTJC_UL_Ke_5CB_QtXwenh9z5ZMMrL_BKqi_bRkWls,117
125
- architect_py/grpc_client/definitions.py,sha256=JvF9bz1AAKw7l1he14mH7Pm4-TPmkVXes1roVQFOG60,83099
126
- architect_py/grpc_client/grpc_client.py,sha256=Q_vwn1UwmmhSA9429rKPwH_K1y6buo07MDMKNYN-eOI,14301
127
- architect_py/grpc_client/grpc_server.py,sha256=7djvUu2AfYXKKcukqAAlN9Z50xG-kz_XUXUuOCgZzzs,2017
128
- architect_py/scalars.py,sha256=fPGkAC9MWUaTyCj7N7jXBPoPJk5yWPkcC7a-XUMN-u4,4948
129
- architect_py/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
- architect_py/tests/conftest.py,sha256=AwjV0Tn-KxMepR6GYya_bgyd8bSaIMCm7dez7DG4vJg,3410
131
- architect_py/tests/test_accounts.py,sha256=DyYZBcxc9x5aRNOLwUjEHGZQcdKRcQEMv7-zG4ddn-c,849
132
- architect_py/tests/test_book_building.py,sha256=eb1DcTuwo8dEQDkxpboh9zl7ApjB901Q7IbqH3jSbqo,1139
133
- architect_py/tests/test_client.py,sha256=_EfRGRLGR5mIqbUM7ez32JBzFMd16htIf0523E-tu-0,916
134
- architect_py/tests/test_grpc_client.py,sha256=4W_3dsbO2HawizT_6uItToGnhFn5ZwVoO-TSiRNzdSE,914
135
- architect_py/tests/test_order_sending.py,sha256=1uRMOBsONxLSPhXTUyWkZC4E3tGPCEVHcriFlCmu_-0,1908
136
- architect_py/tests/test_rounding.py,sha256=OU4-vbr5UWx8d8V5OSNKPsCrfOXuePCupCn4sKkYyAc,1361
137
- architect_py/tests/test_snapshots.py,sha256=quSEdeG6nTXfqVauGrSYs82YSX7kTVHjc4HPLzb24Yg,1470
138
- architect_py/tests/test_subscriptions.py,sha256=9DZyaQIF8sjoiH9jMIQEBrMKjHNIoRn9BSQwm9Sajow,3789
139
- architect_py/tests/test_symbology.py,sha256=tLRFyUkcKWQka0RGZIvy71oJ1vxzL412ws1hyw2eFA4,2536
140
- architect_py/utils/nearest_tick.py,sha256=RUww8pv0WioPJ5ilP9un68JIpqN_3HdEUskk2H6ePTI,4813
141
- architect_py/utils/nearest_tick_2.py,sha256=CpcR3OnAsiBYrUlw--fRdkSRY4q_ADrmfWXB4uJixHo,3642
142
- architect_py/utils/price_bands.py,sha256=AKln6uZlLy4AVOaBBnn-ZvhxuTpWFjtyTbfJJ4NpSHQ,21951
143
- architect_py-3.2.1.dist-info/LICENSE,sha256=6P0_5gYN8iPWPZeqA9nxiO3tRQmcSA1ijAVR7C8j1SI,11362
144
- architect_py-3.2.1.dist-info/METADATA,sha256=O1lI22nfLxnL3i8vGD-EK-N8d_cyHslouxte1BdCyKw,8637
145
- architect_py-3.2.1.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
146
- architect_py-3.2.1.dist-info/RECORD,,