crypticorn 2.12.1__py3-none-any.whl → 2.13.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.
- crypticorn/common/errors.py +1 -1
- crypticorn/metrics/client/api/exchanges_api.py +343 -0
- crypticorn/metrics/client/configuration.py +4 -2
- crypticorn/metrics/client/models/api_error_identifier.py +8 -2
- {crypticorn-2.12.1.dist-info → crypticorn-2.13.0.dist-info}/METADATA +1 -1
- {crypticorn-2.12.1.dist-info → crypticorn-2.13.0.dist-info}/RECORD +10 -10
- {crypticorn-2.12.1.dist-info → crypticorn-2.13.0.dist-info}/WHEEL +0 -0
- {crypticorn-2.12.1.dist-info → crypticorn-2.13.0.dist-info}/entry_points.txt +0 -0
- {crypticorn-2.12.1.dist-info → crypticorn-2.13.0.dist-info}/licenses/LICENSE +0 -0
- {crypticorn-2.12.1.dist-info → crypticorn-2.13.0.dist-info}/top_level.txt +0 -0
crypticorn/common/errors.py
CHANGED
@@ -432,7 +432,7 @@ class ApiError(Enum, metaclass=ApiErrorFallback):
|
|
432
432
|
ApiErrorType.SERVER_ERROR,
|
433
433
|
ApiErrorLevel.INFO,
|
434
434
|
)
|
435
|
-
ORPHAN_CLOSE_ORDER = (
|
435
|
+
ORPHAN_CLOSE_ORDER = (
|
436
436
|
ApiErrorIdentifier.ORPHAN_CLOSE_ORDER,
|
437
437
|
ApiErrorType.NO_ERROR,
|
438
438
|
ApiErrorLevel.INFO,
|
@@ -989,3 +989,346 @@ class ExchangesApi:
|
|
989
989
|
_host=_host,
|
990
990
|
_request_auth=_request_auth,
|
991
991
|
)
|
992
|
+
|
993
|
+
@validate_call
|
994
|
+
async def get_exchange_mappings_for_pair(
|
995
|
+
self,
|
996
|
+
pair: Annotated[
|
997
|
+
StrictStr,
|
998
|
+
Field(
|
999
|
+
description="Trading pair to find mappings for (e.g., 'BTCUSDT', '1000SHIBUSDT')"
|
1000
|
+
),
|
1001
|
+
],
|
1002
|
+
market: Annotated[
|
1003
|
+
Optional[MarketType],
|
1004
|
+
Field(description="Market type (spot or futures). Defaults to futures."),
|
1005
|
+
] = None,
|
1006
|
+
exchange: Annotated[
|
1007
|
+
Optional[InternalExchange],
|
1008
|
+
Field(
|
1009
|
+
description="Optional exchange name to filter by. If not provided, returns all exchanges."
|
1010
|
+
),
|
1011
|
+
] = None,
|
1012
|
+
quote_currency: Annotated[
|
1013
|
+
Optional[StrictStr],
|
1014
|
+
Field(description="Quote currency to filter by. Defaults to USDT."),
|
1015
|
+
] = None,
|
1016
|
+
_request_timeout: Union[
|
1017
|
+
None,
|
1018
|
+
Annotated[StrictFloat, Field(gt=0)],
|
1019
|
+
Tuple[
|
1020
|
+
Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
|
1021
|
+
],
|
1022
|
+
] = None,
|
1023
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
1024
|
+
_content_type: Optional[StrictStr] = None,
|
1025
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1026
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1027
|
+
) -> List[ExchangeMapping]:
|
1028
|
+
"""Get Exchange Mappings For Pair
|
1029
|
+
|
1030
|
+
Get exchange mappings for a specific trading pair across all exchanges or a specific exchange. This endpoint finds the underlying symbol for a given pair and returns all perpetual contracts (excluding quarterly/dated contracts) with the specified quote currency.
|
1031
|
+
|
1032
|
+
:param pair: Trading pair to find mappings for (e.g., 'BTCUSDT', '1000SHIBUSDT') (required)
|
1033
|
+
:type pair: str
|
1034
|
+
:param market: Market type (spot or futures). Defaults to futures.
|
1035
|
+
:type market: MarketType
|
1036
|
+
:param exchange: Optional exchange name to filter by. If not provided, returns all exchanges.
|
1037
|
+
:type exchange: InternalExchange
|
1038
|
+
:param quote_currency: Quote currency to filter by. Defaults to USDT.
|
1039
|
+
:type quote_currency: str
|
1040
|
+
:param _request_timeout: timeout setting for this request. If one
|
1041
|
+
number provided, it will be total request
|
1042
|
+
timeout. It can also be a pair (tuple) of
|
1043
|
+
(connection, read) timeouts.
|
1044
|
+
:type _request_timeout: int, tuple(int, int), optional
|
1045
|
+
:param _request_auth: set to override the auth_settings for an a single
|
1046
|
+
request; this effectively ignores the
|
1047
|
+
authentication in the spec for a single request.
|
1048
|
+
:type _request_auth: dict, optional
|
1049
|
+
:param _content_type: force content-type for the request.
|
1050
|
+
:type _content_type: str, Optional
|
1051
|
+
:param _headers: set to override the headers for a single
|
1052
|
+
request; this effectively ignores the headers
|
1053
|
+
in the spec for a single request.
|
1054
|
+
:type _headers: dict, optional
|
1055
|
+
:param _host_index: set to override the host_index for a single
|
1056
|
+
request; this effectively ignores the host_index
|
1057
|
+
in the spec for a single request.
|
1058
|
+
:type _host_index: int, optional
|
1059
|
+
:return: Returns the result object.
|
1060
|
+
""" # noqa: E501
|
1061
|
+
|
1062
|
+
_param = self._get_exchange_mappings_for_pair_serialize(
|
1063
|
+
pair=pair,
|
1064
|
+
market=market,
|
1065
|
+
exchange=exchange,
|
1066
|
+
quote_currency=quote_currency,
|
1067
|
+
_request_auth=_request_auth,
|
1068
|
+
_content_type=_content_type,
|
1069
|
+
_headers=_headers,
|
1070
|
+
_host_index=_host_index,
|
1071
|
+
)
|
1072
|
+
|
1073
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
1074
|
+
"200": "List[ExchangeMapping]",
|
1075
|
+
}
|
1076
|
+
response_data = await self.api_client.call_api(
|
1077
|
+
*_param, _request_timeout=_request_timeout
|
1078
|
+
)
|
1079
|
+
await response_data.read()
|
1080
|
+
return self.api_client.response_deserialize(
|
1081
|
+
response_data=response_data,
|
1082
|
+
response_types_map=_response_types_map,
|
1083
|
+
).data
|
1084
|
+
|
1085
|
+
@validate_call
|
1086
|
+
async def get_exchange_mappings_for_pair_with_http_info(
|
1087
|
+
self,
|
1088
|
+
pair: Annotated[
|
1089
|
+
StrictStr,
|
1090
|
+
Field(
|
1091
|
+
description="Trading pair to find mappings for (e.g., 'BTCUSDT', '1000SHIBUSDT')"
|
1092
|
+
),
|
1093
|
+
],
|
1094
|
+
market: Annotated[
|
1095
|
+
Optional[MarketType],
|
1096
|
+
Field(description="Market type (spot or futures). Defaults to futures."),
|
1097
|
+
] = None,
|
1098
|
+
exchange: Annotated[
|
1099
|
+
Optional[InternalExchange],
|
1100
|
+
Field(
|
1101
|
+
description="Optional exchange name to filter by. If not provided, returns all exchanges."
|
1102
|
+
),
|
1103
|
+
] = None,
|
1104
|
+
quote_currency: Annotated[
|
1105
|
+
Optional[StrictStr],
|
1106
|
+
Field(description="Quote currency to filter by. Defaults to USDT."),
|
1107
|
+
] = None,
|
1108
|
+
_request_timeout: Union[
|
1109
|
+
None,
|
1110
|
+
Annotated[StrictFloat, Field(gt=0)],
|
1111
|
+
Tuple[
|
1112
|
+
Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
|
1113
|
+
],
|
1114
|
+
] = None,
|
1115
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
1116
|
+
_content_type: Optional[StrictStr] = None,
|
1117
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1118
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1119
|
+
) -> ApiResponse[List[ExchangeMapping]]:
|
1120
|
+
"""Get Exchange Mappings For Pair
|
1121
|
+
|
1122
|
+
Get exchange mappings for a specific trading pair across all exchanges or a specific exchange. This endpoint finds the underlying symbol for a given pair and returns all perpetual contracts (excluding quarterly/dated contracts) with the specified quote currency.
|
1123
|
+
|
1124
|
+
:param pair: Trading pair to find mappings for (e.g., 'BTCUSDT', '1000SHIBUSDT') (required)
|
1125
|
+
:type pair: str
|
1126
|
+
:param market: Market type (spot or futures). Defaults to futures.
|
1127
|
+
:type market: MarketType
|
1128
|
+
:param exchange: Optional exchange name to filter by. If not provided, returns all exchanges.
|
1129
|
+
:type exchange: InternalExchange
|
1130
|
+
:param quote_currency: Quote currency to filter by. Defaults to USDT.
|
1131
|
+
:type quote_currency: str
|
1132
|
+
:param _request_timeout: timeout setting for this request. If one
|
1133
|
+
number provided, it will be total request
|
1134
|
+
timeout. It can also be a pair (tuple) of
|
1135
|
+
(connection, read) timeouts.
|
1136
|
+
:type _request_timeout: int, tuple(int, int), optional
|
1137
|
+
:param _request_auth: set to override the auth_settings for an a single
|
1138
|
+
request; this effectively ignores the
|
1139
|
+
authentication in the spec for a single request.
|
1140
|
+
:type _request_auth: dict, optional
|
1141
|
+
:param _content_type: force content-type for the request.
|
1142
|
+
:type _content_type: str, Optional
|
1143
|
+
:param _headers: set to override the headers for a single
|
1144
|
+
request; this effectively ignores the headers
|
1145
|
+
in the spec for a single request.
|
1146
|
+
:type _headers: dict, optional
|
1147
|
+
:param _host_index: set to override the host_index for a single
|
1148
|
+
request; this effectively ignores the host_index
|
1149
|
+
in the spec for a single request.
|
1150
|
+
:type _host_index: int, optional
|
1151
|
+
:return: Returns the result object.
|
1152
|
+
""" # noqa: E501
|
1153
|
+
|
1154
|
+
_param = self._get_exchange_mappings_for_pair_serialize(
|
1155
|
+
pair=pair,
|
1156
|
+
market=market,
|
1157
|
+
exchange=exchange,
|
1158
|
+
quote_currency=quote_currency,
|
1159
|
+
_request_auth=_request_auth,
|
1160
|
+
_content_type=_content_type,
|
1161
|
+
_headers=_headers,
|
1162
|
+
_host_index=_host_index,
|
1163
|
+
)
|
1164
|
+
|
1165
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
1166
|
+
"200": "List[ExchangeMapping]",
|
1167
|
+
}
|
1168
|
+
response_data = await self.api_client.call_api(
|
1169
|
+
*_param, _request_timeout=_request_timeout
|
1170
|
+
)
|
1171
|
+
await response_data.read()
|
1172
|
+
return self.api_client.response_deserialize(
|
1173
|
+
response_data=response_data,
|
1174
|
+
response_types_map=_response_types_map,
|
1175
|
+
)
|
1176
|
+
|
1177
|
+
@validate_call
|
1178
|
+
async def get_exchange_mappings_for_pair_without_preload_content(
|
1179
|
+
self,
|
1180
|
+
pair: Annotated[
|
1181
|
+
StrictStr,
|
1182
|
+
Field(
|
1183
|
+
description="Trading pair to find mappings for (e.g., 'BTCUSDT', '1000SHIBUSDT')"
|
1184
|
+
),
|
1185
|
+
],
|
1186
|
+
market: Annotated[
|
1187
|
+
Optional[MarketType],
|
1188
|
+
Field(description="Market type (spot or futures). Defaults to futures."),
|
1189
|
+
] = None,
|
1190
|
+
exchange: Annotated[
|
1191
|
+
Optional[InternalExchange],
|
1192
|
+
Field(
|
1193
|
+
description="Optional exchange name to filter by. If not provided, returns all exchanges."
|
1194
|
+
),
|
1195
|
+
] = None,
|
1196
|
+
quote_currency: Annotated[
|
1197
|
+
Optional[StrictStr],
|
1198
|
+
Field(description="Quote currency to filter by. Defaults to USDT."),
|
1199
|
+
] = None,
|
1200
|
+
_request_timeout: Union[
|
1201
|
+
None,
|
1202
|
+
Annotated[StrictFloat, Field(gt=0)],
|
1203
|
+
Tuple[
|
1204
|
+
Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
|
1205
|
+
],
|
1206
|
+
] = None,
|
1207
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
1208
|
+
_content_type: Optional[StrictStr] = None,
|
1209
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1210
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1211
|
+
) -> RESTResponseType:
|
1212
|
+
"""Get Exchange Mappings For Pair
|
1213
|
+
|
1214
|
+
Get exchange mappings for a specific trading pair across all exchanges or a specific exchange. This endpoint finds the underlying symbol for a given pair and returns all perpetual contracts (excluding quarterly/dated contracts) with the specified quote currency.
|
1215
|
+
|
1216
|
+
:param pair: Trading pair to find mappings for (e.g., 'BTCUSDT', '1000SHIBUSDT') (required)
|
1217
|
+
:type pair: str
|
1218
|
+
:param market: Market type (spot or futures). Defaults to futures.
|
1219
|
+
:type market: MarketType
|
1220
|
+
:param exchange: Optional exchange name to filter by. If not provided, returns all exchanges.
|
1221
|
+
:type exchange: InternalExchange
|
1222
|
+
:param quote_currency: Quote currency to filter by. Defaults to USDT.
|
1223
|
+
:type quote_currency: str
|
1224
|
+
:param _request_timeout: timeout setting for this request. If one
|
1225
|
+
number provided, it will be total request
|
1226
|
+
timeout. It can also be a pair (tuple) of
|
1227
|
+
(connection, read) timeouts.
|
1228
|
+
:type _request_timeout: int, tuple(int, int), optional
|
1229
|
+
:param _request_auth: set to override the auth_settings for an a single
|
1230
|
+
request; this effectively ignores the
|
1231
|
+
authentication in the spec for a single request.
|
1232
|
+
:type _request_auth: dict, optional
|
1233
|
+
:param _content_type: force content-type for the request.
|
1234
|
+
:type _content_type: str, Optional
|
1235
|
+
:param _headers: set to override the headers for a single
|
1236
|
+
request; this effectively ignores the headers
|
1237
|
+
in the spec for a single request.
|
1238
|
+
:type _headers: dict, optional
|
1239
|
+
:param _host_index: set to override the host_index for a single
|
1240
|
+
request; this effectively ignores the host_index
|
1241
|
+
in the spec for a single request.
|
1242
|
+
:type _host_index: int, optional
|
1243
|
+
:return: Returns the result object.
|
1244
|
+
""" # noqa: E501
|
1245
|
+
|
1246
|
+
_param = self._get_exchange_mappings_for_pair_serialize(
|
1247
|
+
pair=pair,
|
1248
|
+
market=market,
|
1249
|
+
exchange=exchange,
|
1250
|
+
quote_currency=quote_currency,
|
1251
|
+
_request_auth=_request_auth,
|
1252
|
+
_content_type=_content_type,
|
1253
|
+
_headers=_headers,
|
1254
|
+
_host_index=_host_index,
|
1255
|
+
)
|
1256
|
+
|
1257
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
1258
|
+
"200": "List[ExchangeMapping]",
|
1259
|
+
}
|
1260
|
+
response_data = await self.api_client.call_api(
|
1261
|
+
*_param, _request_timeout=_request_timeout
|
1262
|
+
)
|
1263
|
+
return response_data.response
|
1264
|
+
|
1265
|
+
def _get_exchange_mappings_for_pair_serialize(
|
1266
|
+
self,
|
1267
|
+
pair,
|
1268
|
+
market,
|
1269
|
+
exchange,
|
1270
|
+
quote_currency,
|
1271
|
+
_request_auth,
|
1272
|
+
_content_type,
|
1273
|
+
_headers,
|
1274
|
+
_host_index,
|
1275
|
+
) -> RequestSerialized:
|
1276
|
+
|
1277
|
+
_host = None
|
1278
|
+
|
1279
|
+
_collection_formats: Dict[str, str] = {}
|
1280
|
+
|
1281
|
+
_path_params: Dict[str, str] = {}
|
1282
|
+
_query_params: List[Tuple[str, str]] = []
|
1283
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
1284
|
+
_form_params: List[Tuple[str, str]] = []
|
1285
|
+
_files: Dict[
|
1286
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
1287
|
+
] = {}
|
1288
|
+
_body_params: Optional[bytes] = None
|
1289
|
+
|
1290
|
+
# process the path parameters
|
1291
|
+
# process the query parameters
|
1292
|
+
if pair is not None:
|
1293
|
+
|
1294
|
+
_query_params.append(("pair", pair))
|
1295
|
+
|
1296
|
+
if market is not None:
|
1297
|
+
|
1298
|
+
_query_params.append(("market", market.value))
|
1299
|
+
|
1300
|
+
if exchange is not None:
|
1301
|
+
|
1302
|
+
_query_params.append(("exchange", exchange.value))
|
1303
|
+
|
1304
|
+
if quote_currency is not None:
|
1305
|
+
|
1306
|
+
_query_params.append(("quote_currency", quote_currency))
|
1307
|
+
|
1308
|
+
# process the header parameters
|
1309
|
+
# process the form parameters
|
1310
|
+
# process the body parameter
|
1311
|
+
|
1312
|
+
# set the HTTP header `Accept`
|
1313
|
+
if "Accept" not in _header_params:
|
1314
|
+
_header_params["Accept"] = self.api_client.select_header_accept(
|
1315
|
+
["application/json"]
|
1316
|
+
)
|
1317
|
+
|
1318
|
+
# authentication setting
|
1319
|
+
_auth_settings: List[str] = ["APIKeyHeader", "HTTPBearer"]
|
1320
|
+
|
1321
|
+
return self.api_client.param_serialize(
|
1322
|
+
method="GET",
|
1323
|
+
resource_path="/exchanges/pair-mappings",
|
1324
|
+
path_params=_path_params,
|
1325
|
+
query_params=_query_params,
|
1326
|
+
header_params=_header_params,
|
1327
|
+
body=_body_params,
|
1328
|
+
post_params=_form_params,
|
1329
|
+
files=_files,
|
1330
|
+
auth_settings=_auth_settings,
|
1331
|
+
collection_formats=_collection_formats,
|
1332
|
+
_host=_host,
|
1333
|
+
_request_auth=_request_auth,
|
1334
|
+
)
|
@@ -215,7 +215,9 @@ class Configuration:
|
|
215
215
|
debug: Optional[bool] = None,
|
216
216
|
) -> None:
|
217
217
|
"""Constructor"""
|
218
|
-
self._base_path =
|
218
|
+
self._base_path = (
|
219
|
+
"https://api.crypticorn.dev/v1/metrics" if host is None else host
|
220
|
+
)
|
219
221
|
"""Default Base url
|
220
222
|
"""
|
221
223
|
self.server_index = 0 if server_index is None and host is None else server_index
|
@@ -557,7 +559,7 @@ class Configuration:
|
|
557
559
|
"""
|
558
560
|
return [
|
559
561
|
{
|
560
|
-
"url": "
|
562
|
+
"url": "https://api.crypticorn.dev/v1/metrics",
|
561
563
|
"description": "No description provided",
|
562
564
|
}
|
563
565
|
]
|
@@ -33,6 +33,7 @@ class ApiErrorIdentifier(str, Enum):
|
|
33
33
|
BOT_DISABLED = "bot_disabled"
|
34
34
|
BOT_STOPPING_COMPLETED = "bot_stopping_completed"
|
35
35
|
BOT_STOPPING_STARTED = "bot_stopping_started"
|
36
|
+
CANCELLED_OPEN_ORDER = "cancelled_open_order"
|
36
37
|
CLIENT_ORDER_ID_ALREADY_EXISTS = "client_order_id_already_exists"
|
37
38
|
INVALID_CONTENT_TYPE = "invalid_content_type"
|
38
39
|
DELETE_BOT_ERROR = "delete_bot_error"
|
@@ -55,6 +56,7 @@ class ApiErrorIdentifier(str, Enum):
|
|
55
56
|
EXCHANGE_USER_ACCOUNT_IS_FROZEN = "exchange_user_account_is_frozen"
|
56
57
|
API_KEY_EXPIRED = "api_key_expired"
|
57
58
|
BEARER_TOKEN_EXPIRED = "bearer_token_expired"
|
59
|
+
OPEN_ORDER_EXPIRED = "open_order_expired"
|
58
60
|
FORBIDDEN = "forbidden"
|
59
61
|
HEDGE_MODE_NOT_ACTIVE = "hedge_mode_not_active"
|
60
62
|
HTTP_REQUEST_ERROR = "http_request_error"
|
@@ -73,12 +75,14 @@ class ApiErrorIdentifier(str, Enum):
|
|
73
75
|
ORDER_VIOLATES_LIQUIDATION_PRICE_CONSTRAINTS = (
|
74
76
|
"order_violates_liquidation_price_constraints"
|
75
77
|
)
|
76
|
-
|
78
|
+
MARGIN_MODE_CLASH = "margin_mode_clash"
|
79
|
+
NAME_NOT_UNIQUE = "name_not_unique"
|
77
80
|
NO_CREDENTIALS = "no_credentials"
|
78
81
|
NOW_API_DOWN = "now_api_down"
|
79
82
|
OBJECT_ALREADY_EXISTS = "object_already_exists"
|
80
83
|
OBJECT_CREATED = "object_created"
|
81
84
|
OBJECT_DELETED = "object_deleted"
|
85
|
+
OBJECT_LOCKED = "object_locked"
|
82
86
|
OBJECT_NOT_FOUND = "object_not_found"
|
83
87
|
OBJECT_UPDATED = "object_updated"
|
84
88
|
ORDER_IS_ALREADY_FILLED = "order_is_already_filled"
|
@@ -88,6 +92,8 @@ class ApiErrorIdentifier(str, Enum):
|
|
88
92
|
ORDER_PRICE_IS_INVALID = "order_price_is_invalid"
|
89
93
|
ORDER_SIZE_TOO_LARGE = "order_size_too_large"
|
90
94
|
ORDER_SIZE_TOO_SMALL = "order_size_too_small"
|
95
|
+
ORPHAN_OPEN_ORDER = "orphan_open_order"
|
96
|
+
ORPHAN_CLOSE_ORDER = "orphan_close_order"
|
91
97
|
POSITION_LIMIT_EXCEEDED = "position_limit_exceeded"
|
92
98
|
POSITION_DOES_NOT_EXIST = "position_does_not_exist"
|
93
99
|
POSITION_OPENING_TEMPORARILY_SUSPENDED = "position_opening_temporarily_suspended"
|
@@ -103,7 +109,7 @@ class ApiErrorIdentifier(str, Enum):
|
|
103
109
|
SUCCESS = "success"
|
104
110
|
SYMBOL_DOES_NOT_EXIST = "symbol_does_not_exist"
|
105
111
|
TRADING_ACTION_EXPIRED = "trading_action_expired"
|
106
|
-
|
112
|
+
TRADING_ACTION_SKIPPED_BOT_STOPPING = "TRADING_ACTION_SKIPPED_BOT_STOPPING"
|
107
113
|
TRADING_HAS_BEEN_LOCKED = "trading_has_been_locked"
|
108
114
|
TRADING_IS_SUSPENDED = "trading_is_suspended"
|
109
115
|
UNKNOWN_ERROR_OCCURRED = "unknown_error_occurred"
|
@@ -70,7 +70,7 @@ crypticorn/common/ansi_colors.py,sha256=-tMlUTE8NI7TPv7uj0kGRe-SI2hGaUNPKBFI_dfi
|
|
70
70
|
crypticorn/common/auth.py,sha256=HxiAEej315qQGbX0p8WmQI50blUTOWsMWpCtguMx-A4,8786
|
71
71
|
crypticorn/common/decorators.py,sha256=t5Y3vSJ-gt0n2vOYYjYN0dtzNXvZxrJs2SEItpzG8oo,1127
|
72
72
|
crypticorn/common/enums.py,sha256=YE7ObydyWAKO8MOSQBwk9M1PzzaPvlnxc6Dbpu78QMk,787
|
73
|
-
crypticorn/common/errors.py,sha256=
|
73
|
+
crypticorn/common/errors.py,sha256=g6RAzTwp3DxZU2EI3JUinDeReEpEGFmgqa6H2Kzi_u8,30027
|
74
74
|
crypticorn/common/exceptions.py,sha256=4oT58wcL9zQuqYU8op_36uZ1Kzt7JRCccu-o_usgqtU,6392
|
75
75
|
crypticorn/common/logging.py,sha256=3ZTFB9j8Mqy_AlNYABUFQ_134OH0YtophJkP4_GDJ9w,4408
|
76
76
|
crypticorn/common/middleware.py,sha256=O7XiXPimNYUhF9QTv6yFUTVlb91-SK-3CfTrWMNP6Ck,1011
|
@@ -164,13 +164,13 @@ crypticorn/metrics/main.py,sha256=pNR7sYh7YarA_4kHtVyQQ1afsfbUfLFAxdFBxxcNYG0,33
|
|
164
164
|
crypticorn/metrics/client/__init__.py,sha256=bu9LdJkG7vljgmLVKhoSY08ooOuEo0AhoHt7-zDVyek,2720
|
165
165
|
crypticorn/metrics/client/api_client.py,sha256=pGWJuO-mgxlUdhJGwkScf7CviGzjDrmUAiU0LXasQY4,26934
|
166
166
|
crypticorn/metrics/client/api_response.py,sha256=WhxwYDSMm6wPixp9CegO8dJzjFxDz3JF1yCq9s0ZqKE,639
|
167
|
-
crypticorn/metrics/client/configuration.py,sha256=
|
167
|
+
crypticorn/metrics/client/configuration.py,sha256=BQNgtkCNhI3uB8qCV54TMf85b3sFzQYvXGMbhar5KSM,19202
|
168
168
|
crypticorn/metrics/client/exceptions.py,sha256=UegnYftFlQDXAQv8BmD20yRzTtWpjTHcuOymTBWmgeE,6421
|
169
169
|
crypticorn/metrics/client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
170
170
|
crypticorn/metrics/client/rest.py,sha256=pWeYnpTfTV7L5U6Kli3b7i8VrmqdG8sskqSnTHPIoQo,7025
|
171
171
|
crypticorn/metrics/client/api/__init__.py,sha256=nNmEy9XBH8jQboMzedrzeGl8OVuDo_iylCaFw4Fgysg,649
|
172
172
|
crypticorn/metrics/client/api/admin_api.py,sha256=_YobvzUaNfv0CohQdAndUH2HPw5u6FbHwVaUATvsFyU,59843
|
173
|
-
crypticorn/metrics/client/api/exchanges_api.py,sha256=
|
173
|
+
crypticorn/metrics/client/api/exchanges_api.py,sha256=61js7XQkuBqQsZeJ221CmcCjiISZGEbfeu64ThplfsQ,55151
|
174
174
|
crypticorn/metrics/client/api/indicators_api.py,sha256=jjSeTZe_o1_TJx_S3m-qngXRhAuGifk_MAqZXYedbns,26946
|
175
175
|
crypticorn/metrics/client/api/logs_api.py,sha256=lDOixn5hn3DWc6HjExWtKZfy7U4NfcSLsO1bNFrx4GE,13550
|
176
176
|
crypticorn/metrics/client/api/marketcap_api.py,sha256=WYkg5AptRtU_aUXiqqig8RHS7FQc79qhC1mM5EObfL8,51965
|
@@ -179,7 +179,7 @@ crypticorn/metrics/client/api/quote_currencies_api.py,sha256=H4c3zOp5eTTUrRMlMH-
|
|
179
179
|
crypticorn/metrics/client/api/status_api.py,sha256=_Ou_EGmjPyv32G-S4QKfRemdpGG6FUsgOkbGDfYaFp0,19633
|
180
180
|
crypticorn/metrics/client/api/tokens_api.py,sha256=x5a-YAeAgFJm-pN4K3-lOM-WPVYAxoBr-AYb-oxhysM,19522
|
181
181
|
crypticorn/metrics/client/models/__init__.py,sha256=hPPLh2kQc3KNHCLeOT7AS2HXu04LEeSp_G4ME7BCmW4,1475
|
182
|
-
crypticorn/metrics/client/models/api_error_identifier.py,sha256=
|
182
|
+
crypticorn/metrics/client/models/api_error_identifier.py,sha256=Ris6BZ4Kzv_qyvnoGJGvI_hhWgirEharo7vYPmUNZNQ,5242
|
183
183
|
crypticorn/metrics/client/models/api_error_level.py,sha256=soxtGExzlBja-Jux_jguro-1taLAGcKmGSHlxTKTYR4,772
|
184
184
|
crypticorn/metrics/client/models/api_error_type.py,sha256=Y8pCAtdcS4zfTetTZj9x60BFJwSXD6ro-8NU38aEDyQ,811
|
185
185
|
crypticorn/metrics/client/models/exception_detail.py,sha256=GIIa_LNZrtXlWCMLh1OAgEO6UoBo3m0kiCk788wMbuA,3853
|
@@ -278,9 +278,9 @@ crypticorn/trade/client/models/strategy_exchange_info.py,sha256=MhPqBXHNM-jM0JPY
|
|
278
278
|
crypticorn/trade/client/models/strategy_update.py,sha256=f7UsKSlNardj5h6uqHYbacjWWQscXkFDqcLOoefa28M,5048
|
279
279
|
crypticorn/trade/client/models/tpsl.py,sha256=vUWMI9T69kCgiN0aQobiIkGFb3MYdMfkhPUjQuCLeYE,4405
|
280
280
|
crypticorn/trade/client/models/trading_action_type.py,sha256=BysUEOl85zs79EA2zOcDN1EExcpQdABaJ4Jz08_z8VU,857
|
281
|
-
crypticorn-2.
|
282
|
-
crypticorn-2.
|
283
|
-
crypticorn-2.
|
284
|
-
crypticorn-2.
|
285
|
-
crypticorn-2.
|
286
|
-
crypticorn-2.
|
281
|
+
crypticorn-2.13.0.dist-info/licenses/LICENSE,sha256=HonAVvzFXkP2C1d7D3ByIKPwjGH8NcHTAQvKH7uvOHQ,1856
|
282
|
+
crypticorn-2.13.0.dist-info/METADATA,sha256=EQNW2mb1YQwoBn6euLB_S_7MN-iLG31_zS1eDLy5KNU,8640
|
283
|
+
crypticorn-2.13.0.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
|
284
|
+
crypticorn-2.13.0.dist-info/entry_points.txt,sha256=d_xHsGvUTebPveVUK0SrpDFQ5ZRSjlI7lNCc11sn2PM,59
|
285
|
+
crypticorn-2.13.0.dist-info/top_level.txt,sha256=EP3NY216qIBYfmvGl0L2Zc9ItP0DjGSkiYqd9xJwGcM,11
|
286
|
+
crypticorn-2.13.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|