ksxt 1.0.7__py3-none-any.whl → 1.0.9__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.
- ksxt/async_/base/async_exchange.py +64 -0
- ksxt/async_/bithumb.py +2 -2
- ksxt/async_/koreainvest.py +1 -1
- ksxt/bithumb.py +2 -2
- ksxt/config/token.toml +3 -3
- {ksxt-1.0.7.dist-info → ksxt-1.0.9.dist-info}/METADATA +2 -1
- ksxt-1.0.9.dist-info/RECORD +67 -0
- {ksxt-1.0.7.dist-info → ksxt-1.0.9.dist-info}/WHEEL +1 -1
- ksxt/__pycache__/__init__.cpython-312.pyc +0 -0
- ksxt/__pycache__/bithumb.cpython-312.pyc +0 -0
- ksxt/__pycache__/koreainvest.cpython-312.pyc +0 -0
- ksxt/__pycache__/upbit.cpython-312.pyc +0 -0
- ksxt/api/__pycache__/__init__.cpython-312.pyc +0 -0
- ksxt/api/__pycache__/bithumb.cpython-312.pyc +0 -0
- ksxt/api/__pycache__/koreainvest.cpython-312.pyc +0 -0
- ksxt/api/__pycache__/upbit.cpython-312.pyc +0 -0
- ksxt/async_/__pycache__/__init__.cpython-312.pyc +0 -0
- ksxt/async_/__pycache__/bithumb.cpython-312.pyc +0 -0
- ksxt/async_/__pycache__/koreainvest.cpython-312.pyc +0 -0
- ksxt/async_/__pycache__/upbit.cpython-312.pyc +0 -0
- ksxt/async_/base/__pycache__/__init__.cpython-312.pyc +0 -0
- ksxt/async_/base/__pycache__/async_exchange.cpython-312.pyc +0 -0
- ksxt/base/__pycache__/__init__.cpython-312.pyc +0 -0
- ksxt/base/__pycache__/errors.cpython-312.pyc +0 -0
- ksxt/base/__pycache__/exchange.cpython-312.pyc +0 -0
- ksxt/base/__pycache__/rate_limiter.cpython-312.pyc +0 -0
- ksxt/base/__pycache__/rest_exchange.cpython-312.pyc +0 -0
- ksxt/base/__pycache__/types.cpython-312.pyc +0 -0
- ksxt/config/__pycache__/__init__.cpython-312.pyc +0 -0
- ksxt/market/__pycache__/base.cpython-312.pyc +0 -0
- ksxt/market/__pycache__/db.cpython-312.pyc +0 -0
- ksxt/market/__pycache__/logging.cpython-312.pyc +0 -0
- ksxt/market/__pycache__/manager.cpython-312.pyc +0 -0
- ksxt/market/__pycache__/markets.cpython-312.pyc +0 -0
- ksxt/market/krx/__pycache__/kosdaq.cpython-312.pyc +0 -0
- ksxt/market/krx/__pycache__/kospi.cpython-312.pyc +0 -0
- ksxt/market/krx/__pycache__/stock.cpython-312.pyc +0 -0
- ksxt/market/us/__pycache__/amex.cpython-312.pyc +0 -0
- ksxt/market/us/__pycache__/nasdaq.cpython-312.pyc +0 -0
- ksxt/market/us/__pycache__/nyse.cpython-312.pyc +0 -0
- ksxt/market/us/__pycache__/stock.cpython-312.pyc +0 -0
- ksxt/models/__pycache__/__init__.cpython-312.pyc +0 -0
- ksxt/models/__pycache__/balance.cpython-312.pyc +0 -0
- ksxt/models/__pycache__/cash.cpython-312.pyc +0 -0
- ksxt/models/__pycache__/common.cpython-312.pyc +0 -0
- ksxt/models/__pycache__/error.cpython-312.pyc +0 -0
- ksxt/models/__pycache__/historical.cpython-312.pyc +0 -0
- ksxt/models/__pycache__/market.cpython-312.pyc +0 -0
- ksxt/models/__pycache__/order.cpython-312.pyc +0 -0
- ksxt/models/__pycache__/orderbook.cpython-312.pyc +0 -0
- ksxt/models/__pycache__/ticker.cpython-312.pyc +0 -0
- ksxt/models/__pycache__/token.cpython-312.pyc +0 -0
- ksxt/models/__pycache__/transaction.cpython-312.pyc +0 -0
- ksxt/parser/__pycache__/bithumb.cpython-312.pyc +0 -0
- ksxt/parser/__pycache__/koreainvest.cpython-312.pyc +0 -0
- ksxt/parser/__pycache__/parser.cpython-312.pyc +0 -0
- ksxt/parser/__pycache__/upbit.cpython-312.pyc +0 -0
- ksxt/utils/__pycache__/safer.cpython-312.pyc +0 -0
- ksxt/utils/__pycache__/sorter.cpython-312.pyc +0 -0
- ksxt/utils/__pycache__/timer.cpython-312.pyc +0 -0
- ksxt-1.0.7.dist-info/RECORD +0 -119
- {ksxt-1.0.7.dist-info → ksxt-1.0.9.dist-info}/LICENSE.txt +0 -0
- {ksxt-1.0.7.dist-info → ksxt-1.0.9.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,8 @@
|
|
1
|
+
import logging
|
1
2
|
import asyncio
|
3
|
+
import toml
|
4
|
+
import os
|
5
|
+
import aiofiles
|
2
6
|
import time
|
3
7
|
import aiohttp
|
4
8
|
from datetime import datetime
|
@@ -8,6 +12,7 @@ from typing import Any, Dict, Literal, Optional
|
|
8
12
|
from ksxt.base.errors import NotSupportedError
|
9
13
|
from ksxt.base.rate_limiter import RateLimiterContext
|
10
14
|
from ksxt.base.rest_exchange import RestExchange
|
15
|
+
from ksxt.config import CONFIG_DIR
|
11
16
|
from ksxt.config import VALID_METHODS
|
12
17
|
import ksxt.models
|
13
18
|
|
@@ -46,6 +51,65 @@ class AsyncExchange(RestExchange):
|
|
46
51
|
async def __aexit__(self, *args):
|
47
52
|
await self.close()
|
48
53
|
|
54
|
+
def check_token(func):
|
55
|
+
async def wrapper(self, *args, **kwargs):
|
56
|
+
if not await self.is_valid_token():
|
57
|
+
await self.create_token()
|
58
|
+
|
59
|
+
return await func(self, *args, **kwargs)
|
60
|
+
|
61
|
+
return wrapper
|
62
|
+
|
63
|
+
async def is_valid_token(self) -> bool:
|
64
|
+
await self.load_token()
|
65
|
+
if self.token_expired is None:
|
66
|
+
return False
|
67
|
+
|
68
|
+
return datetime.now(self.timezone) <= self.timezone.localize(self.token_expired)
|
69
|
+
|
70
|
+
async def read_token(self):
|
71
|
+
try:
|
72
|
+
token_path = os.path.join(CONFIG_DIR, "token.toml")
|
73
|
+
async with aiofiles.open(token_path, mode="r") as f:
|
74
|
+
c = toml.loads(await f.read())
|
75
|
+
return c
|
76
|
+
except Exception as e:
|
77
|
+
return {}
|
78
|
+
|
79
|
+
async def load_token(self):
|
80
|
+
try:
|
81
|
+
data = await self.read_token()
|
82
|
+
|
83
|
+
if self.open_key in data.keys():
|
84
|
+
self.token = data[self.open_key]["token"]
|
85
|
+
self.token_expired = data[self.open_key]["expired"]
|
86
|
+
except Exception as e:
|
87
|
+
pass
|
88
|
+
|
89
|
+
async def save_token(self, open_key, token, expired):
|
90
|
+
try:
|
91
|
+
logging.info("save token")
|
92
|
+
logging.info(open_key)
|
93
|
+
logging.info(token)
|
94
|
+
logging.info(expired)
|
95
|
+
|
96
|
+
data = await self.read_token()
|
97
|
+
if open_key not in data:
|
98
|
+
data[open_key] = {}
|
99
|
+
data[open_key]["token"] = token
|
100
|
+
data[open_key]["expired"] = expired
|
101
|
+
|
102
|
+
token_path = os.path.join(CONFIG_DIR, "token.toml")
|
103
|
+
async with aiofiles.open(token_path, "w") as file:
|
104
|
+
await file.write(toml.dumps(data))
|
105
|
+
|
106
|
+
await self.load_token()
|
107
|
+
except Exception as e:
|
108
|
+
pass
|
109
|
+
|
110
|
+
async def create_token(self):
|
111
|
+
pass
|
112
|
+
|
49
113
|
async def fetch(self, url, method="GET", headers=None, body=None, params=None):
|
50
114
|
# Ensure that resources are initialized before the request
|
51
115
|
await self.initialize()
|
ksxt/async_/bithumb.py
CHANGED
@@ -167,7 +167,7 @@ class Bithumb(AsyncExchange, ImplicitAPI):
|
|
167
167
|
|
168
168
|
# 실패 시 오류 응답 반환
|
169
169
|
if common_response.success != "0":
|
170
|
-
return ksxt.models.KsxtTickerResponse(header=common_header, response=common_response, info=
|
170
|
+
return ksxt.models.KsxtTickerResponse(header=common_header, response=common_response, info=None)
|
171
171
|
|
172
172
|
# 데이터 파싱
|
173
173
|
parsed_info = self.parser.parse_ticker(response, base_market)
|
@@ -186,7 +186,7 @@ class Bithumb(AsyncExchange, ImplicitAPI):
|
|
186
186
|
|
187
187
|
# 실패 시 오류 응답 반환
|
188
188
|
if common_response.success != "0":
|
189
|
-
return ksxt.models.KsxtTickersResponse(header=common_header, response=common_response, info=
|
189
|
+
return ksxt.models.KsxtTickersResponse(header=common_header, response=common_response, info=None)
|
190
190
|
|
191
191
|
# 데이터 파싱
|
192
192
|
parsed_info = self.parser.parse_tickers(response, base_market)
|
ksxt/async_/koreainvest.py
CHANGED
@@ -87,7 +87,7 @@ class KoreaInvest(AsyncExchange, ImplicitAPI):
|
|
87
87
|
|
88
88
|
parsed_info = self.parser.parse_token(response=response)
|
89
89
|
|
90
|
-
self.save_token(self.open_key, parsed_info.access_token, expired=parsed_info.expired_datetime)
|
90
|
+
await self.save_token(self.open_key, parsed_info.access_token, expired=parsed_info.expired_datetime)
|
91
91
|
|
92
92
|
return ksxt.models.KsxtTokenResponse(header=common_header, response=common_response, info=parsed_info)
|
93
93
|
|
ksxt/bithumb.py
CHANGED
@@ -169,7 +169,7 @@ class Bithumb(RestExchange, ImplicitAPI):
|
|
169
169
|
|
170
170
|
# 실패 시 오류 응답 반환
|
171
171
|
if common_response.success != "0":
|
172
|
-
return ksxt.models.KsxtTickerResponse(header=common_header, response=common_response, info=
|
172
|
+
return ksxt.models.KsxtTickerResponse(header=common_header, response=common_response, info=None)
|
173
173
|
|
174
174
|
# 데이터 파싱
|
175
175
|
parsed_info = self.parser.parse_ticker(response, base_market)
|
@@ -188,7 +188,7 @@ class Bithumb(RestExchange, ImplicitAPI):
|
|
188
188
|
|
189
189
|
# 실패 시 오류 응답 반환
|
190
190
|
if common_response.success != "0":
|
191
|
-
return ksxt.models.KsxtTickersResponse(header=common_header, response=common_response, info=
|
191
|
+
return ksxt.models.KsxtTickersResponse(header=common_header, response=common_response, info=None)
|
192
192
|
|
193
193
|
# 데이터 파싱
|
194
194
|
parsed_info = self.parser.parse_tickers(response, base_market)
|
ksxt/config/token.toml
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
[
|
2
|
-
token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.
|
3
|
-
expired =
|
1
|
+
[PSCWKArP3T1L4qMgyZ4DXIDlqcaK48jJW1J5]
|
2
|
+
token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0b2tlbiIsImF1ZCI6IjAyNjhmZDU2LWU4YzgtNDQyZS1hOWU5LTI2YjNiOGVkNGYwYiIsInByZHRfY2QiOiIiLCJpc3MiOiJ1bm9ndyIsImV4cCI6MTc0Mzc3NDk0OSwiaWF0IjoxNzQzNjg4NTQ5LCJqdGkiOiJQU0NXS0FyUDNUMUw0cU1neVo0RFhJRGxxY2FLNDhqSlcxSjUifQ.ILzpskgzsz9igynOuTrxGOYUCWknEoEar6AAPL3DdBGWM8pi1SkU7pcNgkx6eZ1k9nsvs2YeB1OsFTJtVp6kCQ"
|
3
|
+
expired = 2025-04-04T22:55:49
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ksxt
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.9
|
4
4
|
License: MIT License
|
5
5
|
|
6
6
|
Copyright © 2025 AMOSA
|
@@ -29,6 +29,7 @@ Requires-Dist: pandas
|
|
29
29
|
Requires-Dist: sqlalchemy
|
30
30
|
Requires-Dist: yarl
|
31
31
|
Requires-Dist: aiohttp
|
32
|
+
Requires-Dist: aiofiles
|
32
33
|
Requires-Dist: toml
|
33
34
|
Requires-Dist: pyjwt
|
34
35
|
Requires-Dist: pydantic
|
@@ -0,0 +1,67 @@
|
|
1
|
+
ksxt/__init__.py,sha256=Q4kbXuxaCcQg5Z1T2z31lrUc5Cr95RIyv-y6hNf3R0E,131
|
2
|
+
ksxt/bithumb.py,sha256=KZEdoU9F1L7L_gyvAn5PVHTBvGWEFi_mdd-qn9KC9ZU,22645
|
3
|
+
ksxt/koreainvest.py,sha256=_3ZbMw7O-I0lWhMcDMRTcb3lCcuUFFp-OeDtUs8S5hA,20805
|
4
|
+
ksxt/upbit.py,sha256=2nfO-x_1C9XOoXRm2_cB4hXRV7jxoTP-s7Eqm8u8EJc,22861
|
5
|
+
ksxt/api/__init__.py,sha256=CZ8AedRG8O9vEdSqTaot5sV3nwpxPZoVOYwrFCLUo6M,736
|
6
|
+
ksxt/api/bithumb.py,sha256=6apoSNoiEOIkR6xQu4rtCSz7sdNdx3BHeu8-m8omh6E,2177
|
7
|
+
ksxt/api/koreainvest.py,sha256=93BASTUUsw39APRFxVqlaOu-keEFuIO3MvHX_6g-AAs,2159
|
8
|
+
ksxt/api/upbit.py,sha256=CQN-A0gVoeNoHTZhH8kCaGk1svaOvo5HDyVFfXou_6A,2704
|
9
|
+
ksxt/api/auto/api_generator.py,sha256=R8Q7uFN1wDr_0CUsJJ1nmZhoDBwzjPlKUXrNCsY9QKU,2540
|
10
|
+
ksxt/api/auto/bithumb.py,sha256=n6ctGefq28i5CMiItLF1xOZgeDP9F9em4HXfoPUcmqw,1261
|
11
|
+
ksxt/api/auto/koreainvest.py,sha256=z4Bf3C7g2W-eQP99oBeM_J0mq2D3PkbQaulrDwxJB04,1582
|
12
|
+
ksxt/api/auto/upbit.py,sha256=CtSG0jziqJR4FInHvwDisJfMWCUrUIQQcNPuCGGR7Do,1467
|
13
|
+
ksxt/async_/__init__.py,sha256=ztfV65aN2mXamQSfVm3GLYB6cszkvsCSlUyhfe2H_2M,186
|
14
|
+
ksxt/async_/bithumb.py,sha256=W5tpmmkp6fBahxHAtoMFGyYVlq5pcNS5KQYgJvcQn60,20538
|
15
|
+
ksxt/async_/koreainvest.py,sha256=oT0553kpEmiIn0iMUy7prXlAfZhCXsyeEJzZrkvJcFU,23138
|
16
|
+
ksxt/async_/upbit.py,sha256=Y0cPAkiZluBCpNj2jX1d-V0olzMZMT8Dyzup2BAnSH0,22783
|
17
|
+
ksxt/async_/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
|
+
ksxt/async_/base/async_exchange.py,sha256=NtcojJx1HeglOv3OPZbsshD4Raah0sSDiSk87ZWPkVA,11688
|
19
|
+
ksxt/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
|
+
ksxt/base/com_exchange.py,sha256=q7C3Bc5q4ENvNGoghnQCN7YLttgwmFoNj9WsH5qxXNQ,287
|
21
|
+
ksxt/base/errors.py,sha256=msGHmm9YGUOXOaK_VhOUEt5LvIDMMm6G-io8nQbNgA0,141
|
22
|
+
ksxt/base/exchange.py,sha256=tKU37qlYarwGmTySzGu_kQGowc_QRMdm31SGSjeLoZI,16598
|
23
|
+
ksxt/base/rate_limiter.py,sha256=9iF6OB-2u0q4nqtng8Tafn-fM3CVQ-DvdNRJ1aSCS3w,3005
|
24
|
+
ksxt/base/rest_exchange.py,sha256=_fQqoq7LkJIR8S2YkMF8PqWH-Zx4ibth_f_0BuI8PTo,16103
|
25
|
+
ksxt/base/types.py,sha256=3bd3obJhhX1njy_o4LW8hSAHX2MThOI-mZm6iifwno4,59
|
26
|
+
ksxt/config/__init__.py,sha256=hkQx56FVJD8Gq1A_KzfOqO8BoqJRTX5TnUmqIignnlc,148
|
27
|
+
ksxt/config/bithumb.toml,sha256=JgKgHQVATsLcbxKYvekSRonJ4PjJ5x2ejp1eZHHusrQ,11693
|
28
|
+
ksxt/config/koreainvest.toml,sha256=XQRSdEgkWlhbfS6AvJRqQJ_8210i__nfFSI9n3GcgqY,11526
|
29
|
+
ksxt/config/token.toml,sha256=sRf2gsb_cm3qs7VGFwGfEBJVpBve8Ksk8aTRN7gjUQ0,429
|
30
|
+
ksxt/config/upbit.toml,sha256=1aGKZ3HAV28rrTVGZQ418I9NJwhoRh70Vx03oKacIfY,13439
|
31
|
+
ksxt/market/base.py,sha256=SzNPJECU2iWaQEUesI_REW_A0by_Tv4hs4Hv8p_sr0I,6856
|
32
|
+
ksxt/market/db.py,sha256=ZPr2WlQRUOjhJm1fwFBrdwWG7UJkEpy5Pr0oEQ3Nqb0,386
|
33
|
+
ksxt/market/logging.py,sha256=hkyAhzA72-KCGcVavSOHFSz2FU5QJq_gn6WA6kXs_Pw,698
|
34
|
+
ksxt/market/manager.py,sha256=kgXrsjFw4O_BPVM2VxQJbm5ryWPG3L-NX1Pm-pN68jE,7301
|
35
|
+
ksxt/market/markets.py,sha256=pExEvlLhoLvs2Ipkp-p8_yG3tFgz3U3yB5VAVqD8qdM,545
|
36
|
+
ksxt/market/krx/kosdaq.py,sha256=CJDKMPp3utH-bmPrrEAzmFx5GSXk_KVhLDdGCAaxaBQ,18626
|
37
|
+
ksxt/market/krx/kospi.py,sha256=lRyA-xCjqdyuB87eHFGooIHtpbjy7WcrQ0Rk2ZnCt40,20466
|
38
|
+
ksxt/market/krx/stock.py,sha256=IXx4xNYsQgKhuLz1_S0Bd9Scqd6fip75gafRePAFW7U,8111
|
39
|
+
ksxt/market/us/amex.py,sha256=ZYlfh1x2eiA8P3DfO2PKj6nIE-O4WQNgDM-CsLqFUVs,5510
|
40
|
+
ksxt/market/us/nasdaq.py,sha256=OIBJn16veH36Um-Bhr14K0qBu3ZZwPSWi5sj6zxmkVA,5524
|
41
|
+
ksxt/market/us/nyse.py,sha256=eCAcz0saj1RFuyfmJc8cjecwGEDIhvkYVkUp941ZOIw,5507
|
42
|
+
ksxt/market/us/stock.py,sha256=hRb4RH2kf-1RaNcWLvE5tg2uCcu6LoPZ0Nc1u6Wpzbc,3675
|
43
|
+
ksxt/models/__init__.py,sha256=V7Nr0RHOOXithVTQW12hveavnapS8nGhWQ3JIMwDFTc,706
|
44
|
+
ksxt/models/balance.py,sha256=YarLzTXuqqdXYHoOWDx5Hh_K2DXqEoKtNgdii0UINjM,1138
|
45
|
+
ksxt/models/cash.py,sha256=sNexdR6Ek-YZ6cVAmre-zf3K30R-6hreHuBQKYzMsPU,303
|
46
|
+
ksxt/models/common.py,sha256=HvsNa2wlTeLdnB67untL0UzOQ5r6f2s6Gkfxeh7LTpM,827
|
47
|
+
ksxt/models/error.py,sha256=yzpTweHMB-bi7hzD8ATKsK2klJAsbfPEBBa1A5tY6tw,291
|
48
|
+
ksxt/models/historical.py,sha256=fWcst4WPimI2Avb4b1kOswfyf3nB4XSMgpTSmm7uTpY,655
|
49
|
+
ksxt/models/market.py,sha256=kkH-P1m1HQjJOPT1k4bk9ZgW-_kwIBO_fXHcrRlWlVE,2013
|
50
|
+
ksxt/models/order.py,sha256=LJJd-licLirI5WrAM1MItViOX_u5U_fmpBFPpDSdHxE,867
|
51
|
+
ksxt/models/orderbook.py,sha256=S1c03QBu1hupN87CMWLgEsh8u2GrZ_Z_BcTUuiKGnR0,773
|
52
|
+
ksxt/models/ticker.py,sha256=pPc7GqUOJchLg7qOpKfxhTVpXygF1Otc_M9_KfHFEgY,544
|
53
|
+
ksxt/models/token.py,sha256=eUBoX7O0ffC63BN12-1aUjcfE_R1Ylyxr6_U79FLDv0,319
|
54
|
+
ksxt/models/transaction.py,sha256=E086NQkIfTuVhmJNmr8_vYGn84c1Vf8_8sgHyBMZFU0,1491
|
55
|
+
ksxt/parser/bithumb.py,sha256=jPNISv-LBKjATGPx-ukyoZcpurSjCBlHoHva5UBEj8E,18152
|
56
|
+
ksxt/parser/koreainvest.py,sha256=6sJ_yMmDb4IVZnEI4facxdTybtW45s9kEeiWrVXxEzs,17328
|
57
|
+
ksxt/parser/parser.py,sha256=xdqRS69VMxFupv5dNE4Cb6vq-rmDjlIOuouHj4RP72I,5801
|
58
|
+
ksxt/parser/upbit.py,sha256=8C4TYwYgdu8tOiIlrJ4QhBhUVYI57hmXwMMD2GPxObM,18908
|
59
|
+
ksxt/sample/symbol_sync.ipynb,sha256=dnUOgEKdUuEkDo_6LZjmDtVuNh4PPmCN4Ht7Pz-0L9Y,640081
|
60
|
+
ksxt/utils/safer.py,sha256=tlXDU9KDxrrM0HT2bv45hkblIgbEYr02NygdYS0jj6c,1289
|
61
|
+
ksxt/utils/sorter.py,sha256=j7eN1Qy7Wx3cXcWyRWyO1fVq-M24TrXvcfewPR5axF4,227
|
62
|
+
ksxt/utils/timer.py,sha256=4_rhXdQDFkKshS5utWrgTteIe71tVSTL1zNW-IjOngM,1228
|
63
|
+
ksxt-1.0.9.dist-info/LICENSE.txt,sha256=p2JwEVHDRuJx8UL5Xnt_pFhdC73ppwp7rYQhHqviWB8,1080
|
64
|
+
ksxt-1.0.9.dist-info/METADATA,sha256=gj-126j2l_QW7nCtC71WAir_ZMBSfI0sMGWQ_jy7xZ0,1674
|
65
|
+
ksxt-1.0.9.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
66
|
+
ksxt-1.0.9.dist-info/top_level.txt,sha256=XLUhkZCur5Pe0BPUV3J0syngIPz7jBb2YlQR4epo5kI,5
|
67
|
+
ksxt-1.0.9.dist-info/RECORD,,
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
ksxt-1.0.7.dist-info/RECORD
DELETED
@@ -1,119 +0,0 @@
|
|
1
|
-
ksxt/__init__.py,sha256=Q4kbXuxaCcQg5Z1T2z31lrUc5Cr95RIyv-y6hNf3R0E,131
|
2
|
-
ksxt/bithumb.py,sha256=jiN9hIopmXwUTQn71mR13Z_c0ZDJOXhbJhgpzHRniLs,22641
|
3
|
-
ksxt/koreainvest.py,sha256=_3ZbMw7O-I0lWhMcDMRTcb3lCcuUFFp-OeDtUs8S5hA,20805
|
4
|
-
ksxt/upbit.py,sha256=2nfO-x_1C9XOoXRm2_cB4hXRV7jxoTP-s7Eqm8u8EJc,22861
|
5
|
-
ksxt/__pycache__/__init__.cpython-312.pyc,sha256=99OafUFiZDEhtstgud7UXpCCcOfy20LUICQC7vNbNPc,310
|
6
|
-
ksxt/__pycache__/bithumb.cpython-312.pyc,sha256=SI-IV1_1cTRt54m0z5G_Qys0f2jqJ_e91QIGucD1Jrg,25686
|
7
|
-
ksxt/__pycache__/koreainvest.cpython-312.pyc,sha256=38FJ1f8w7PnSCALogXBPjVTAoRursY6sIKmNqOxlx08,22472
|
8
|
-
ksxt/__pycache__/upbit.cpython-312.pyc,sha256=C3Bv5Gw5FvBjK3hgKeu4Loh7em94wyqTV9qgAdYhhC0,26035
|
9
|
-
ksxt/api/__init__.py,sha256=CZ8AedRG8O9vEdSqTaot5sV3nwpxPZoVOYwrFCLUo6M,736
|
10
|
-
ksxt/api/bithumb.py,sha256=6apoSNoiEOIkR6xQu4rtCSz7sdNdx3BHeu8-m8omh6E,2177
|
11
|
-
ksxt/api/koreainvest.py,sha256=93BASTUUsw39APRFxVqlaOu-keEFuIO3MvHX_6g-AAs,2159
|
12
|
-
ksxt/api/upbit.py,sha256=CQN-A0gVoeNoHTZhH8kCaGk1svaOvo5HDyVFfXou_6A,2704
|
13
|
-
ksxt/api/__pycache__/__init__.cpython-312.pyc,sha256=1tMXRXoUs6u2hiKjL8_5209aEWMLxAIEABmUj8iNqw4,1374
|
14
|
-
ksxt/api/__pycache__/bithumb.cpython-312.pyc,sha256=-tF6txgvtDIqXxIroDh28pgIrEvA9DK_NCzw6DBKcgk,2559
|
15
|
-
ksxt/api/__pycache__/koreainvest.cpython-312.pyc,sha256=VftBw8Krzp9VYAZ3RSeBWrqiNkAUyqQfinE2ZjxRueM,2087
|
16
|
-
ksxt/api/__pycache__/upbit.cpython-312.pyc,sha256=38hbV6oBqrh4hXrkooxTJluIryuDuSBkbv119mq3Ewg,3014
|
17
|
-
ksxt/api/auto/api_generator.py,sha256=R8Q7uFN1wDr_0CUsJJ1nmZhoDBwzjPlKUXrNCsY9QKU,2540
|
18
|
-
ksxt/api/auto/bithumb.py,sha256=n6ctGefq28i5CMiItLF1xOZgeDP9F9em4HXfoPUcmqw,1261
|
19
|
-
ksxt/api/auto/koreainvest.py,sha256=z4Bf3C7g2W-eQP99oBeM_J0mq2D3PkbQaulrDwxJB04,1582
|
20
|
-
ksxt/api/auto/upbit.py,sha256=CtSG0jziqJR4FInHvwDisJfMWCUrUIQQcNPuCGGR7Do,1467
|
21
|
-
ksxt/async_/__init__.py,sha256=ztfV65aN2mXamQSfVm3GLYB6cszkvsCSlUyhfe2H_2M,186
|
22
|
-
ksxt/async_/bithumb.py,sha256=sVGUSHSm9CKLbhUoz9bDkpxlSJAzqnRaNt30ocWBsKI,20534
|
23
|
-
ksxt/async_/koreainvest.py,sha256=6HV-miG50khuvyr634eQb9GlaIIfo8asI_qfDATX90E,23132
|
24
|
-
ksxt/async_/upbit.py,sha256=Y0cPAkiZluBCpNj2jX1d-V0olzMZMT8Dyzup2BAnSH0,22783
|
25
|
-
ksxt/async_/__pycache__/__init__.cpython-312.pyc,sha256=JMmqx3WOUqRd8bNVJetVrh4iuOE0ihwajLyI0OaHB7U,379
|
26
|
-
ksxt/async_/__pycache__/bithumb.cpython-312.pyc,sha256=qL2X3-e3ulLiWHWJQrCYhsNDkxK1mqT4GdH_nVF8GDM,24418
|
27
|
-
ksxt/async_/__pycache__/koreainvest.cpython-312.pyc,sha256=Oy71u-nws5BJEiT0mBgi_AxlmqM1Bn7LRRGjguFwCNM,25680
|
28
|
-
ksxt/async_/__pycache__/upbit.cpython-312.pyc,sha256=ssF1mktP57F243a0IEogVCuXFoIfYANZvpmCs95DNoo,27751
|
29
|
-
ksxt/async_/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
|
-
ksxt/async_/base/async_exchange.py,sha256=wUZySn7TE5FMMmJpi1Whpm6pXPObxVaS87HS0jJ35R8,9721
|
31
|
-
ksxt/async_/base/__pycache__/__init__.cpython-312.pyc,sha256=S4bPuB8OeLTMdU22fAKRges3VlhAuVM6EBIbb_92gOM,152
|
32
|
-
ksxt/async_/base/__pycache__/async_exchange.cpython-312.pyc,sha256=ZiEzacI9o9ppGsg8B9vuyD9F3ZHzMXHwOLlJ4NXtXyw,15858
|
33
|
-
ksxt/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
34
|
-
ksxt/base/com_exchange.py,sha256=q7C3Bc5q4ENvNGoghnQCN7YLttgwmFoNj9WsH5qxXNQ,287
|
35
|
-
ksxt/base/errors.py,sha256=msGHmm9YGUOXOaK_VhOUEt5LvIDMMm6G-io8nQbNgA0,141
|
36
|
-
ksxt/base/exchange.py,sha256=tKU37qlYarwGmTySzGu_kQGowc_QRMdm31SGSjeLoZI,16598
|
37
|
-
ksxt/base/rate_limiter.py,sha256=9iF6OB-2u0q4nqtng8Tafn-fM3CVQ-DvdNRJ1aSCS3w,3005
|
38
|
-
ksxt/base/rest_exchange.py,sha256=_fQqoq7LkJIR8S2YkMF8PqWH-Zx4ibth_f_0BuI8PTo,16103
|
39
|
-
ksxt/base/types.py,sha256=3bd3obJhhX1njy_o4LW8hSAHX2MThOI-mZm6iifwno4,59
|
40
|
-
ksxt/base/__pycache__/__init__.cpython-312.pyc,sha256=sRTaTlUmf1BjkcBImIDu9hF2H1CO1uFRqOTXjkpSeMo,145
|
41
|
-
ksxt/base/__pycache__/errors.cpython-312.pyc,sha256=AcQa0ZFWVvPHzZ_qo7uMQUOTQwwt71FLroolBT77Tgw,621
|
42
|
-
ksxt/base/__pycache__/exchange.cpython-312.pyc,sha256=ZjDZ29l8IDEU8GZrw4cnDwBwB9tUYIIDMf4JUIRQCPw,21760
|
43
|
-
ksxt/base/__pycache__/rate_limiter.cpython-312.pyc,sha256=b-OiLzKiXR8I8GcuPAYjpDGwHOgywFfOMPJDTxHDDgA,5417
|
44
|
-
ksxt/base/__pycache__/rest_exchange.cpython-312.pyc,sha256=dRotNlB7p_iuLMOu9yeQ5_veOr5chTjpmv7TSnuUuS4,23248
|
45
|
-
ksxt/base/__pycache__/types.cpython-312.pyc,sha256=JZdcCrwjXkLpp1F5kPwUb8M2Rs3HJxpx0WuhJk-X0kc,231
|
46
|
-
ksxt/config/__init__.py,sha256=hkQx56FVJD8Gq1A_KzfOqO8BoqJRTX5TnUmqIignnlc,148
|
47
|
-
ksxt/config/bithumb.toml,sha256=JgKgHQVATsLcbxKYvekSRonJ4PjJ5x2ejp1eZHHusrQ,11693
|
48
|
-
ksxt/config/koreainvest.toml,sha256=XQRSdEgkWlhbfS6AvJRqQJ_8210i__nfFSI9n3GcgqY,11526
|
49
|
-
ksxt/config/token.toml,sha256=L71hM8EBBcZmMtuHUKPGa8sQqg7SUxKCL_ecu98SU1I,431
|
50
|
-
ksxt/config/upbit.toml,sha256=1aGKZ3HAV28rrTVGZQ418I9NJwhoRh70Vx03oKacIfY,13439
|
51
|
-
ksxt/config/__pycache__/__init__.cpython-312.pyc,sha256=1jLyeKuG_1Uy5_K3mrBPd8h4uRR_9psing5ZdeOKUkw,424
|
52
|
-
ksxt/market/base.py,sha256=SzNPJECU2iWaQEUesI_REW_A0by_Tv4hs4Hv8p_sr0I,6856
|
53
|
-
ksxt/market/db.py,sha256=ZPr2WlQRUOjhJm1fwFBrdwWG7UJkEpy5Pr0oEQ3Nqb0,386
|
54
|
-
ksxt/market/logging.py,sha256=hkyAhzA72-KCGcVavSOHFSz2FU5QJq_gn6WA6kXs_Pw,698
|
55
|
-
ksxt/market/manager.py,sha256=kgXrsjFw4O_BPVM2VxQJbm5ryWPG3L-NX1Pm-pN68jE,7301
|
56
|
-
ksxt/market/markets.py,sha256=pExEvlLhoLvs2Ipkp-p8_yG3tFgz3U3yB5VAVqD8qdM,545
|
57
|
-
ksxt/market/__pycache__/base.cpython-312.pyc,sha256=rKw82jppSUh3WKj-ZTwMe7f0bb45S7BiS0QJVYIf6Ag,11238
|
58
|
-
ksxt/market/__pycache__/db.cpython-312.pyc,sha256=UqAmDamjS6fG0HAPbgq9ZZAB1gbmkIgVpvPpdXQTByI,691
|
59
|
-
ksxt/market/__pycache__/logging.cpython-312.pyc,sha256=cF9xFQUauuncKAumkOk7ZTOogfwvS_W6xgJ6OBF7gGA,1401
|
60
|
-
ksxt/market/__pycache__/manager.cpython-312.pyc,sha256=KBjTJ90x1dSo4_8Vc4pRngsMldrioBsduFXgNlmeh-4,11783
|
61
|
-
ksxt/market/__pycache__/markets.cpython-312.pyc,sha256=kuzNGgwZoNVwZ4pC_VdiIek9hxP7yarLxR5YltUYkgs,744
|
62
|
-
ksxt/market/krx/kosdaq.py,sha256=CJDKMPp3utH-bmPrrEAzmFx5GSXk_KVhLDdGCAaxaBQ,18626
|
63
|
-
ksxt/market/krx/kospi.py,sha256=lRyA-xCjqdyuB87eHFGooIHtpbjy7WcrQ0Rk2ZnCt40,20466
|
64
|
-
ksxt/market/krx/stock.py,sha256=IXx4xNYsQgKhuLz1_S0Bd9Scqd6fip75gafRePAFW7U,8111
|
65
|
-
ksxt/market/krx/__pycache__/kosdaq.cpython-312.pyc,sha256=rk9C1APZmW42WH8OISrlR-EwpMHrgyGCMRGbaOtPMEE,7516
|
66
|
-
ksxt/market/krx/__pycache__/kospi.cpython-312.pyc,sha256=vEzv-Mg9Jq0lwWRySoJIh9g13LOLkpzyxys3mxJJ6CQ,8608
|
67
|
-
ksxt/market/krx/__pycache__/stock.cpython-312.pyc,sha256=k9hUlFzTKcTa1pY_VMKOVKvIlzJxdoGYx9APJUjEloA,9012
|
68
|
-
ksxt/market/us/amex.py,sha256=ZYlfh1x2eiA8P3DfO2PKj6nIE-O4WQNgDM-CsLqFUVs,5510
|
69
|
-
ksxt/market/us/nasdaq.py,sha256=OIBJn16veH36Um-Bhr14K0qBu3ZZwPSWi5sj6zxmkVA,5524
|
70
|
-
ksxt/market/us/nyse.py,sha256=eCAcz0saj1RFuyfmJc8cjecwGEDIhvkYVkUp941ZOIw,5507
|
71
|
-
ksxt/market/us/stock.py,sha256=hRb4RH2kf-1RaNcWLvE5tg2uCcu6LoPZ0Nc1u6Wpzbc,3675
|
72
|
-
ksxt/market/us/__pycache__/amex.cpython-312.pyc,sha256=ISJeRZ9bQHYmH9ltf7aHXUdpGaq2MgRriFm0m182iGU,3380
|
73
|
-
ksxt/market/us/__pycache__/nasdaq.cpython-312.pyc,sha256=CmTxTMsNZFWUFkZo_S7pkGWmMQoIQ-gnsfjefvz389k,3394
|
74
|
-
ksxt/market/us/__pycache__/nyse.cpython-312.pyc,sha256=ERLmlKoyXwbcK1A1Tep8i-K7v3MUvAlKQrh2pANzZqo,3377
|
75
|
-
ksxt/market/us/__pycache__/stock.cpython-312.pyc,sha256=AAb5L9s3z8F7OT0WZl20lWUKg6iEyIifU-Yc1hGsO2w,4975
|
76
|
-
ksxt/models/__init__.py,sha256=V7Nr0RHOOXithVTQW12hveavnapS8nGhWQ3JIMwDFTc,706
|
77
|
-
ksxt/models/balance.py,sha256=YarLzTXuqqdXYHoOWDx5Hh_K2DXqEoKtNgdii0UINjM,1138
|
78
|
-
ksxt/models/cash.py,sha256=sNexdR6Ek-YZ6cVAmre-zf3K30R-6hreHuBQKYzMsPU,303
|
79
|
-
ksxt/models/common.py,sha256=HvsNa2wlTeLdnB67untL0UzOQ5r6f2s6Gkfxeh7LTpM,827
|
80
|
-
ksxt/models/error.py,sha256=yzpTweHMB-bi7hzD8ATKsK2klJAsbfPEBBa1A5tY6tw,291
|
81
|
-
ksxt/models/historical.py,sha256=fWcst4WPimI2Avb4b1kOswfyf3nB4XSMgpTSmm7uTpY,655
|
82
|
-
ksxt/models/market.py,sha256=kkH-P1m1HQjJOPT1k4bk9ZgW-_kwIBO_fXHcrRlWlVE,2013
|
83
|
-
ksxt/models/order.py,sha256=LJJd-licLirI5WrAM1MItViOX_u5U_fmpBFPpDSdHxE,867
|
84
|
-
ksxt/models/orderbook.py,sha256=S1c03QBu1hupN87CMWLgEsh8u2GrZ_Z_BcTUuiKGnR0,773
|
85
|
-
ksxt/models/ticker.py,sha256=pPc7GqUOJchLg7qOpKfxhTVpXygF1Otc_M9_KfHFEgY,544
|
86
|
-
ksxt/models/token.py,sha256=eUBoX7O0ffC63BN12-1aUjcfE_R1Ylyxr6_U79FLDv0,319
|
87
|
-
ksxt/models/transaction.py,sha256=E086NQkIfTuVhmJNmr8_vYGn84c1Vf8_8sgHyBMZFU0,1491
|
88
|
-
ksxt/models/__pycache__/__init__.cpython-312.pyc,sha256=juNSOa40CKXj3FcqX7uufkG-nGRv7BeymAsD5iFbtDg,1032
|
89
|
-
ksxt/models/__pycache__/balance.cpython-312.pyc,sha256=ojawyH9i68QXJ1ZiQ8KtS2F0iQdSYIahundVhdghYns,2118
|
90
|
-
ksxt/models/__pycache__/cash.cpython-312.pyc,sha256=PNyyB9eKOU0OyaMP7p3dg3BYDb21wA0v8zzkXUXTg5E,721
|
91
|
-
ksxt/models/__pycache__/common.cpython-312.pyc,sha256=UiwBy-d1G_BCST5Ercj3HnBEO3uURPc1K71nQ25_xjs,1362
|
92
|
-
ksxt/models/__pycache__/error.cpython-312.pyc,sha256=PaFS6ijLZsNmHeIEd6M2RKAElyZ1GdmufAspqE1Y78A,773
|
93
|
-
ksxt/models/__pycache__/historical.cpython-312.pyc,sha256=9mcQEc1p9YyVovIKOYQlGwYk4s6AdPlg9WY2WQlyMIQ,1290
|
94
|
-
ksxt/models/__pycache__/market.cpython-312.pyc,sha256=1JH7CXMZ8kvbdlHqrongsmoq99p5S-vqTYhqK5eMfYQ,3077
|
95
|
-
ksxt/models/__pycache__/order.cpython-312.pyc,sha256=2pcwKS9_-I25plh92Gii3d67noYABixnrOjpkMZPnsc,1790
|
96
|
-
ksxt/models/__pycache__/orderbook.cpython-312.pyc,sha256=YL_iiIMMfKdjlkNIN4lC-olNrK8LmCBoj56GGpe9ghM,1516
|
97
|
-
ksxt/models/__pycache__/ticker.cpython-312.pyc,sha256=SQ4PMAMdWrUomHeyBY-P5STecg1EC46wRmwcCvdx0Sc,1164
|
98
|
-
ksxt/models/__pycache__/token.cpython-312.pyc,sha256=NuH6VnrVsPRhUFUspVJwcEl4KyA8hMHdZwsguCxD6M8,794
|
99
|
-
ksxt/models/__pycache__/transaction.cpython-312.pyc,sha256=_3vlu_CTVyFd5Zvil8DrDWnc9QODYCg-K3xyhOmZhdQ,2435
|
100
|
-
ksxt/parser/bithumb.py,sha256=jPNISv-LBKjATGPx-ukyoZcpurSjCBlHoHva5UBEj8E,18152
|
101
|
-
ksxt/parser/koreainvest.py,sha256=6sJ_yMmDb4IVZnEI4facxdTybtW45s9kEeiWrVXxEzs,17328
|
102
|
-
ksxt/parser/parser.py,sha256=xdqRS69VMxFupv5dNE4Cb6vq-rmDjlIOuouHj4RP72I,5801
|
103
|
-
ksxt/parser/upbit.py,sha256=8C4TYwYgdu8tOiIlrJ4QhBhUVYI57hmXwMMD2GPxObM,18908
|
104
|
-
ksxt/parser/__pycache__/bithumb.cpython-312.pyc,sha256=sOd7Q5S7o6PmvuV1i1Hn1WHj6wUB7Vt13YTR_XuCMvA,21763
|
105
|
-
ksxt/parser/__pycache__/koreainvest.cpython-312.pyc,sha256=hLywsOyhmk0sI7-P9y7VYGd5icB1FVjGYc5ULgIKFW4,20909
|
106
|
-
ksxt/parser/__pycache__/parser.cpython-312.pyc,sha256=tyRu43UBQ7e4T-y1Pk2R4SOVWPPjUmuEdaxvGODxq6Y,9029
|
107
|
-
ksxt/parser/__pycache__/upbit.cpython-312.pyc,sha256=HU4xvFJ-sxJJTbtnwAGLqDo5rVB856u-YWhcKjHq8IY,23406
|
108
|
-
ksxt/sample/symbol_sync.ipynb,sha256=dnUOgEKdUuEkDo_6LZjmDtVuNh4PPmCN4Ht7Pz-0L9Y,640081
|
109
|
-
ksxt/utils/safer.py,sha256=tlXDU9KDxrrM0HT2bv45hkblIgbEYr02NygdYS0jj6c,1289
|
110
|
-
ksxt/utils/sorter.py,sha256=j7eN1Qy7Wx3cXcWyRWyO1fVq-M24TrXvcfewPR5axF4,227
|
111
|
-
ksxt/utils/timer.py,sha256=4_rhXdQDFkKshS5utWrgTteIe71tVSTL1zNW-IjOngM,1228
|
112
|
-
ksxt/utils/__pycache__/safer.cpython-312.pyc,sha256=w-dkk_sa768g7ViIk-YrnhaxKmOu1loBlDFfjHu4PxM,1990
|
113
|
-
ksxt/utils/__pycache__/sorter.cpython-312.pyc,sha256=fg2obPlufrTQZLqIrzDKkX6bZQkUbdXyzZNqLjZiG3A,625
|
114
|
-
ksxt/utils/__pycache__/timer.cpython-312.pyc,sha256=9YXIdgCoGYeTR2gV86pZO9dG6_ZZ_IUNjJ318Tnb0m0,2004
|
115
|
-
ksxt-1.0.7.dist-info/LICENSE.txt,sha256=p2JwEVHDRuJx8UL5Xnt_pFhdC73ppwp7rYQhHqviWB8,1080
|
116
|
-
ksxt-1.0.7.dist-info/METADATA,sha256=2Yw99Tp0SO2JBNo3-WqphruPpxmkhj3QHCql9BBbcuI,1649
|
117
|
-
ksxt-1.0.7.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
118
|
-
ksxt-1.0.7.dist-info/top_level.txt,sha256=XLUhkZCur5Pe0BPUV3J0syngIPz7jBb2YlQR4epo5kI,5
|
119
|
-
ksxt-1.0.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|