ksxt 1.0.3__py3-none-any.whl → 1.0.5__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 (36) hide show
  1. ksxt/__pycache__/bithumb.cpython-312.pyc +0 -0
  2. ksxt/__pycache__/koreainvest.cpython-312.pyc +0 -0
  3. ksxt/__pycache__/upbit.cpython-312.pyc +0 -0
  4. ksxt/api/__pycache__/bithumb.cpython-312.pyc +0 -0
  5. ksxt/api/__pycache__/koreainvest.cpython-312.pyc +0 -0
  6. ksxt/api/__pycache__/upbit.cpython-312.pyc +0 -0
  7. ksxt/async_/__pycache__/bithumb.cpython-312.pyc +0 -0
  8. ksxt/async_/__pycache__/koreainvest.cpython-312.pyc +0 -0
  9. ksxt/async_/__pycache__/upbit.cpython-312.pyc +0 -0
  10. ksxt/async_/base/__pycache__/async_exchange.cpython-312.pyc +0 -0
  11. ksxt/async_/base/async_exchange.py +19 -17
  12. ksxt/async_/bithumb.py +41 -21
  13. ksxt/async_/koreainvest.py +80 -8
  14. ksxt/async_/upbit.py +58 -22
  15. ksxt/base/__pycache__/exchange.cpython-312.pyc +0 -0
  16. ksxt/base/__pycache__/rest_exchange.cpython-312.pyc +0 -0
  17. ksxt/base/exchange.py +33 -66
  18. ksxt/base/rest_exchange.py +28 -29
  19. ksxt/bithumb.py +33 -14
  20. ksxt/koreainvest.py +30 -8
  21. ksxt/models/__pycache__/transaction.cpython-312.pyc +0 -0
  22. ksxt/models/transaction.py +2 -0
  23. ksxt/parser/__pycache__/bithumb.cpython-312.pyc +0 -0
  24. ksxt/parser/__pycache__/koreainvest.cpython-312.pyc +0 -0
  25. ksxt/parser/__pycache__/parser.cpython-312.pyc +0 -0
  26. ksxt/parser/__pycache__/upbit.cpython-312.pyc +0 -0
  27. ksxt/parser/bithumb.py +102 -12
  28. ksxt/parser/koreainvest.py +66 -12
  29. ksxt/parser/parser.py +25 -7
  30. ksxt/parser/upbit.py +106 -16
  31. ksxt/upbit.py +48 -18
  32. {ksxt-1.0.3.dist-info → ksxt-1.0.5.dist-info}/METADATA +1 -1
  33. {ksxt-1.0.3.dist-info → ksxt-1.0.5.dist-info}/RECORD +36 -36
  34. {ksxt-1.0.3.dist-info → ksxt-1.0.5.dist-info}/WHEEL +1 -1
  35. {ksxt-1.0.3.dist-info → ksxt-1.0.5.dist-info}/LICENSE.txt +0 -0
  36. {ksxt-1.0.3.dist-info → ksxt-1.0.5.dist-info}/top_level.txt +0 -0
ksxt/upbit.py CHANGED
@@ -2,7 +2,7 @@ import hashlib
2
2
  import json
3
3
  import time
4
4
  import uuid
5
- from datetime import datetime
5
+ from datetime import datetime, timezone
6
6
  from typing import Any, Dict, List, Literal, Optional
7
7
  from urllib.parse import urlencode
8
8
 
@@ -123,10 +123,19 @@ class Upbit(RestExchange, ImplicitAPI):
123
123
  return ksxt.models.KsxtMarketResponse(header=common_header, response=common_response, info=parsed_info)
124
124
 
125
125
  def fetch_historical_data(
126
- self, symbol: str, time_frame: str, start: str | None = None, end: str | None = None, base_market: str = "KRW"
126
+ self,
127
+ symbol: str,
128
+ time_frame: str,
129
+ start: datetime | None = None,
130
+ end: datetime | None = None,
131
+ base_market: str = "KRW",
127
132
  ) -> ksxt.models.KsxtHistoricalDataResponse:
128
133
  params = {"market": self.safe_symbol(base_market, symbol), "count": 200}
129
134
 
135
+ if end:
136
+ end_utc = end.astimezone(timezone.utc)
137
+ params.update({"to": end_utc.strftime("%Y-%m-%d %H:%M:%S")})
138
+
130
139
  # TODO : time_frame 을 어떻게 고정시킬까? 우리는 분봉, 일봉, 주봉, 월봉 만 지원한다고 가정하면?
131
140
  if time_frame.endswith("m"):
132
141
  # TODO : parse number
@@ -152,9 +161,13 @@ class Upbit(RestExchange, ImplicitAPI):
152
161
  if common_response.success != "0":
153
162
  return ksxt.models.KsxtHistoricalDataResponse(header=common_header, response=common_response, info=None)
154
163
 
155
- parsed_info = self.parser.parse_historical_data(response=response, symbol=symbol, base_market=base_market)
164
+ parsed_response = self.parser.parse_historical_data(
165
+ response=response, symbol=symbol, start=start, end=end, base_market=base_market
166
+ )
156
167
 
157
- return ksxt.models.KsxtHistoricalDataResponse(header=common_header, response=common_response, info=parsed_info)
168
+ return ksxt.models.KsxtHistoricalDataResponse(
169
+ header=common_header, response=common_response, info=parsed_response
170
+ )
158
171
 
159
172
  def fetch_ticker(self, symbol: str, base_market: str = "KRW") -> ksxt.models.KsxtTickerResponse:
160
173
  params = {"markets": self.safe_symbol(base_market, symbol)} # 다중 조회 시, 콤마로 구분 ex. 'KRW-BTC, BTC-ETH'
@@ -224,7 +237,9 @@ class Upbit(RestExchange, ImplicitAPI):
224
237
 
225
238
  return ksxt.models.KsxtMultiOrderBookResponse(header=common_header, response=common_response, info=parsed_info)
226
239
 
227
- def fetch_balance(self, acc_num: str, base_market: str = "KRW") -> ksxt.models.KsxtBalanceResponse:
240
+ def fetch_balance(
241
+ self, acc_num: str, base_market: str = "KRW", excluded_symbols: Optional[list[str]] = None
242
+ ) -> ksxt.models.KsxtBalanceResponse:
228
243
  params = {}
229
244
 
230
245
  common_header = self.create_common_header(request_params=params)
@@ -235,7 +250,9 @@ class Upbit(RestExchange, ImplicitAPI):
235
250
  if common_response.success != "0":
236
251
  return ksxt.models.KsxtBalanceResponse(header=common_header, response=common_response, info=None)
237
252
 
238
- parsed_info = self.parser.parse_balance(response=response, base_market=base_market)
253
+ parsed_info = self.parser.parse_balance(
254
+ response=response, base_market=base_market, excluded_symbols=excluded_symbols
255
+ )
239
256
 
240
257
  return ksxt.models.KsxtBalanceResponse(header=common_header, response=common_response, info=parsed_info)
241
258
 
@@ -331,8 +348,8 @@ class Upbit(RestExchange, ImplicitAPI):
331
348
  self,
332
349
  acc_num: str,
333
350
  symbol: Optional[str] = "",
334
- start: Optional[str] = None,
335
- end: Optional[str] = None,
351
+ start: datetime | None = None,
352
+ end: datetime | None = None,
336
353
  base_market: str = "KRW",
337
354
  ) -> ksxt.models.KsxtClosedOrderResponse:
338
355
  params = {"state": "done"}
@@ -348,16 +365,18 @@ class Upbit(RestExchange, ImplicitAPI):
348
365
  if common_response.success != "0":
349
366
  return ksxt.models.KsxtClosedOrderResponse(header=common_header, response=common_response, info=None)
350
367
 
351
- parsed_info = self.parser.parse_closed_order_history(response=response, base_market=base_market)
352
-
368
+ # 데이터 파싱
369
+ parsed_info = self.parser.parse_closed_order_history(
370
+ response=response, start=start, end=end, base_market=base_market
371
+ )
353
372
  return ksxt.models.KsxtClosedOrderResponse(header=common_header, response=common_response, info=parsed_info)
354
373
 
355
374
  def fetch_open_order(
356
375
  self,
357
376
  acc_num: str,
358
- symbol: str | None = "",
359
- start: str | None = None,
360
- end: str | None = None,
377
+ symbol: Optional[str] = "",
378
+ start: datetime | None = None,
379
+ end: datetime | None = None,
361
380
  base_market: str = "KRW",
362
381
  ) -> ksxt.models.KsxtOpenOrderResponse:
363
382
  params = {"state": "wait"}
@@ -373,12 +392,15 @@ class Upbit(RestExchange, ImplicitAPI):
373
392
  if common_response.success != "0":
374
393
  return ksxt.models.KsxtOpenOrderResponse(header=common_header, response=common_response, info=None)
375
394
 
376
- parsed_info = self.parser.parse_open_order_history(response=response, base_market=base_market)
395
+ # 데이터 파싱
396
+ parsed_info = self.parser.parse_open_order_history(
397
+ response=response, start=start, end=end, base_market=base_market
398
+ )
377
399
 
378
400
  return ksxt.models.KsxtOpenOrderResponse(header=common_header, response=common_response, info=parsed_info)
379
401
 
380
402
  def fetch_withdrawal_history(
381
- self, acc_num: str, base_market: str = "KRW"
403
+ self, acc_num: str, start: datetime | None = None, end: datetime | None = None, base_market: str = "KRW"
382
404
  ) -> ksxt.models.KsxtWithdrawalHistoryResponse:
383
405
  params = {"currency": base_market, "state": "DONE"}
384
406
 
@@ -390,13 +412,18 @@ class Upbit(RestExchange, ImplicitAPI):
390
412
  if common_response.success != "0":
391
413
  return ksxt.models.KsxtWithdrawalHistoryResponse(header=common_header, response=common_response, info=None)
392
414
 
393
- parsed_info = self.parser.parse_withdrawal_history(response=response, base_market=base_market)
415
+ # 데이터 파싱
416
+ parsed_info = self.parser.parse_withdrawal_history(
417
+ response=response, start=start, end=end, base_market=base_market
418
+ )
394
419
 
395
420
  return ksxt.models.KsxtWithdrawalHistoryResponse(
396
421
  header=common_header, response=common_response, info=parsed_info
397
422
  )
398
423
 
399
- def fetch_deposit_history(self, acc_num: str, base_market: str = "KRW") -> ksxt.models.KsxtDepositHistoryResponse:
424
+ def fetch_deposit_history(
425
+ self, acc_num: str, start: datetime | None = None, end: datetime | None = None, base_market: str = "KRW"
426
+ ) -> ksxt.models.KsxtDepositHistoryResponse:
400
427
  params = {"currency": base_market, "state": "ACCEPTED"}
401
428
 
402
429
  common_header = self.create_common_header(request_params=params)
@@ -407,7 +434,10 @@ class Upbit(RestExchange, ImplicitAPI):
407
434
  if common_response.success != "0":
408
435
  return ksxt.models.KsxtDepositHistoryResponse(header=common_header, response=common_response, info=None)
409
436
 
410
- parsed_info = self.parser.parse_deposit_history(response=response, base_market=base_market)
437
+ # 데이터 파싱
438
+ parsed_info = self.parser.parse_deposit_history(
439
+ response=response, start=start, end=end, base_market=base_market
440
+ )
411
441
 
412
442
  return ksxt.models.KsxtDepositHistoryResponse(header=common_header, response=common_response, info=parsed_info)
413
443
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ksxt
3
- Version: 1.0.3
3
+ Version: 1.0.5
4
4
  License: MIT License
5
5
 
6
6
  Copyright © 2023 AMOSA
@@ -1,19 +1,19 @@
1
1
  ksxt/__init__.py,sha256=Q4kbXuxaCcQg5Z1T2z31lrUc5Cr95RIyv-y6hNf3R0E,131
2
- ksxt/bithumb.py,sha256=0pRy8XamlHZ2ypSeJkqiLbkqos5_l3vLKGmqL_EplS8,21405
3
- ksxt/koreainvest.py,sha256=vBsAtTSq7n2y_2VxADeb4ByuggoS2fw5f4G80dJMBbw,20111
4
- ksxt/upbit.py,sha256=ploO4Q4iX9wUfa6UagY2S5cvZvMHVDXsXF4fbu8723g,21699
2
+ ksxt/bithumb.py,sha256=1_pA-dFJvFnrnj5jP5wXy1wLUivPuKNd9SfW6AZwtFk,22149
3
+ ksxt/koreainvest.py,sha256=ohXxbhPphLmAYPtEmEQw_3kzQOnGn80e2y4K8tdbGb4,20500
4
+ ksxt/upbit.py,sha256=WE9sTqTOu3409YY3aCxOz0nWdYngP_ylu2BLsNzH7qU,22556
5
5
  ksxt/__pycache__/__init__.cpython-312.pyc,sha256=aBHVFPn-w8foaTpyyvHjFAb4fVLkO3orauFpozqpvv8,309
6
- ksxt/__pycache__/bithumb.cpython-312.pyc,sha256=-LMMeJeyFVIwZIRrcrhI1Eu2NW7YshgeKj5W7WNIN2U,24714
7
- ksxt/__pycache__/koreainvest.cpython-312.pyc,sha256=LlTRWhLISNtaHeK6UcF7r1N8HL1bhDj7Ag4pvNx2dqs,21942
8
- ksxt/__pycache__/upbit.cpython-312.pyc,sha256=ZXauE6uNC1PUjV9y8_2zr9jla8MSCBhL1z4mZ9VPGv4,25109
6
+ ksxt/__pycache__/bithumb.cpython-312.pyc,sha256=68w6VqfuUl-N_oMdl1U0NVoI0GokNpBKAiH90OjQvyA,25447
7
+ ksxt/__pycache__/koreainvest.cpython-312.pyc,sha256=J6TqEj-oMtdzC9BssoxlCjd8a63xFor_5Ln0B_9hIng,22244
8
+ ksxt/__pycache__/upbit.cpython-312.pyc,sha256=ha8t5Ubp5CAoz4p9-rcmaaeVnaJjFMEIXdTo4NApJHA,25839
9
9
  ksxt/api/__init__.py,sha256=CZ8AedRG8O9vEdSqTaot5sV3nwpxPZoVOYwrFCLUo6M,736
10
10
  ksxt/api/bithumb.py,sha256=6apoSNoiEOIkR6xQu4rtCSz7sdNdx3BHeu8-m8omh6E,2177
11
11
  ksxt/api/koreainvest.py,sha256=93BASTUUsw39APRFxVqlaOu-keEFuIO3MvHX_6g-AAs,2159
12
12
  ksxt/api/upbit.py,sha256=CQN-A0gVoeNoHTZhH8kCaGk1svaOvo5HDyVFfXou_6A,2704
13
13
  ksxt/api/__pycache__/__init__.cpython-312.pyc,sha256=ADtdUmNtVvjoBuPDCkQpCcl62eIdev63nkOnSu8FRjo,1373
14
- ksxt/api/__pycache__/bithumb.cpython-312.pyc,sha256=emlP-zEVsgcn2M6e7pPMzXM-J2QWGkG-wLmjtNuX04M,2558
15
- ksxt/api/__pycache__/koreainvest.cpython-312.pyc,sha256=fBlvoJBAUl0LC6oSfcqqPZ77zx3dU7puGb8TG3N0UzY,2086
16
- ksxt/api/__pycache__/upbit.cpython-312.pyc,sha256=qAmdXnYMuerUq72es3weWcHykLxCxjO03aHPWW0MDVs,3013
14
+ ksxt/api/__pycache__/bithumb.cpython-312.pyc,sha256=YCkBbJj8uNqjuxUQF0Ko9X0VSYsteksIbutP09zKrG4,2558
15
+ ksxt/api/__pycache__/koreainvest.cpython-312.pyc,sha256=sCCOv9RV7cTn6LXVpdFNEqrWakpm97bl5AbA3AMDzMo,2086
16
+ ksxt/api/__pycache__/upbit.cpython-312.pyc,sha256=exLCsTut235Sryu1WxtFJJgw_k7z2xwwtqh6svw_o3Q,3013
17
17
  ksxt/api/auto/api_generator.py,sha256=R8Q7uFN1wDr_0CUsJJ1nmZhoDBwzjPlKUXrNCsY9QKU,2540
18
18
  ksxt/api/auto/bithumb.py,sha256=n6ctGefq28i5CMiItLF1xOZgeDP9F9em4HXfoPUcmqw,1261
19
19
  ksxt/api/auto/koreainvest.py,sha256=z4Bf3C7g2W-eQP99oBeM_J0mq2D3PkbQaulrDwxJB04,1582
@@ -22,30 +22,30 @@ ksxt/api/auto/__pycache__/bithumb.cpython-312.pyc,sha256=s-R5UHnDxV2DxOugrUdHyu2
22
22
  ksxt/api/auto/__pycache__/koreainvest.cpython-312.pyc,sha256=kz6DHIlhPARI_GfYsZzwVz7NoQ6We_yCFrMWLpW0JTQ,968
23
23
  ksxt/api/auto/__pycache__/upbit.cpython-312.pyc,sha256=LVxuy6pD2QGXmM1kYou2-xWhb4075o9lkPFDpv2z004,965
24
24
  ksxt/async_/__init__.py,sha256=ztfV65aN2mXamQSfVm3GLYB6cszkvsCSlUyhfe2H_2M,186
25
- ksxt/async_/bithumb.py,sha256=8u87o6HBqU1Ga0-MUBnygrkx6IjwzonImlPV3qZ_zug,19285
26
- ksxt/async_/koreainvest.py,sha256=Mc6nsYPQkmc-kRs-pSNNWzKgqPbw65RCGAvmOQLHFw0,20278
27
- ksxt/async_/upbit.py,sha256=99IC-czWOV6SsKN645BdbM7Rg_oDo8_iwaIzfGxI_i0,21247
25
+ ksxt/async_/bithumb.py,sha256=pbbiUYz_jwir_ec-vWg6oHMQjgWUQ209WrmESxJ2FG4,20042
26
+ ksxt/async_/koreainvest.py,sha256=PzIRsAsP2pLkNgxBaiHY3Nq4arYAKW4OA8EE1iMmVGQ,22827
27
+ ksxt/async_/upbit.py,sha256=y3jwVSccJ9zSLOwiRzShu_q-VZvHpizf7p-cyqMqcT4,22478
28
28
  ksxt/async_/__pycache__/__init__.cpython-312.pyc,sha256=0kYmKTHaRVZMai7hLh6lRtbRBJYn-b7m8NpMgJ7NmHg,378
29
- ksxt/async_/__pycache__/bithumb.cpython-312.pyc,sha256=hfxlcmX1b-ChXBKk07bw97rKJuGFf1MsnZwP2zNrUYc,23395
30
- ksxt/async_/__pycache__/koreainvest.cpython-312.pyc,sha256=DRiz8LYQLChqH4FVymdKP4q50WnmMLr5sMY5bys1SH8,22778
31
- ksxt/async_/__pycache__/upbit.cpython-312.pyc,sha256=VxXEAIzEuEldKakKwxZioCsyP0fdamR6xWMlmJgMQw4,26271
29
+ ksxt/async_/__pycache__/bithumb.cpython-312.pyc,sha256=PNU5CWHVwxGesTRb0ZQQU12esCxLDxJh6PTu2wVGytQ,24179
30
+ ksxt/async_/__pycache__/koreainvest.cpython-312.pyc,sha256=kBFxY26xmn05yXFRpiaqekuo3bLDTcKSBLiFaLupk-8,25452
31
+ ksxt/async_/__pycache__/upbit.cpython-312.pyc,sha256=Hq-N2dexzioMKo8DkF6cifFhKrdlHMC0nUpnSHt0hGU,27541
32
32
  ksxt/async_/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- ksxt/async_/base/async_exchange.py,sha256=wsX-GCcd5PgdVyJVskcKxF-fECw69uFWdtNnj0MGieU,9406
33
+ ksxt/async_/base/async_exchange.py,sha256=pAjsHuSzv9BbU26icfzn0t53TIC62VEJ6Q1oHT4pxQc,9570
34
34
  ksxt/async_/base/__pycache__/__init__.cpython-312.pyc,sha256=6FPlac0sgVrNi5Ln3bOjRTq9zF2XysE9qQXl4j3nKok,151
35
- ksxt/async_/base/__pycache__/async_exchange.cpython-312.pyc,sha256=-PICgJ523CIDJBBOX5VpIXXKKj3rsF8HpyfATJtvpuY,15426
35
+ ksxt/async_/base/__pycache__/async_exchange.cpython-312.pyc,sha256=gD1kbby6oj6dmQR-cfgqBctsufg-OnxL3rdBi2gAIqE,15640
36
36
  ksxt/async_/base/__pycache__/throttler.cpython-312.pyc,sha256=R-LT5NWQWnX74cdMJYKM1rjSpCGCdN7t1m8V5QUOwK8,3190
37
37
  ksxt/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  ksxt/base/com_exchange.py,sha256=q7C3Bc5q4ENvNGoghnQCN7YLttgwmFoNj9WsH5qxXNQ,287
39
39
  ksxt/base/errors.py,sha256=msGHmm9YGUOXOaK_VhOUEt5LvIDMMm6G-io8nQbNgA0,141
40
- ksxt/base/exchange.py,sha256=rJ-cXfhZ00nBxgDUlwP_-kVhPI3Si5YC1f0zXok9kXM,16797
40
+ ksxt/base/exchange.py,sha256=S-ZKsh--yRHLfZ4-Yx_u5A1CrVEQzsYDb9sjYslCEO0,16098
41
41
  ksxt/base/rate_limiter.py,sha256=9iF6OB-2u0q4nqtng8Tafn-fM3CVQ-DvdNRJ1aSCS3w,3005
42
- ksxt/base/rest_exchange.py,sha256=4DpSpLYVPZ-WGGV0oBQIDEUDjAAmj7DrsaI1_7GjGUo,15835
42
+ ksxt/base/rest_exchange.py,sha256=vMDvojZsN5YzP1BVPtFdR8UxoF8y-bu655KkJiAkq3o,15952
43
43
  ksxt/base/types.py,sha256=3bd3obJhhX1njy_o4LW8hSAHX2MThOI-mZm6iifwno4,59
44
44
  ksxt/base/__pycache__/__init__.cpython-312.pyc,sha256=bNBz2l_g_6uoMfpg84oTHcjKkwBVVRavk1RlYg6N-to,144
45
45
  ksxt/base/__pycache__/errors.cpython-312.pyc,sha256=Cqv1BFN_hzWP_5aJyEUUQqpG8eDiGmKROqaRmg9CCU8,620
46
- ksxt/base/__pycache__/exchange.cpython-312.pyc,sha256=xyp2s_ZQ5JkJfbXjJObXSPfo4sErQaH9slnNalKdRCw,21751
46
+ ksxt/base/__pycache__/exchange.cpython-312.pyc,sha256=19yIHgTh1OabVwLIo0r_DXAmkgFCY9hvneu1uhorBks,21259
47
47
  ksxt/base/__pycache__/rate_limiter.cpython-312.pyc,sha256=h1UefCyC3UBW2izVXNt6OXLLXrAcP3ZubJEzdLaoSL4,5416
48
- ksxt/base/__pycache__/rest_exchange.cpython-312.pyc,sha256=RyXa_vKJ43DK0Ya7bjiuXPLSKvClN-WuxBLzmx_cg-k,22847
48
+ ksxt/base/__pycache__/rest_exchange.cpython-312.pyc,sha256=NgGJdTGSl1zp1ckXmEl7tWP6VpoBGvbXmRlMboPq978,23036
49
49
  ksxt/base/__pycache__/types.cpython-312.pyc,sha256=7bugAIz0poOTdpogxGqmiFcjhrgCfMDlu1gZ2l3Qo0c,230
50
50
  ksxt/config/__init__.py,sha256=hkQx56FVJD8Gq1A_KzfOqO8BoqJRTX5TnUmqIignnlc,148
51
51
  ksxt/config/bithumb.toml,sha256=JgKgHQVATsLcbxKYvekSRonJ4PjJ5x2ejp1eZHHusrQ,11693
@@ -88,7 +88,7 @@ ksxt/models/order.py,sha256=LJJd-licLirI5WrAM1MItViOX_u5U_fmpBFPpDSdHxE,867
88
88
  ksxt/models/orderbook.py,sha256=S1c03QBu1hupN87CMWLgEsh8u2GrZ_Z_BcTUuiKGnR0,773
89
89
  ksxt/models/ticker.py,sha256=pPc7GqUOJchLg7qOpKfxhTVpXygF1Otc_M9_KfHFEgY,544
90
90
  ksxt/models/token.py,sha256=eUBoX7O0ffC63BN12-1aUjcfE_R1Ylyxr6_U79FLDv0,319
91
- ksxt/models/transaction.py,sha256=dLPXoWcMzfVf8FAJT69BIDzOboRpqYxvUMcrZeuvICQ,1599
91
+ ksxt/models/transaction.py,sha256=AOIf3VdIbYNtafyFdDmmO1n5W3teY_GCP5F_erAAq8o,1643
92
92
  ksxt/models/__pycache__/__init__.cpython-312.pyc,sha256=uln0kH0-sy3WsBbbAjvV-E-D6L3Dtb6ph0oQki4yxjQ,1031
93
93
  ksxt/models/__pycache__/balance.cpython-312.pyc,sha256=_r64PniIdeptVO7zbVxYeh6nTH2UCnmnK8EzOr2jPzo,1279
94
94
  ksxt/models/__pycache__/cash.cpython-312.pyc,sha256=XXk7d17aZCvNf0_-pszEHqp0iBVNmT6PGANun6TUUBo,720
@@ -100,15 +100,15 @@ ksxt/models/__pycache__/order.cpython-312.pyc,sha256=j5LVaexWVroh3TC3Mrf11dH2prG
100
100
  ksxt/models/__pycache__/orderbook.cpython-312.pyc,sha256=Yzm2_c3BjdgWgTMWKPCfwXj4dVxJV-GFG8May6ahfFg,1515
101
101
  ksxt/models/__pycache__/ticker.cpython-312.pyc,sha256=9kKIXZ1a6S_0Fpb3kjccZmrxcD1jYhChIRLvYpgnB6I,1163
102
102
  ksxt/models/__pycache__/token.cpython-312.pyc,sha256=HETJcEemd8gsaz4dLneFM2cqlaFHiXRixzt34_Ejzik,793
103
- ksxt/models/__pycache__/transaction.cpython-312.pyc,sha256=Vnsihu0tHAO9zJ1DZtHaDMATWHNxPRpMHf_ZBGnYCHk,2777
104
- ksxt/parser/bithumb.py,sha256=K5LR9n_Sdrvh4RjVUZ0XtfSPRI-OsNlcXGynj_Er09s,14118
105
- ksxt/parser/koreainvest.py,sha256=TfKmaRVc1Tns_kYnhJa2lUjtcO88oNdBWJKLMzC3ZHo,15081
106
- ksxt/parser/parser.py,sha256=8H6RmI6XUBhwp3r7pFcdtUuf-7bZ5RvnObXKrcOMfyI,5147
107
- ksxt/parser/upbit.py,sha256=eD-JJ5hV894G8ju8y52WyZIenkmPZxngZ9uzD1kolW8,14543
108
- ksxt/parser/__pycache__/bithumb.cpython-312.pyc,sha256=OPQmu1c0o6T-Wqbu2NbLWN_wSEm-YctHNQkYecsC1JU,17970
109
- ksxt/parser/__pycache__/koreainvest.cpython-312.pyc,sha256=oea74-Wd6kMhH99ZykmaDnewrYzNIQ4Z-USOet3Q2f4,18503
110
- ksxt/parser/__pycache__/parser.cpython-312.pyc,sha256=vzwmHXDwTBpzayrpPXOAYQNRqXVpAgn3hov2LUOdKBg,8324
111
- ksxt/parser/__pycache__/upbit.cpython-312.pyc,sha256=9sfHPV49vaCdIigxHiy4Gpe2y-7TW-CK2ldUZWN9DFw,18763
103
+ ksxt/models/__pycache__/transaction.cpython-312.pyc,sha256=JBag20Aw6sx_-caWqi82Qxm7BgFJR0F4ME0vGugsxII,2821
104
+ ksxt/parser/bithumb.py,sha256=wGt52wGgFDH7zkWyhhqOg3ABH-tv_YwsoZ3MWcozAQc,17203
105
+ ksxt/parser/koreainvest.py,sha256=UzZGR6JgLrT9Z2lFH3V-6E-Uj_BnbSHqqHB0Pr7gaKQ,16684
106
+ ksxt/parser/parser.py,sha256=Ic40whJb2osDWuctVBjeFLYSXItcONAtawKkFbhHySw,5694
107
+ ksxt/parser/upbit.py,sha256=tDbt0Dhd6HG4qXe7OuzLks0zx8era3meSRafYRIGTWA,17746
108
+ ksxt/parser/__pycache__/bithumb.cpython-312.pyc,sha256=O_9hCKXYGnmjfaJWwzlT0Sqs0sjNxyDmT9W_yADmgwA,21282
109
+ ksxt/parser/__pycache__/koreainvest.cpython-312.pyc,sha256=PxFVti7Q-zhFwEmJxOPmDqyPH7pOHYsfi-Yy3nckL-c,20111
110
+ ksxt/parser/__pycache__/parser.cpython-312.pyc,sha256=U_FtyOVWAAeCUsH1QU41Yw2u6bu06sqF72Tv_tBJWpU,8910
111
+ ksxt/parser/__pycache__/upbit.cpython-312.pyc,sha256=NOtBxO5IHbzIH6S5octbpqU4T0J9CpOw2VSJjHA-eOs,22384
112
112
  ksxt/sample/symbol_sync.ipynb,sha256=dnUOgEKdUuEkDo_6LZjmDtVuNh4PPmCN4Ht7Pz-0L9Y,640081
113
113
  ksxt/utils/safer.py,sha256=tlXDU9KDxrrM0HT2bv45hkblIgbEYr02NygdYS0jj6c,1289
114
114
  ksxt/utils/sorter.py,sha256=j7eN1Qy7Wx3cXcWyRWyO1fVq-M24TrXvcfewPR5axF4,227
@@ -116,8 +116,8 @@ ksxt/utils/timer.py,sha256=4_rhXdQDFkKshS5utWrgTteIe71tVSTL1zNW-IjOngM,1228
116
116
  ksxt/utils/__pycache__/safer.cpython-312.pyc,sha256=oPbGln-szGLBGYR0JVFxjE5v3jbzsSvGhqbmFSIcJQE,1989
117
117
  ksxt/utils/__pycache__/sorter.cpython-312.pyc,sha256=4vNlq0bWtItRlsRjXANLnBuThidmM6m_0YY_-PLA2Go,624
118
118
  ksxt/utils/__pycache__/timer.cpython-312.pyc,sha256=IXsQV8yPC92ExFaWgvwn-MgEfiLZxSP5pjU6xqYx8Sw,2003
119
- ksxt-1.0.3.dist-info/LICENSE.txt,sha256=vyuXQcPOZ9BriMQz3h1k3jQTrKGsAjohf8WQHHf6xqo,1080
120
- ksxt-1.0.3.dist-info/METADATA,sha256=vuUbna48h7AldwQbqwVx4hGJGz3M3OrEIFM1fLwK1nY,1649
121
- ksxt-1.0.3.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
122
- ksxt-1.0.3.dist-info/top_level.txt,sha256=XLUhkZCur5Pe0BPUV3J0syngIPz7jBb2YlQR4epo5kI,5
123
- ksxt-1.0.3.dist-info/RECORD,,
119
+ ksxt-1.0.5.dist-info/LICENSE.txt,sha256=vyuXQcPOZ9BriMQz3h1k3jQTrKGsAjohf8WQHHf6xqo,1080
120
+ ksxt-1.0.5.dist-info/METADATA,sha256=ha9_CoiYs1RP85pPFK69W1o7y1cHZPnlRtm6csp7Pec,1649
121
+ ksxt-1.0.5.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
122
+ ksxt-1.0.5.dist-info/top_level.txt,sha256=XLUhkZCur5Pe0BPUV3J0syngIPz7jBb2YlQR4epo5kI,5
123
+ ksxt-1.0.5.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.1.2)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5