akshare 1.17.78__py3-none-any.whl → 1.17.80__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.

Potentially problematic release.


This version of akshare might be problematic. Click here for more details.

akshare/__init__.py CHANGED
@@ -3185,9 +3185,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3185
3185
  1.17.76 fix: fix futures_index_ccidx interface
3186
3186
  1.17.77 fix: fix get_dce_daily interface
3187
3187
  1.17.78 fix: fix update python 3.14 support
3188
+ 1.17.79 fix: fix futures_contract_info_dce interface
3189
+ 1.17.80 fix: fix futures_contract_detail_em interface
3188
3190
  """
3189
3191
 
3190
- __version__ = "1.17.78"
3192
+ __version__ = "1.17.80"
3191
3193
  __author__ = "AKFamily"
3192
3194
 
3193
3195
  import sys
@@ -3209,6 +3211,11 @@ if sys.version_info < (3, 9):
3209
3211
 
3210
3212
  del sys
3211
3213
 
3214
+ """
3215
+ openctp-合约信息接口
3216
+ """
3217
+ from akshare.option.option_contract_info_ctp import option_contract_info_ctp
3218
+
3212
3219
  """
3213
3220
  中国外汇交易中心暨全国银行间同业拆借中心-基准-外汇市场-外汇掉期曲线-外汇掉漆 C-Swap 定盘曲线
3214
3221
  """
@@ -4683,7 +4690,7 @@ from akshare.stock.stock_zh_kcb_report import stock_zh_kcb_report_em
4683
4690
  """
4684
4691
  期货合约详情
4685
4692
  """
4686
- from akshare.futures.futures_contract_detail import futures_contract_detail
4693
+ from akshare.futures.futures_contract_detail import futures_contract_detail, futures_contract_detail_em
4687
4694
 
4688
4695
  """
4689
4696
  胡润排行榜
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/1/29 17:00
4
+ Date: 2025/10/30 17:00
5
5
  Desc: 查询期货合约当前时刻的详情
6
6
  https://finance.sina.com.cn/futures/quotes/V2101.shtml
7
7
  """
@@ -10,6 +10,7 @@ from io import StringIO
10
10
 
11
11
  import pandas as pd
12
12
  import requests
13
+ from bs4 import BeautifulSoup
13
14
 
14
15
 
15
16
  def futures_contract_detail(symbol: str = "AP2101") -> pd.DataFrame:
@@ -37,6 +38,52 @@ def futures_contract_detail(symbol: str = "AP2101") -> pd.DataFrame:
37
38
  return temp_df
38
39
 
39
40
 
41
+ def futures_contract_detail_em(symbol: str = "v2602F") -> pd.DataFrame:
42
+ """
43
+ 查询期货合约详情
44
+ https://quote.eastmoney.com/qihuo/v2602F.html
45
+ :param symbol: 合约
46
+ :type symbol: str
47
+ :return: 期货合约详情
48
+ :rtype: pandas.DataFrame
49
+ """
50
+ url = f"https://quote.eastmoney.com/qihuo/{symbol}.html"
51
+ r = requests.get(url)
52
+ soup = BeautifulSoup(r.text, features="lxml")
53
+ url_text = \
54
+ soup.find(name="div", attrs={"class": "sidertabbox_tsplit"}).find(name="div", attrs={"class": "onet"}).find(
55
+ "a")[
56
+ 'href']
57
+ inner_symbol = url_text.split("#")[-1].strip("futures_")
58
+ url = f"https://futsse-static.eastmoney.com/redis?msgid={inner_symbol}_info"
59
+ r = requests.get(url)
60
+ data_json = r.json()
61
+ temp_df = pd.DataFrame.from_dict(data_json, orient="index")
62
+ column_mapping = {
63
+ 'vname': '交易品种',
64
+ 'vcode': '交易代码',
65
+ 'jydw': '交易单位',
66
+ 'bjdw': '报价单位',
67
+ 'market': '上市交易所',
68
+ 'zxbddw': '最小变动价格',
69
+ 'zdtbfd': '跌涨停板幅度',
70
+ 'hyjgyf': '合约交割月份',
71
+ 'jysj': '交易时间',
72
+ 'zhjyr': '最后交易日',
73
+ 'zhjgr': '最后交割日',
74
+ 'jgpj': '交割品级',
75
+ 'zcjybzj': '最初交易保证金',
76
+ 'jgfs': '交割方式'
77
+ }
78
+ temp_df.rename(index=column_mapping, inplace=True)
79
+ temp_df.reset_index(drop=False, inplace=True)
80
+ temp_df.columns = ['item', 'value']
81
+ return temp_df
82
+
83
+
40
84
  if __name__ == "__main__":
41
- futures_contract_detail_df = futures_contract_detail(symbol="IM2402")
85
+ futures_contract_detail_df = futures_contract_detail(symbol="V2101")
42
86
  print(futures_contract_detail_df)
87
+
88
+ futures_contract_detail_em_df = futures_contract_detail_em(symbol="v2603F")
89
+ print(futures_contract_detail_em_df)
@@ -6,29 +6,48 @@ Desc: 大连商品交易所-业务/服务-业务参数-交易参数-合约信息
6
6
  http://www.dce.com.cn/dalianshangpin/ywfw/ywcs/jycs/hyxxcx/index.html
7
7
  """
8
8
 
9
- from io import StringIO
10
-
11
9
  import pandas as pd
12
10
  import requests
13
11
 
14
12
 
15
13
  def futures_contract_info_dce() -> pd.DataFrame:
16
14
  """
17
- 大连商品交易所-业务/服务-业务参数-交易参数-合约信息查询
18
- http://www.dce.com.cn/dalianshangpin/ywfw/ywcs/jycs/hyxxcx/index.html
15
+ 大连商品交易所-数据中心-业务数据-交易参数-合约信息
16
+ http://www.dce.com.cn/dce/channel/list/180.html
19
17
  :return: 交易参数汇总查询
20
18
  :rtype: pandas.DataFrame
21
19
  """
22
- url = "http://portal.dce.com.cn/publicweb/businessguidelines/queryContractInfo.html"
23
- params = {
24
- "contractInformation.variety": "all",
25
- "contractInformation.trade_type": "0",
20
+ url = "http://www.dce.com.cn/dcereport/publicweb/tradepara/contractInfo"
21
+ payload = {
22
+ "lang": "zh",
23
+ "tradeType": "1",
24
+ "varietyId": "all",
26
25
  }
27
- r = requests.post(url, params=params)
28
- temp_df = pd.read_html(StringIO(r.text))[0]
26
+ r = requests.post(url, json=payload)
27
+ data_json = r.json()
28
+ temp_df = pd.DataFrame(data_json['data'])
29
+ temp_df.rename(columns={
30
+ "contractId": "合约",
31
+ "variety": "品种名称",
32
+ "varietyOrder": "品种代码",
33
+ "unit": "交易单位",
34
+ "tick": "最小变动价位",
35
+ "startTradeDate": "开始交易日",
36
+ "endTradeDate": "最后交易日",
37
+ "endDeliveryDate": "最后交割日",
38
+ "tradeType": "",
39
+ }, inplace=True)
40
+ temp_df = temp_df[[
41
+ "品种名称",
42
+ "合约",
43
+ "交易单位",
44
+ "最小变动价位",
45
+ "开始交易日",
46
+ "最后交易日",
47
+ "最后交割日",
48
+ ]]
29
49
  temp_df["交易单位"] = pd.to_numeric(temp_df["交易单位"], errors="coerce")
30
50
  temp_df["最小变动价位"] = pd.to_numeric(temp_df["最小变动价位"], errors="coerce")
31
- temp_df["最小变动价位"] = pd.to_numeric(temp_df["最小变动价位"], errors="coerce")
32
51
  temp_df["开始交易日"] = pd.to_datetime(
33
52
  temp_df["开始交易日"], format="%Y%m%d", errors="coerce"
34
53
  ).dt.date
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/10/30 17:40
5
+ Desc: openctp-合约信息接口
6
+ http://openctp.cn/instruments.html
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+
13
+ def option_contract_info_ctp() -> pd.DataFrame:
14
+ """
15
+ openctp-合约信息接口-期权合约
16
+ http://openctp.cn/instruments.html
17
+ :return: 期权合约信息
18
+ :rtype: pandas.DataFrame
19
+ """
20
+ url = "http://dict.openctp.cn/instruments?types=option"
21
+ r = requests.get(url)
22
+ data_json = r.json()
23
+ temp_df = pd.DataFrame(data_json['data'])
24
+
25
+ # 字段映射:英文字段名 -> 中文字段名
26
+ column_mapping = {
27
+ 'ExchangeID': '交易所ID',
28
+ 'InstrumentID': '合约ID',
29
+ 'InstrumentName': '合约名称',
30
+ 'ProductClass': '商品类别',
31
+ 'ProductID': '品种ID',
32
+ 'VolumeMultiple': '合约乘数',
33
+ 'PriceTick': '最小变动价位',
34
+ 'LongMarginRatioByMoney': '做多保证金率',
35
+ 'ShortMarginRatioByMoney': '做空保证金率',
36
+ 'LongMarginRatioByVolume': '做多保证金/手',
37
+ 'ShortMarginRatioByVolume': '做空保证金/手',
38
+ 'OpenRatioByMoney': '开仓手续费率',
39
+ 'OpenRatioByVolume': '开仓手续费/手',
40
+ 'CloseRatioByMoney': '平仓手续费率',
41
+ 'CloseRatioByVolume': '平仓手续费/手',
42
+ 'CloseTodayRatioByMoney': '平今手续费率',
43
+ 'CloseTodayRatioByVolume': '平今手续费/手',
44
+ 'DeliveryYear': '交割年份',
45
+ 'DeliveryMonth': '交割月份',
46
+ 'OpenDate': '上市日期',
47
+ 'ExpireDate': '最后交易日',
48
+ 'DeliveryDate': '交割日',
49
+ 'UnderlyingInstrID': '标的合约ID',
50
+ 'UnderlyingMultiple': '标的合约乘数',
51
+ 'OptionsType': '期权类型',
52
+ 'StrikePrice': '行权价',
53
+ 'InstLifePhase': '合约状态'
54
+ }
55
+ # 重命名列为中文
56
+ temp_df = temp_df.rename(columns=column_mapping)
57
+ return temp_df
58
+
59
+
60
+ # 使用示例
61
+ if __name__ == "__main__":
62
+ option_contract_info_ctp_df = option_contract_info_ctp()
63
+ print(option_contract_info_ctp_df)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/4/25 20:24
4
+ Date: 2025/10/30 20:24
5
5
  Desc: 市盈率, 市净率和股息率查询
6
6
  https://www.legulegu.com/stocklist
7
7
  https://www.legulegu.com/s/000001
@@ -24,12 +24,17 @@ def get_cookie_csrf(url: str = "") -> dict:
24
24
  :return: 指定市场的市盈率数据
25
25
  :rtype: pandas.DataFrame
26
26
  """
27
- r = requests.get(url, headers=headers)
27
+ # 创建独立的 session,避免污染全局状态
28
+ session = requests.Session()
29
+ session.headers.update(headers)
30
+ r = session.get(url)
28
31
  soup = BeautifulSoup(r.text, features="lxml")
29
32
  csrf_tag = soup.find(name="meta", attrs={"name": "_csrf"})
30
33
  csrf_token = csrf_tag.attrs["content"]
31
- headers.update({"X-CSRF-Token": csrf_token})
32
- return {"cookies": r.cookies, "headers": headers}
34
+ # 创建新的 headers
35
+ local_headers = headers.copy()
36
+ local_headers.update({"X-CSRF-Token": csrf_token})
37
+ return {"cookies": r.cookies, "headers": local_headers}
33
38
 
34
39
 
35
40
  def get_token_lg() -> str:
@@ -1,11 +1,10 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2025/10/28 15:00
4
+ Date: 2025/10/30 15:00
5
5
  Desc: 全部A股-等权重市盈率、中位数市盈率
6
6
  https://www.legulegu.com/stockdata/a-ttm-lyr
7
7
  """
8
-
9
8
  import pandas as pd
10
9
  import requests
11
10
 
@@ -15,29 +14,36 @@ from akshare.stock_feature.stock_a_indicator import get_token_lg, get_cookie_csr
15
14
  def stock_a_ttm_lyr() -> pd.DataFrame:
16
15
  """
17
16
  全部 A 股-等权重市盈率、中位数市盈率
18
- https://www.legulegu.com/stockdata/a-ttm-lyr
19
17
  :return: 全部A股-等权重市盈率、中位数市盈率
20
18
  :rtype: pandas.DataFrame
21
19
  """
20
+
22
21
  url = "https://legulegu.com/api/stock-data/market-ttm-lyr"
23
22
  params = {
24
23
  "marketId": "5",
25
24
  "token": get_token_lg(),
26
25
  }
27
- headers = get_cookie_csrf(url="https://www.legulegu.com/stockdata/a-ttm-lyr")['headers']
28
- headers.update({
26
+ # 获取 cookie 和 headers
27
+ csrf_data = get_cookie_csrf(url="https://www.legulegu.com/stockdata/a-ttm-lyr")
28
+ # 使用返回的 headers(已经是副本)
29
+ request_headers = csrf_data['headers'].copy()
30
+ request_headers.update({
29
31
  "host": "www.legulegu.com",
30
32
  "referer": "https://www.legulegu.com/stockdata/a-ttm-lyr",
31
33
  })
32
- r = requests.get(
34
+ # 使用独立的 session
35
+ session = requests.Session()
36
+ r = session.get(
33
37
  url,
34
38
  params=params,
35
- cookies=get_cookie_csrf(url="https://www.legulegu.com/stockdata/a-ttm-lyr")['cookies'],
36
- headers=headers,
39
+ cookies=csrf_data['cookies'],
40
+ headers=request_headers,
37
41
  )
38
42
  data_json = r.json()
39
43
  temp_df = pd.DataFrame(data_json["data"])
40
44
  temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
45
+ # 关闭 session
46
+ session.close()
41
47
  return temp_df
42
48
 
43
49
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: akshare
3
- Version: 1.17.78
3
+ Version: 1.17.80
4
4
  Summary: AKShare is an elegant and simple financial data interface library for Python, built for human beings!
5
5
  Home-page: https://github.com/akfamily/akshare
6
6
  Author: AKFamily
@@ -1,4 +1,4 @@
1
- akshare/__init__.py,sha256=tHBli0wHZVoceyOZk9qIYFUgPpA1NGUjAwwqn5yVzgk,199817
1
+ akshare/__init__.py,sha256=Rb7gDxWNlSLBL0i0lfpucP6P2GjDmocDP3v8FOQvhwA,200065
2
2
  akshare/datasets.py,sha256=rKuRNZrqi6IMsZ9nyvO3Rx02js0tH3zMLjz8HQNAoPQ,963
3
3
  akshare/exceptions.py,sha256=WEJjIhSmJ_xXNW6grwV4nufE_cfmmyuhmueVGiN1VAg,878
4
4
  akshare/request.py,sha256=HtFFf9MhfEibR-ETWe-1Tts6ELU4VKSqA-ghaXjegQM,4252
@@ -114,7 +114,7 @@ akshare/futures/futures_basis.py,sha256=YB-fOUTCanNZqHNcJXJdFqpCBi9_NYbrTlzx2st5
114
114
  akshare/futures/futures_comex_em.py,sha256=NPwOCD6lZUDL4wlGxvbmmJIFkQlW427ERO0vTux13WU,3172
115
115
  akshare/futures/futures_comm_ctp.py,sha256=IyVRCUvhLTFzmcUVvlIaYZ1e38ll7AF8ExhgtXKuzrI,1003
116
116
  akshare/futures/futures_comm_qihuo.py,sha256=uQfabZ63qME8sTaxUbIUVQBVi8yTaPPDhD7voR9PEx0,10504
117
- akshare/futures/futures_contract_detail.py,sha256=Glm1x72WBwF4G-f_ZYzHsbNhlQ6Ti1HeF0Rzhx-pfFg,1190
117
+ akshare/futures/futures_contract_detail.py,sha256=kDovLUtHELjv3kVkMWMuvsXLkZNnRS_R5hlxE4WBdJ0,2877
118
118
  akshare/futures/futures_daily_bar.py,sha256=LYT9_NmIBoHXtrK_jz0iuOKvfA5xZJ4GvDnxDKm-d9k,25057
119
119
  akshare/futures/futures_foreign.py,sha256=2cbMA-eug_jriDFwKZWmA_TbPW2GQAjscpZHBrs287E,2131
120
120
  akshare/futures/futures_hf_em.py,sha256=juiJauO7T6YTHXIS--ZDW-Idk73KMOrXgRBi1xEiBqA,8195
@@ -140,7 +140,7 @@ akshare/futures_derivative/__init__.py,sha256=COFyP01gIUhWs4EBr6hwL73B7IWePIzg7v
140
140
  akshare/futures_derivative/cons.py,sha256=VkG1HMwPVxvj7BaMifcvDpRYLsfd506npVNiEIaLF_s,5914
141
141
  akshare/futures_derivative/futures_contract_info_cffex.py,sha256=Vv8ovM3FR1HTNj0Oe6LDmP1CO3lWYhcls9ck-iFir8U,3497
142
142
  akshare/futures_derivative/futures_contract_info_czce.py,sha256=PQOcX1DBphqdf01U9zH5D5vqZvPuSif5Tlpisnrzl_U,4329
143
- akshare/futures_derivative/futures_contract_info_dce.py,sha256=_VOfb7JT8CRHkZlL4rIKcrCIf-JvITFs45CT2zE5ugc,1709
143
+ akshare/futures_derivative/futures_contract_info_dce.py,sha256=MAajQxkWPfAW0qPTuIHGfgUPZlIJzuTlpOB91z6ElB0,2145
144
144
  akshare/futures_derivative/futures_contract_info_gfex.py,sha256=jWQ7TKPNfEjf1FUCnJqWlHmkvv0qYX0xi0JEEUAuzRg,2313
145
145
  akshare/futures_derivative/futures_contract_info_ine.py,sha256=vwCPG-Vl8c_Wy3ydBZ11ghMM5gjuPN0x9QFvyWxewXI,2433
146
146
  akshare/futures_derivative/futures_contract_info_shfe.py,sha256=PA_S7uIhCidMv2csJ8DpBtKvDQs9GaoZq-yt8oDoyfU,2454
@@ -201,6 +201,7 @@ akshare/option/cons.py,sha256=WgeX4UvkvFmTsNTMYwXcIJkqSfCw6A3hn3qM73QrIM0,4817
201
201
  akshare/option/option_comm_qihuo.py,sha256=kjbdp-94KJJJi1ex5U03abtlgviqwP0Aahb6FwddPkk,3128
202
202
  akshare/option/option_commodity.py,sha256=tgWqOXBy-GW78qRcsDdn6br-DDWhldQtix5nDN2A4EE,26333
203
203
  akshare/option/option_commodity_sina.py,sha256=NN2qywfGZphKlHiEuwU7_3aNXTEKaXH0UrU8xLIQ5XQ,7731
204
+ akshare/option/option_contract_info_ctp.py,sha256=DPXdneZ8UQdqnf4Koq8a6XmFjxXQkCiV_rzo3IzDIUM,2110
204
205
  akshare/option/option_current_sse.py,sha256=jdzQPTXNqFLURMdbqovhOeQNvemN59beuotIJzhdNX8,2033
205
206
  akshare/option/option_current_szse.py,sha256=_6QTRnpLoVwXnUtSPDR1pqEq27Lnksq_9Sl_O06kP28,3551
206
207
  akshare/option/option_czce.py,sha256=9FCgqgxrHX3DBdvg3F6HZ1Hs7uSO7w21KJWpS8Wykgg,2538
@@ -304,7 +305,7 @@ akshare/stock_feature/__init__.py,sha256=c2VDBGyg8nWZYLvtnnSqUoQ92Cu6dJ7UFOeJsB2
304
305
  akshare/stock_feature/cons.py,sha256=h_cIhO4YEx8joPozwE5-jHABPsT8tN7tkZ5v-gcTfmw,466
305
306
  akshare/stock_feature/stock_a_below_net_asset_statistics.py,sha256=XrhZI-wLuXXufI5Nh1l9gUx9x7f0iDtdtKa14wexo54,2653
306
307
  akshare/stock_feature/stock_a_high_low.py,sha256=xS7btdwjlMvxrOu0I3qhezOqLV0gUuHl66FLB_ioxTo,2044
307
- akshare/stock_feature/stock_a_indicator.py,sha256=R8RArKYY3eI3IOTbpb0H7zqMkYBy5peswafRPQRy3Ws,2714
308
+ akshare/stock_feature/stock_a_indicator.py,sha256=6_gTR5HiDfPv6c94DD4AFqIPXRRAxgPxt_A8funQrts,2897
308
309
  akshare/stock_feature/stock_a_pe_and_pb.py,sha256=9HfjTSL_DTlAVvv7o3--pOdZiFwhRzYki7O5DfTrNW8,19089
309
310
  akshare/stock_feature/stock_account_em.py,sha256=4Vh1zoRXmuoGWu1Dw65c9mhIALqOVpb9PLqG5BJgQVg,3312
310
311
  akshare/stock_feature/stock_all_pb.py,sha256=hshUYjNXPPYf3LYj4N0zeT9Q9kxpdBhQVLB9AEPSkAc,1196
@@ -357,7 +358,7 @@ akshare/stock_feature/stock_sy_em.py,sha256=GysP1WvPpqCLhbCRXH5sxwmXCPYvgtbJYQ_j
357
358
  akshare/stock_feature/stock_technology_ths.py,sha256=4u9z7H6MYEutOYAQvYfzgc_FxG6XlhkMLujSotAbraw,30827
358
359
  akshare/stock_feature/stock_tfp_em.py,sha256=Y3jjZ758AlCvmSHr7tlT0CMk5MawbLln0cMtl1dqYMY,2481
359
360
  akshare/stock_feature/stock_three_report_em.py,sha256=SBksPOAGwYFDZSqoOXFg_d4qowHNZdw7JVOMFhMbBG0,24181
360
- akshare/stock_feature/stock_ttm_lyr.py,sha256=VzxwSzQZNaEJlW7azS1FxZJSyk9V7DrMt25285U1mw4,1376
361
+ akshare/stock_feature/stock_ttm_lyr.py,sha256=EZjP1sXfix60Qii1W3MOnHQ-k1FU-rZ6yjgzxVU8m54,1512
361
362
  akshare/stock_feature/stock_value_em.py,sha256=RA842dkeChSEoS3yN9fiGxS3eDzYjeUdrpXbnteyzZY,2576
362
363
  akshare/stock_feature/stock_yjbb_em.py,sha256=hQBr1aj808AdA88Y_dpuR7G1mb487hcRamD31UZus-s,4689
363
364
  akshare/stock_feature/stock_yjyg_cninfo.py,sha256=KM0O5rHBkVAxDl4dmA_WAgqBWJMuaMLoQ2PyJ-VPBi4,2889
@@ -399,10 +400,10 @@ akshare/utils/func.py,sha256=4cwmXFztU86yJNONJ40KJLvsIEQHBbct4iMm3zT2v30,2315
399
400
  akshare/utils/multi_decrypt.py,sha256=aWoL2iEPeuXHJg8-n7OtMKixLnIhfzepACgxfrfmQB4,1657
400
401
  akshare/utils/token_process.py,sha256=nGtgnZGRprXJkhLXH8mcUH4TgIFwzsTOb0EaEPa0Euo,667
401
402
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
402
- akshare-1.17.78.dist-info/licenses/LICENSE,sha256=s18q7gS2g1F9-Cnk5eqrJG4OGWSwSxVEMzIuT6HyYNY,1073
403
+ akshare-1.17.80.dist-info/licenses/LICENSE,sha256=s18q7gS2g1F9-Cnk5eqrJG4OGWSwSxVEMzIuT6HyYNY,1073
403
404
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
404
405
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
405
- akshare-1.17.78.dist-info/METADATA,sha256=_oUoxT9VN0hwMekxJS0SFz9KItxKcStHuAl-WmeKVzY,12765
406
- akshare-1.17.78.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
407
- akshare-1.17.78.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
408
- akshare-1.17.78.dist-info/RECORD,,
406
+ akshare-1.17.80.dist-info/METADATA,sha256=8lFwKd4jNydrzNY2srjAw3TdXPQel6QWACRSszctsD0,12765
407
+ akshare-1.17.80.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
408
+ akshare-1.17.80.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
409
+ akshare-1.17.80.dist-info/RECORD,,