architect-py 5.0.0b3__py3-none-any.whl → 5.1.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.
- architect_py/__init__.py +432 -5
- architect_py/async_client.py +77 -43
- architect_py/client.py +11 -4
- architect_py/client.pyi +504 -0
- architect_py/common_types/__init__.py +2 -1
- architect_py/common_types/time_in_force.py +94 -0
- architect_py/common_types/tradable_product.py +9 -0
- architect_py/graphql_client/__init__.py +1 -216
- architect_py/graphql_client/client.py +2 -1043
- architect_py/graphql_client/enums.py +0 -72
- architect_py/graphql_client/fragments.py +4 -152
- architect_py/grpc/__init__.py +0 -143
- architect_py/grpc/client.py +6 -1
- architect_py/grpc/models/Core/RestartCptyRequest.py +40 -0
- architect_py/grpc/models/Core/RestartCptyResponse.py +20 -0
- architect_py/grpc/models/Marketdata/Liquidation.py +0 -1
- architect_py/grpc/models/Marketdata/Ticker.py +14 -1
- architect_py/grpc/models/Marketdata/TickersRequest.py +38 -12
- architect_py/grpc/models/Marketdata/Trade.py +0 -1
- architect_py/grpc/models/Oms/Order.py +33 -24
- architect_py/grpc/models/Oms/PlaceOrderRequest.py +33 -24
- architect_py/grpc/models/__init__.py +113 -2
- architect_py/grpc/models/definitions.py +2 -32
- architect_py/grpc/utils.py +1 -4
- architect_py/tests/test_order_entry.py +2 -3
- architect_py/tests/test_orderflow.py +1 -1
- architect_py/utils/pandas.py +4 -3
- architect_py-5.1.0.dist-info/METADATA +66 -0
- {architect_py-5.0.0b3.dist-info → architect_py-5.1.0.dist-info}/RECORD +48 -67
- {architect_py-5.0.0b3.dist-info → architect_py-5.1.0.dist-info}/WHEEL +1 -1
- examples/book_subscription.py +1 -2
- examples/candles.py +1 -3
- examples/common.py +1 -2
- examples/external_cpty.py +2 -2
- examples/funding_rate_mean_reversion_algo.py +9 -6
- examples/order_sending.py +29 -9
- examples/stream_l1_marketdata.py +1 -2
- examples/stream_l2_marketdata.py +1 -2
- examples/trades.py +1 -2
- examples/tutorial_async.py +6 -8
- examples/tutorial_sync.py +6 -7
- scripts/add_imports_to_inits.py +146 -0
- scripts/correct_sync_interface.py +143 -0
- scripts/postprocess_grpc.py +57 -11
- scripts/preprocess_grpc_schema.py +2 -0
- scripts/prune_graphql_schema.py +187 -0
- architect_py/client_interface.py +0 -63
- architect_py/common_types/scalars.py +0 -25
- architect_py/graphql_client/cancel_all_orders_mutation.py +0 -17
- architect_py/graphql_client/cancel_order_mutation.py +0 -23
- architect_py/graphql_client/create_jwt.py +0 -17
- architect_py/graphql_client/get_account_history_query.py +0 -27
- architect_py/graphql_client/get_account_query.py +0 -23
- architect_py/graphql_client/get_account_summaries_query.py +0 -27
- architect_py/graphql_client/get_account_summary_query.py +0 -25
- architect_py/graphql_client/get_candle_snapshot_query.py +0 -27
- architect_py/graphql_client/get_fills_query.py +0 -69
- architect_py/graphql_client/get_historical_orders_query.py +0 -27
- architect_py/graphql_client/get_l_1_book_snapshot_query.py +0 -21
- architect_py/graphql_client/get_l_1_book_snapshots_query.py +0 -23
- architect_py/graphql_client/get_l_2_book_snapshot_query.py +0 -25
- architect_py/graphql_client/get_market_status_query.py +0 -25
- architect_py/graphql_client/get_open_orders_query.py +0 -25
- architect_py/graphql_client/list_accounts_query.py +0 -23
- architect_py/graphql_client/place_order_mutation.py +0 -23
- architect_py/graphql_client/subscribe_candles.py +0 -16
- architect_py/graphql_client/subscribe_orderflow.py +0 -100
- architect_py/graphql_client/subscribe_trades.py +0 -27
- architect_py/graphql_client/user_email_query.py +0 -17
- architect_py/internal_utils/__init__.py +0 -0
- architect_py/internal_utils/no_pandas.py +0 -3
- architect_py-5.0.0b3.dist-info/METADATA +0 -123
- scripts/generate_sync_interface.py +0 -226
- {architect_py-5.0.0b3.dist-info → architect_py-5.1.0.dist-info}/licenses/LICENSE +0 -0
- {architect_py-5.0.0b3.dist-info → architect_py-5.1.0.dist-info}/top_level.txt +0 -0
@@ -4,78 +4,6 @@
|
|
4
4
|
from enum import Enum
|
5
5
|
|
6
6
|
|
7
|
-
class CancelStatus(str, Enum):
|
8
|
-
PENDING = "PENDING"
|
9
|
-
ACKED = "ACKED"
|
10
|
-
REJECTED = "REJECTED"
|
11
|
-
OUT = "OUT"
|
12
|
-
|
13
|
-
|
14
|
-
class CandleWidth(str, Enum):
|
15
|
-
ONE_SECOND = "ONE_SECOND"
|
16
|
-
FIVE_SECOND = "FIVE_SECOND"
|
17
|
-
ONE_MINUTE = "ONE_MINUTE"
|
18
|
-
FIFTEEN_MINUTE = "FIFTEEN_MINUTE"
|
19
|
-
ONE_HOUR = "ONE_HOUR"
|
20
|
-
ONE_DAY = "ONE_DAY"
|
21
|
-
|
22
|
-
|
23
|
-
class FillKind(str, Enum):
|
24
|
-
NORMAL = "NORMAL"
|
25
|
-
REVERSAL = "REVERSAL"
|
26
|
-
CORRECTION = "CORRECTION"
|
27
|
-
|
28
|
-
|
29
7
|
class MinOrderQuantityUnit(str, Enum):
|
30
8
|
BASE = "BASE"
|
31
9
|
QUOTE = "QUOTE"
|
32
|
-
|
33
|
-
|
34
|
-
class OrderSource(str, Enum):
|
35
|
-
API = "API"
|
36
|
-
GUI = "GUI"
|
37
|
-
ALGO = "ALGO"
|
38
|
-
RECONCILED = "RECONCILED"
|
39
|
-
CLI = "CLI"
|
40
|
-
TELEGRAM = "TELEGRAM"
|
41
|
-
OTHER = "OTHER"
|
42
|
-
|
43
|
-
|
44
|
-
class OrderStatus(str, Enum):
|
45
|
-
PENDING = "PENDING"
|
46
|
-
OPEN = "OPEN"
|
47
|
-
REJECTED = "REJECTED"
|
48
|
-
OUT = "OUT"
|
49
|
-
CANCELING = "CANCELING"
|
50
|
-
CANCELED = "CANCELED"
|
51
|
-
RECONCILED_OUT = "RECONCILED_OUT"
|
52
|
-
STALE = "STALE"
|
53
|
-
UNKNOWN = "UNKNOWN"
|
54
|
-
|
55
|
-
|
56
|
-
class OrderType(str, Enum):
|
57
|
-
LIMIT = "LIMIT"
|
58
|
-
STOP_LOSS_LIMIT = "STOP_LOSS_LIMIT"
|
59
|
-
TAKE_PROFIT_LIMIT = "TAKE_PROFIT_LIMIT"
|
60
|
-
|
61
|
-
|
62
|
-
class PutOrCall(str, Enum):
|
63
|
-
PUT = "PUT"
|
64
|
-
CALL = "CALL"
|
65
|
-
|
66
|
-
|
67
|
-
class SortTickersBy(str, Enum):
|
68
|
-
VOLUME_DESC = "VOLUME_DESC"
|
69
|
-
CHANGE_ASC = "CHANGE_ASC"
|
70
|
-
CHANGE_DESC = "CHANGE_DESC"
|
71
|
-
ABS_CHANGE_DESC = "ABS_CHANGE_DESC"
|
72
|
-
|
73
|
-
|
74
|
-
class TimeInForce(str, Enum):
|
75
|
-
GTC = "GTC"
|
76
|
-
GTD = "GTD"
|
77
|
-
DAY = "DAY"
|
78
|
-
IOC = "IOC"
|
79
|
-
FOK = "FOK"
|
80
|
-
ATO = "ATO"
|
81
|
-
ATC = "ATC"
|
@@ -1,93 +1,14 @@
|
|
1
1
|
# Generated by ariadne-codegen
|
2
2
|
# Source: queries.graphql
|
3
3
|
|
4
|
-
from datetime import date
|
4
|
+
from datetime import date
|
5
5
|
from decimal import Decimal
|
6
|
-
from typing import
|
7
|
-
from uuid import UUID
|
6
|
+
from typing import List, Optional
|
8
7
|
|
9
|
-
from pydantic import
|
10
|
-
|
11
|
-
from architect_py.common_types import OrderDir, TradableProduct
|
12
|
-
from architect_py.common_types.order_dir import graphql_parse_order_dir
|
13
|
-
from architect_py.common_types.tradable_product import parse_tradable_product
|
8
|
+
from pydantic import Field
|
14
9
|
|
15
10
|
from .base_model import BaseModel
|
16
|
-
from .enums import
|
17
|
-
CancelStatus,
|
18
|
-
CandleWidth,
|
19
|
-
MinOrderQuantityUnit,
|
20
|
-
OrderSource,
|
21
|
-
OrderStatus,
|
22
|
-
OrderType,
|
23
|
-
TimeInForce,
|
24
|
-
)
|
25
|
-
|
26
|
-
|
27
|
-
class AccountSummaryFields(BaseModel):
|
28
|
-
account: UUID
|
29
|
-
timestamp: datetime
|
30
|
-
balances: List["AccountSummaryFieldsBalances"]
|
31
|
-
positions: List["AccountSummaryFieldsPositions"]
|
32
|
-
unrealized_pnl: Optional[Decimal] = Field(alias="unrealizedPnl")
|
33
|
-
realized_pnl: Optional[Decimal] = Field(alias="realizedPnl")
|
34
|
-
equity: Optional[Decimal]
|
35
|
-
yesterday_equity: Optional[Decimal] = Field(alias="yesterdayEquity")
|
36
|
-
cash_excess: Optional[Decimal] = Field(alias="cashExcess")
|
37
|
-
purchasing_power: Optional[Decimal] = Field(alias="purchasingPower")
|
38
|
-
total_margin: Optional[Decimal] = Field(alias="totalMargin")
|
39
|
-
position_margin: Optional[Decimal] = Field(alias="positionMargin")
|
40
|
-
|
41
|
-
|
42
|
-
class AccountSummaryFieldsBalances(BaseModel):
|
43
|
-
product: str
|
44
|
-
balance: Decimal
|
45
|
-
|
46
|
-
|
47
|
-
class AccountSummaryFieldsPositions(BaseModel):
|
48
|
-
symbol: Annotated[TradableProduct, BeforeValidator(parse_tradable_product)]
|
49
|
-
quantity: Decimal
|
50
|
-
trade_time: Optional[datetime] = Field(alias="tradeTime")
|
51
|
-
cost_basis: Optional[Decimal] = Field(alias="costBasis")
|
52
|
-
break_even_price: Optional[Decimal] = Field(alias="breakEvenPrice")
|
53
|
-
liquidation_price: Optional[Decimal] = Field(alias="liquidationPrice")
|
54
|
-
|
55
|
-
|
56
|
-
class AccountWithPermissionsFields(BaseModel):
|
57
|
-
account: "AccountWithPermissionsFieldsAccount"
|
58
|
-
trader: str
|
59
|
-
permissions: "AccountWithPermissionsFieldsPermissions"
|
60
|
-
|
61
|
-
|
62
|
-
class AccountWithPermissionsFieldsAccount(BaseModel):
|
63
|
-
id: UUID
|
64
|
-
name: str
|
65
|
-
|
66
|
-
|
67
|
-
class AccountWithPermissionsFieldsPermissions(BaseModel):
|
68
|
-
list: bool
|
69
|
-
view: bool
|
70
|
-
trade: bool
|
71
|
-
reduce_or_close: bool = Field(alias="reduceOrClose")
|
72
|
-
set_limits: bool = Field(alias="setLimits")
|
73
|
-
|
74
|
-
|
75
|
-
class CancelFields(BaseModel):
|
76
|
-
cancel_id: UUID = Field(alias="cancelId")
|
77
|
-
order_id: str = Field(alias="orderId")
|
78
|
-
recv_time: Optional[datetime] = Field(alias="recvTime")
|
79
|
-
status: CancelStatus
|
80
|
-
reject_reason: Optional[str] = Field(alias="rejectReason")
|
81
|
-
|
82
|
-
|
83
|
-
class CandleFields(BaseModel):
|
84
|
-
timestamp: Optional[datetime]
|
85
|
-
width: CandleWidth
|
86
|
-
open: Optional[Decimal]
|
87
|
-
high: Optional[Decimal]
|
88
|
-
low: Optional[Decimal]
|
89
|
-
close: Optional[Decimal]
|
90
|
-
volume: Decimal
|
11
|
+
from .enums import MinOrderQuantityUnit
|
91
12
|
|
92
13
|
|
93
14
|
class ExecutionInfoFields(BaseModel):
|
@@ -102,66 +23,6 @@ class ExecutionInfoFields(BaseModel):
|
|
102
23
|
maintenance_margin: Optional[Decimal] = Field(alias="maintenanceMargin")
|
103
24
|
|
104
25
|
|
105
|
-
class L2BookLevelFields(BaseModel):
|
106
|
-
price: Decimal
|
107
|
-
size: Decimal
|
108
|
-
|
109
|
-
|
110
|
-
class L2BookFields(BaseModel):
|
111
|
-
timestamp: Optional[datetime]
|
112
|
-
bids: List["L2BookFieldsBids"]
|
113
|
-
asks: List["L2BookFieldsAsks"]
|
114
|
-
|
115
|
-
|
116
|
-
class L2BookFieldsBids(L2BookLevelFields):
|
117
|
-
pass
|
118
|
-
|
119
|
-
|
120
|
-
class L2BookFieldsAsks(L2BookLevelFields):
|
121
|
-
pass
|
122
|
-
|
123
|
-
|
124
|
-
class MarketStatusFields(BaseModel):
|
125
|
-
symbol: str
|
126
|
-
is_trading: Optional[bool] = Field(alias="isTrading")
|
127
|
-
is_quoting: Optional[bool] = Field(alias="isQuoting")
|
128
|
-
|
129
|
-
|
130
|
-
class MarketTickerFields(BaseModel):
|
131
|
-
symbol: str
|
132
|
-
timestamp: Optional[datetime]
|
133
|
-
bid_price: Optional[Decimal] = Field(alias="bidPrice")
|
134
|
-
bid_size: Optional[Decimal] = Field(alias="bidSize")
|
135
|
-
ask_price: Optional[Decimal] = Field(alias="askPrice")
|
136
|
-
ask_size: Optional[Decimal] = Field(alias="askSize")
|
137
|
-
last_price: Optional[Decimal] = Field(alias="lastPrice")
|
138
|
-
last_size: Optional[Decimal] = Field(alias="lastSize")
|
139
|
-
|
140
|
-
|
141
|
-
class OrderFields(BaseModel):
|
142
|
-
id: str
|
143
|
-
parent_id: Optional[str] = Field(alias="parentId")
|
144
|
-
recv_time: Optional[datetime] = Field(alias="recvTime")
|
145
|
-
status: OrderStatus
|
146
|
-
reject_reason: Optional[str] = Field(alias="rejectReason")
|
147
|
-
reject_message: Optional[str] = Field(alias="rejectMessage")
|
148
|
-
symbol: str
|
149
|
-
trader: str
|
150
|
-
account: UUID
|
151
|
-
dir: Annotated[OrderDir, BeforeValidator(graphql_parse_order_dir)]
|
152
|
-
quantity: Decimal
|
153
|
-
filled_quantity: Decimal = Field(alias="filledQuantity")
|
154
|
-
average_fill_price: Optional[Decimal] = Field(alias="averageFillPrice")
|
155
|
-
order_type: OrderType = Field(alias="orderType")
|
156
|
-
limit_price: Optional[Decimal] = Field(alias="limitPrice")
|
157
|
-
post_only: Optional[bool] = Field(alias="postOnly")
|
158
|
-
trigger_price: Optional[Decimal] = Field(alias="triggerPrice")
|
159
|
-
time_in_force: TimeInForce = Field(alias="timeInForce")
|
160
|
-
good_til_date: Optional[datetime] = Field(alias="goodTilDate")
|
161
|
-
source: OrderSource
|
162
|
-
execution_venue: str = Field(alias="executionVenue")
|
163
|
-
|
164
|
-
|
165
26
|
class SpreadLegFields(BaseModel):
|
166
27
|
product: str
|
167
28
|
quantity: Decimal
|
@@ -186,15 +47,6 @@ class ProductInfoFieldsSpreadLegs(SpreadLegFields):
|
|
186
47
|
pass
|
187
48
|
|
188
49
|
|
189
|
-
AccountSummaryFields.model_rebuild()
|
190
|
-
AccountWithPermissionsFields.model_rebuild()
|
191
|
-
CancelFields.model_rebuild()
|
192
|
-
CandleFields.model_rebuild()
|
193
50
|
ExecutionInfoFields.model_rebuild()
|
194
|
-
L2BookLevelFields.model_rebuild()
|
195
|
-
L2BookFields.model_rebuild()
|
196
|
-
MarketStatusFields.model_rebuild()
|
197
|
-
MarketTickerFields.model_rebuild()
|
198
|
-
OrderFields.model_rebuild()
|
199
51
|
SpreadLegFields.model_rebuild()
|
200
52
|
ProductInfoFields.model_rebuild()
|
architect_py/grpc/__init__.py
CHANGED
@@ -1,143 +0,0 @@
|
|
1
|
-
from .models.Accounts.AccountsRequest import AccountsRequest
|
2
|
-
from .models.Accounts.AccountsResponse import AccountsResponse
|
3
|
-
from .models.Auth.CreateJwtRequest import CreateJwtRequest
|
4
|
-
from .models.Auth.CreateJwtResponse import CreateJwtResponse
|
5
|
-
from .models.Core.ConfigRequest import ConfigRequest
|
6
|
-
from .models.Core.ConfigResponse import ConfigResponse
|
7
|
-
from .models.Cpty.CptyRequest import CptyRequest
|
8
|
-
from .models.Cpty.CptyResponse import CptyResponse
|
9
|
-
from .models.Cpty.CptysRequest import CptysRequest
|
10
|
-
from .models.Cpty.CptysResponse import CptysResponse
|
11
|
-
from .models.Cpty.CptyStatus import CptyStatus
|
12
|
-
from .models.Cpty.CptyStatusRequest import CptyStatusRequest
|
13
|
-
from .models.definitions import (
|
14
|
-
Account,
|
15
|
-
AccountIdOrName,
|
16
|
-
AccountPosition,
|
17
|
-
AccountStatistics,
|
18
|
-
AccountWithPermissions,
|
19
|
-
CandleWidth,
|
20
|
-
L2BookDiff,
|
21
|
-
OrderId,
|
22
|
-
OrderSource,
|
23
|
-
OrderType,
|
24
|
-
SortTickersBy,
|
25
|
-
TimeInForce,
|
26
|
-
TimeInForceEnum,
|
27
|
-
TraderIdOrEmail,
|
28
|
-
)
|
29
|
-
from .models.Folio.AccountHistoryRequest import AccountHistoryRequest
|
30
|
-
from .models.Folio.AccountHistoryResponse import AccountHistoryResponse
|
31
|
-
from .models.Folio.AccountSummariesRequest import AccountSummariesRequest
|
32
|
-
from .models.Folio.AccountSummariesResponse import AccountSummariesResponse
|
33
|
-
from .models.Folio.AccountSummary import AccountSummary
|
34
|
-
from .models.Folio.AccountSummaryRequest import AccountSummaryRequest
|
35
|
-
from .models.Folio.HistoricalFillsRequest import HistoricalFillsRequest
|
36
|
-
from .models.Folio.HistoricalFillsResponse import HistoricalFillsResponse
|
37
|
-
from .models.Folio.HistoricalOrdersRequest import HistoricalOrdersRequest
|
38
|
-
from .models.Folio.HistoricalOrdersResponse import HistoricalOrdersResponse
|
39
|
-
from .models.Marketdata.ArrayOfL1BookSnapshot import ArrayOfL1BookSnapshot
|
40
|
-
from .models.Marketdata.Candle import Candle
|
41
|
-
from .models.Marketdata.HistoricalCandlesRequest import HistoricalCandlesRequest
|
42
|
-
from .models.Marketdata.HistoricalCandlesResponse import HistoricalCandlesResponse
|
43
|
-
from .models.Marketdata.L1BookSnapshot import L1BookSnapshot
|
44
|
-
from .models.Marketdata.L1BookSnapshotRequest import L1BookSnapshotRequest
|
45
|
-
from .models.Marketdata.L1BookSnapshotsRequest import L1BookSnapshotsRequest
|
46
|
-
from .models.Marketdata.L2BookSnapshot import L2BookSnapshot
|
47
|
-
from .models.Marketdata.L2BookSnapshotRequest import L2BookSnapshotRequest
|
48
|
-
from .models.Marketdata.L2BookUpdate import L2BookUpdate
|
49
|
-
from .models.Marketdata.Liquidation import Liquidation
|
50
|
-
from .models.Marketdata.MarketStatus import MarketStatus
|
51
|
-
from .models.Marketdata.MarketStatusRequest import MarketStatusRequest
|
52
|
-
from .models.Marketdata.SubscribeCandlesRequest import SubscribeCandlesRequest
|
53
|
-
from .models.Marketdata.SubscribeCurrentCandlesRequest import (
|
54
|
-
SubscribeCurrentCandlesRequest,
|
55
|
-
)
|
56
|
-
from .models.Marketdata.SubscribeL1BookSnapshotsRequest import (
|
57
|
-
SubscribeL1BookSnapshotsRequest,
|
58
|
-
)
|
59
|
-
from .models.Marketdata.SubscribeL2BookUpdatesRequest import (
|
60
|
-
SubscribeL2BookUpdatesRequest,
|
61
|
-
)
|
62
|
-
from .models.Marketdata.SubscribeLiquidationsRequest import SubscribeLiquidationsRequest
|
63
|
-
from .models.Marketdata.SubscribeManyCandlesRequest import SubscribeManyCandlesRequest
|
64
|
-
from .models.Marketdata.SubscribeTickersRequest import SubscribeTickersRequest
|
65
|
-
from .models.Marketdata.SubscribeTradesRequest import SubscribeTradesRequest
|
66
|
-
from .models.Marketdata.Ticker import Ticker
|
67
|
-
from .models.Marketdata.TickerRequest import TickerRequest
|
68
|
-
from .models.Marketdata.TickersRequest import TickersRequest
|
69
|
-
from .models.Marketdata.TickersResponse import TickersResponse
|
70
|
-
from .models.Marketdata.TickerUpdate import TickerUpdate
|
71
|
-
from .models.Marketdata.Trade import Trade
|
72
|
-
from .models.Symbology.SymbolsRequest import SymbolsRequest
|
73
|
-
from .models.Symbology.SymbolsResponse import SymbolsResponse
|
74
|
-
from .resolve_endpoint import resolve_endpoint
|
75
|
-
|
76
|
-
__all__ = [
|
77
|
-
"Account",
|
78
|
-
"AccountHistoryRequest",
|
79
|
-
"AccountHistoryResponse",
|
80
|
-
"AccountIdOrName",
|
81
|
-
"AccountPosition",
|
82
|
-
"AccountStatistics",
|
83
|
-
"AccountsRequest",
|
84
|
-
"AccountsResponse",
|
85
|
-
"AccountSummaryRequest",
|
86
|
-
"AccountSummary",
|
87
|
-
"AccountSummariesRequest",
|
88
|
-
"AccountSummariesResponse",
|
89
|
-
"AccountWithPermissions",
|
90
|
-
"ArrayOfL1BookSnapshot",
|
91
|
-
"Candle",
|
92
|
-
"CandleWidth",
|
93
|
-
"CreateJwtRequest",
|
94
|
-
"CreateJwtResponse",
|
95
|
-
"ConfigRequest",
|
96
|
-
"ConfigResponse",
|
97
|
-
"CptyRequest",
|
98
|
-
"CptyResponse",
|
99
|
-
"CptysRequest",
|
100
|
-
"CptysResponse",
|
101
|
-
"CptyStatus",
|
102
|
-
"CptyStatusRequest",
|
103
|
-
"HistoricalFillsRequest",
|
104
|
-
"HistoricalFillsResponse",
|
105
|
-
"HistoricalOrdersRequest",
|
106
|
-
"HistoricalOrdersResponse",
|
107
|
-
"HistoricalCandlesRequest",
|
108
|
-
"HistoricalCandlesResponse",
|
109
|
-
"L1BookSnapshot",
|
110
|
-
"L1BookSnapshotRequest",
|
111
|
-
"L1BookSnapshotsRequest",
|
112
|
-
"L2BookSnapshot",
|
113
|
-
"L2BookSnapshotRequest",
|
114
|
-
"L2BookUpdate",
|
115
|
-
"L2BookDiff",
|
116
|
-
"Liquidation",
|
117
|
-
"MarketStatus",
|
118
|
-
"MarketStatusRequest",
|
119
|
-
"OrderId",
|
120
|
-
"OrderSource",
|
121
|
-
"OrderType",
|
122
|
-
"SortTickersBy",
|
123
|
-
"SubscribeCandlesRequest",
|
124
|
-
"SubscribeCurrentCandlesRequest",
|
125
|
-
"SubscribeL1BookSnapshotsRequest",
|
126
|
-
"SubscribeL2BookUpdatesRequest",
|
127
|
-
"SubscribeLiquidationsRequest",
|
128
|
-
"SubscribeManyCandlesRequest",
|
129
|
-
"SubscribeTickersRequest",
|
130
|
-
"SubscribeTradesRequest",
|
131
|
-
"Ticker",
|
132
|
-
"TickerRequest",
|
133
|
-
"TickersRequest",
|
134
|
-
"TickersResponse",
|
135
|
-
"TickerUpdate",
|
136
|
-
"TimeInForce",
|
137
|
-
"TimeInForceEnum",
|
138
|
-
"Trade",
|
139
|
-
"TraderIdOrEmail",
|
140
|
-
"resolve_endpoint",
|
141
|
-
"SymbolsRequest",
|
142
|
-
"SymbolsResponse",
|
143
|
-
]
|
architect_py/grpc/client.py
CHANGED
@@ -8,6 +8,11 @@ from . import *
|
|
8
8
|
from .utils import RequestType, ResponseTypeGeneric, decoders, encoder
|
9
9
|
|
10
10
|
|
11
|
+
def dec_hook(type, obj):
|
12
|
+
# type should have a static method deserialize
|
13
|
+
return type.deserialize(obj)
|
14
|
+
|
15
|
+
|
11
16
|
class GrpcClient:
|
12
17
|
endpoint: str
|
13
18
|
channel: grpc.aio.Channel
|
@@ -35,7 +40,7 @@ class GrpcClient:
|
|
35
40
|
try:
|
36
41
|
return decoders[response_type]
|
37
42
|
except KeyError:
|
38
|
-
decoder = msgspec.json.Decoder(type=response_type)
|
43
|
+
decoder = msgspec.json.Decoder(type=response_type, dec_hook=dec_hook)
|
39
44
|
decoders[response_type] = decoder
|
40
45
|
return decoder
|
41
46
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# generated by datamodel-codegen:
|
2
|
+
# filename: Core/RestartCptyRequest.json
|
3
|
+
|
4
|
+
from __future__ import annotations
|
5
|
+
from architect_py.grpc.models.Core.RestartCptyResponse import RestartCptyResponse
|
6
|
+
|
7
|
+
from msgspec import Struct
|
8
|
+
|
9
|
+
|
10
|
+
class RestartCptyRequest(Struct, omit_defaults=True):
|
11
|
+
cpty: str
|
12
|
+
|
13
|
+
# Constructor that takes all field titles as arguments for convenience
|
14
|
+
@classmethod
|
15
|
+
def new(
|
16
|
+
cls,
|
17
|
+
cpty: str,
|
18
|
+
):
|
19
|
+
return cls(
|
20
|
+
cpty,
|
21
|
+
)
|
22
|
+
|
23
|
+
def __str__(self) -> str:
|
24
|
+
return f"RestartCptyRequest(cpty={self.cpty})"
|
25
|
+
|
26
|
+
@staticmethod
|
27
|
+
def get_response_type():
|
28
|
+
return RestartCptyResponse
|
29
|
+
|
30
|
+
@staticmethod
|
31
|
+
def get_unannotated_response_type():
|
32
|
+
return RestartCptyResponse
|
33
|
+
|
34
|
+
@staticmethod
|
35
|
+
def get_route() -> str:
|
36
|
+
return "/json.architect.Core/RestartCpty"
|
37
|
+
|
38
|
+
@staticmethod
|
39
|
+
def get_rpc_method():
|
40
|
+
return "unary"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# generated by datamodel-codegen:
|
2
|
+
# filename: Core/RestartCptyResponse.json
|
3
|
+
|
4
|
+
from __future__ import annotations
|
5
|
+
|
6
|
+
from msgspec import Struct
|
7
|
+
|
8
|
+
|
9
|
+
class RestartCptyResponse(Struct, omit_defaults=True):
|
10
|
+
pass
|
11
|
+
|
12
|
+
# Constructor that takes all field titles as arguments for convenience
|
13
|
+
@classmethod
|
14
|
+
def new(
|
15
|
+
cls,
|
16
|
+
):
|
17
|
+
return cls()
|
18
|
+
|
19
|
+
def __str__(self) -> str:
|
20
|
+
return f"RestartCptyResponse()"
|
@@ -29,6 +29,9 @@ class Ticker(Struct, omit_defaults=True):
|
|
29
29
|
ft: Optional[Annotated[Optional[datetime], Meta(title="next_funding_time")]] = None
|
30
30
|
h: Optional[Annotated[Optional[Decimal], Meta(title="high_24h")]] = None
|
31
31
|
ip: Optional[Annotated[Optional[Decimal], Meta(title="index_price")]] = None
|
32
|
+
isp: Optional[
|
33
|
+
Annotated[Optional[Decimal], Meta(title="indicative_settlement_price")]
|
34
|
+
] = None
|
32
35
|
l: Optional[Annotated[Optional[Decimal], Meta(title="low_24h")]] = None
|
33
36
|
market_cap: Optional[Decimal] = None
|
34
37
|
mp: Optional[Annotated[Optional[Decimal], Meta(title="mark_price")]] = None
|
@@ -68,6 +71,7 @@ class Ticker(Struct, omit_defaults=True):
|
|
68
71
|
next_funding_time: Optional[datetime] = None,
|
69
72
|
high_24h: Optional[Decimal] = None,
|
70
73
|
index_price: Optional[Decimal] = None,
|
74
|
+
indicative_settlement_price: Optional[Decimal] = None,
|
71
75
|
low_24h: Optional[Decimal] = None,
|
72
76
|
market_cap: Optional[Decimal] = None,
|
73
77
|
mark_price: Optional[Decimal] = None,
|
@@ -102,6 +106,7 @@ class Ticker(Struct, omit_defaults=True):
|
|
102
106
|
next_funding_time,
|
103
107
|
high_24h,
|
104
108
|
index_price,
|
109
|
+
indicative_settlement_price,
|
105
110
|
low_24h,
|
106
111
|
market_cap,
|
107
112
|
mark_price,
|
@@ -122,7 +127,7 @@ class Ticker(Struct, omit_defaults=True):
|
|
122
127
|
)
|
123
128
|
|
124
129
|
def __str__(self) -> str:
|
125
|
-
return f"Ticker(symbol={self.s},timestamp_ns={self.tn},timestamp={self.ts},venue={self.ve},ask_price={self.ap},ask_size={self.as_},bid_price={self.bp},bid_size={self.bs},dividend={self.dividend},dividend_yield={self.dividend_yield},eps_adj={self.eps_adj},funding_rate={self.fr},next_funding_time={self.ft},high_24h={self.h},index_price={self.ip},low_24h={self.l},market_cap={self.market_cap},mark_price={self.mp},open_24h={self.o},open_interest={self.oi},last_price={self.p},price_to_earnings={self.price_to_earnings},last_size={self.q},last_settlement_date={self.sd},shares_outstanding_weighted_adj={self.shares_outstanding_weighted_adj},last_settlement_price={self.sp},volume_24h={self.v},volume_30d={self.vm},session_high={self.xh},session_low={self.xl},session_open={self.xo},session_volume={self.xv})"
|
130
|
+
return f"Ticker(symbol={self.s},timestamp_ns={self.tn},timestamp={self.ts},venue={self.ve},ask_price={self.ap},ask_size={self.as_},bid_price={self.bp},bid_size={self.bs},dividend={self.dividend},dividend_yield={self.dividend_yield},eps_adj={self.eps_adj},funding_rate={self.fr},next_funding_time={self.ft},high_24h={self.h},index_price={self.ip},indicative_settlement_price={self.isp},low_24h={self.l},market_cap={self.market_cap},mark_price={self.mp},open_24h={self.o},open_interest={self.oi},last_price={self.p},price_to_earnings={self.price_to_earnings},last_size={self.q},last_settlement_date={self.sd},shares_outstanding_weighted_adj={self.shares_outstanding_weighted_adj},last_settlement_price={self.sp},volume_24h={self.v},volume_30d={self.vm},session_high={self.xh},session_low={self.xl},session_open={self.xo},session_volume={self.xv})"
|
126
131
|
|
127
132
|
@property
|
128
133
|
def symbol(self) -> str:
|
@@ -228,6 +233,14 @@ class Ticker(Struct, omit_defaults=True):
|
|
228
233
|
def index_price(self, value: Optional[Decimal]) -> None:
|
229
234
|
self.ip = value
|
230
235
|
|
236
|
+
@property
|
237
|
+
def indicative_settlement_price(self) -> Optional[Decimal]:
|
238
|
+
return self.isp
|
239
|
+
|
240
|
+
@indicative_settlement_price.setter
|
241
|
+
def indicative_settlement_price(self, value: Optional[Decimal]) -> None:
|
242
|
+
self.isp = value
|
243
|
+
|
231
244
|
@property
|
232
245
|
def low_24h(self) -> Optional[Decimal]:
|
233
246
|
return self.l
|
@@ -4,17 +4,19 @@
|
|
4
4
|
from __future__ import annotations
|
5
5
|
from architect_py.grpc.models.Marketdata.TickersResponse import TickersResponse
|
6
6
|
|
7
|
-
from typing import List, Optional
|
7
|
+
from typing import Annotated, List, Optional
|
8
8
|
|
9
|
-
from msgspec import Struct
|
9
|
+
from msgspec import Meta, Struct
|
10
10
|
|
11
11
|
from .. import definitions
|
12
12
|
|
13
13
|
|
14
14
|
class TickersRequest(Struct, omit_defaults=True):
|
15
|
-
i: Optional[int] = None
|
16
|
-
k: Optional[
|
17
|
-
|
15
|
+
i: Optional[Annotated[Optional[int], Meta(title="offset")]] = None
|
16
|
+
k: Optional[
|
17
|
+
Annotated[Optional[definitions.SortTickersBy], Meta(title="sort_by")]
|
18
|
+
] = None
|
19
|
+
n: Optional[Annotated[Optional[int], Meta(title="limit")]] = None
|
18
20
|
symbols: Optional[List[str]] = None
|
19
21
|
venue: Optional[str] = None
|
20
22
|
|
@@ -22,22 +24,46 @@ class TickersRequest(Struct, omit_defaults=True):
|
|
22
24
|
@classmethod
|
23
25
|
def new(
|
24
26
|
cls,
|
25
|
-
|
26
|
-
|
27
|
-
|
27
|
+
offset: Optional[int] = None,
|
28
|
+
sort_by: Optional[definitions.SortTickersBy] = None,
|
29
|
+
limit: Optional[int] = None,
|
28
30
|
symbols: Optional[List[str]] = None,
|
29
31
|
venue: Optional[str] = None,
|
30
32
|
):
|
31
33
|
return cls(
|
32
|
-
|
33
|
-
|
34
|
-
|
34
|
+
offset,
|
35
|
+
sort_by,
|
36
|
+
limit,
|
35
37
|
symbols,
|
36
38
|
venue,
|
37
39
|
)
|
38
40
|
|
39
41
|
def __str__(self) -> str:
|
40
|
-
return f"TickersRequest(
|
42
|
+
return f"TickersRequest(offset={self.i},sort_by={self.k},limit={self.n},symbols={self.symbols},venue={self.venue})"
|
43
|
+
|
44
|
+
@property
|
45
|
+
def offset(self) -> Optional[int]:
|
46
|
+
return self.i
|
47
|
+
|
48
|
+
@offset.setter
|
49
|
+
def offset(self, value: Optional[int]) -> None:
|
50
|
+
self.i = value
|
51
|
+
|
52
|
+
@property
|
53
|
+
def sort_by(self) -> Optional[definitions.SortTickersBy]:
|
54
|
+
return self.k
|
55
|
+
|
56
|
+
@sort_by.setter
|
57
|
+
def sort_by(self, value: Optional[definitions.SortTickersBy]) -> None:
|
58
|
+
self.k = value
|
59
|
+
|
60
|
+
@property
|
61
|
+
def limit(self) -> Optional[int]:
|
62
|
+
return self.n
|
63
|
+
|
64
|
+
@limit.setter
|
65
|
+
def limit(self, value: Optional[int]) -> None:
|
66
|
+
self.n = value
|
41
67
|
|
42
68
|
@staticmethod
|
43
69
|
def get_response_type():
|