akshare 1.15.5__tar.gz → 1.15.7__tar.gz
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-1.15.5 → akshare-1.15.7}/PKG-INFO +1 -1
- {akshare-1.15.5 → akshare-1.15.7}/akshare/__init__.py +15 -1
- akshare-1.15.7/akshare/exceptions.py +43 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_research_sw.py +18 -18
- {akshare-1.15.5 → akshare-1.15.7}/akshare/qdii/qdii_jsl.py +5 -7
- akshare-1.15.7/akshare/request.py +117 -0
- akshare-1.15.7/akshare/utils/context.py +43 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare.egg-info/PKG-INFO +1 -1
- {akshare-1.15.5 → akshare-1.15.7}/akshare.egg-info/SOURCES.txt +3 -0
- {akshare-1.15.5 → akshare-1.15.7}/LICENSE +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/README.md +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/air/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/air/air_hebei.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/air/air_zhenqi.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/air/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/air/crypto.js +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/air/outcrypto.js +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/air/sunrise_tad.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/article/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/article/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/article/epu_index.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/article/ff_factor.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/article/fred_md.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/article/risk_rv.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bank/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bank/bank_cbirc_2020.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bank/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_cb_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_cb_ths.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_cbond.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_china.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_china_money.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_convert.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_info_cm.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_investing.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_issue_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_nafmii.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_summary.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_zh_cov.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/bond_zh_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/bond/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/cost/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/cost/cost_living.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/crypto/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/crypto/crypto_bitcoin_cme.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/crypto/crypto_hist_investing.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/crypto/crypto_hold.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/currency/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/currency/currency.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/currency/currency_china_bank_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/currency/currency_safe.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/data/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/data/cninfo.js +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/data/crypto_info.zip +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/data/ths.js +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/datasets.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_australia.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_bank.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_canada.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_china.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_china_hk.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_china_nbs.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_constitute.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_euro.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_finance_ths.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_germany.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_info_ws.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_japan.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_other.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_swiss.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_uk.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/macro_usa.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/economic/marco_cnbs.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/energy/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/energy/energy_carbon.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/energy/energy_oil_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/event/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/event/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/event/migration.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/file_fold/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/file_fold/calendar.json +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fortune/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fortune/fortune_500.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fortune/fortune_bloomberg.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fortune/fortune_forbes_500.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fortune/fortune_hurun.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fortune/fortune_xincaifu_500.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_amac.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_announcement.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_aum_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_etf_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_etf_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_etf_ths.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_fhsp_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_init_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_lof_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_manager.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_portfolio_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_position_lg.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_rank_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_rating.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_report_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_scale_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_scale_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fund/fund_xq.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/cot.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_basis.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_comex_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_comm_ctp.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_comm_qihuo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_contract_detail.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_daily_bar.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_foreign.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_hf_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_hq_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_index_ccidx.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_international.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_inventory_99.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_inventory_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_news_baidu.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_news_shmet.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_roll_yield.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_rule.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_settlement_price_sgx.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_spot_stock_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_stock_js.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_to_spot.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_warehouse_receipt.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/futures_zh_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/inventory_data.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/receipt.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/requests_fun.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures/symbol_var.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures_derivative/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures_derivative/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures_derivative/futures_contract_info_cffex.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures_derivative/futures_contract_info_czce.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures_derivative/futures_contract_info_dce.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures_derivative/futures_contract_info_gfex.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures_derivative/futures_contract_info_ine.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures_derivative/futures_contract_info_shfe.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures_derivative/futures_cot_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures_derivative/futures_hog.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures_derivative/futures_index_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/futures_derivative/futures_spot_sys.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fx/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fx/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fx/currency_investing.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fx/fx_quote.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/fx/fx_quote_baidu.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/hf/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/hf/hf_sp500.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_cflp.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_cni.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_cx.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_drewry.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_eri.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_fear_greed_funddb.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_hog.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_investing.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_kq_fz.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_kq_ss.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_option_qvix.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_research_fund_sw.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_spot.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_stock_hk.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_stock_us_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_stock_zh.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_stock_zh_csindex.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_sugar.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_sw.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_yw.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_zh_a_scope.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/index/index_zh_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/interest_rate/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/interest_rate/interbank_rate_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/movie/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/movie/artist_yien.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/movie/jm.js +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/movie/movie_yien.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/movie/video_yien.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/news/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/news/news_baidu.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/news/news_cctv.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/news/news_stock.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/nlp/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/nlp/nlp_interface.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/option_comm_qihuo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/option_commodity.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/option_commodity_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/option_czce.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/option_daily_stats_sse_szse.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/option_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/option_finance.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/option_finance_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/option_lhb_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/option_premium_analysis_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/option_risk_analysis_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/option_risk_indicator_sse.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/option/option_value_analysis_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/other/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/other/other_car_cpca.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/other/other_car_gasgoo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/pro/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/pro/client.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/pro/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/pro/data_pro.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/qdii/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/qhkc/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/qhkc/qhkc_api.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/qhkc_web/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/qhkc_web/qhkc_fund.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/qhkc_web/qhkc_index.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/qhkc_web/qhkc_tool.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/rate/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/rate/repo_rate.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/reits/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/reits/reits_basic.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/sport/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/sport/sport_olympic.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/spot/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/spot/spot_hog_soozhu.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/spot/spot_price_qh.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/spot/spot_sge.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_allotment_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_ask_bid_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_board_concept_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_board_industry_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_cg_equity_mortgage.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_cg_guarantee.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_cg_lawsuit.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_dividend_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_dzjy_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_fund_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_fund_hold.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_gsrl_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_hk_famous.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_hk_fhpx_ths.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_hk_hot_rank_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_hk_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_hold_control_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_hold_control_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_hold_num_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_hot_rank_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_hot_search_baidu.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_hot_up_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_industry.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_industry_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_industry_pe_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_industry_sw.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_info.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_info_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_intraday_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_intraday_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_ipo_summary_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_new_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_news_cx.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_profile_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_rank_forecast.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_repurchase_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_share_changes_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_share_hold.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_stop.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_summary.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_us_famous.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_us_js.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_us_pink.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_us_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_weibo_nlp.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_xq.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_zh_a_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_zh_a_special.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_zh_a_tick_tx.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_zh_ah_tx.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_zh_b_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_zh_kcb_report.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock/stock_zh_kcb_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_a_below_net_asset_statistics.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_a_high_low.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_a_indicator.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_a_pe_and_pb.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_account_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_all_pb.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_analyst_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_board_industry_ths.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_buffett_index_lg.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_classify_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_comment_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_concept_futu.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_congestion_lg.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_cyq_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_disclosure_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_dxsyl_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_ebs_lg.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_esg_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_fhps_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_fhps_ths.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_fund_flow.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_gddh_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_gdfx_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_gdhs.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_gdzjc_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_gpzy_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_gxl_lg.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_hist_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_hist_tx.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_hk_valuation_baidu.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_hot_xq.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_hsgt_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_hsgt_exchange_rate.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_hsgt_min_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_info.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_inner_trade_xq.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_irm_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_jgdy_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_lh_yybpm.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_lhb_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_lhb_sina.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_margin_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_margin_sse.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_margin_szse.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_market_legu.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_pankou_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_qsjy_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_report_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_research_report_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_sns_sseinfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_sy_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_technology_ths.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_tfp_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_three_report_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_ttm_lyr.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_wencai.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_yjbb_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_yjyg_cninfo.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_yjyg_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_yzxdr_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_zdhtmx_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_zf_pg.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_zh_valuation_baidu.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_zh_vote_baidu.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/stock_ztb_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_feature/ths.js +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_finance.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_finance_hk.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_finance_ths.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_hold.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_ipo_declare.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_kcb_detail_sse.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_kcb_sse.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_mda_ym.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_notice.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_profit_forecast_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_profit_forecast_ths.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_recommend.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_register_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_restricted_em.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_zygc.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/stock_fundamental/stock_zyjs_ths.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/tool/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/tool/trade_date_hist.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/utils/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/utils/cons.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/utils/demjson.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/utils/func.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/utils/token_process.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare/utils/tqdm.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare.egg-info/dependency_links.txt +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare.egg-info/requires.txt +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/akshare.egg-info/top_level.txt +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/pyproject.toml +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/setup.cfg +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/setup.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/tests/__init__.py +0 -0
- {akshare-1.15.5 → akshare-1.15.7}/tests/test_func.py +0 -0
|
@@ -2915,9 +2915,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
|
|
|
2915
2915
|
1.15.3 fix: fix stock_share_change_cninfo interface
|
|
2916
2916
|
1.15.4 fix: fix stock_allotment_cninfo interface
|
|
2917
2917
|
1.15.5 fix: fix stock_individual_spot_xq interface
|
|
2918
|
+
1.15.6 fix: fix qdii_e_index_jsl interface
|
|
2919
|
+
1.15.7 fix: fix index_hist_sw interface
|
|
2918
2920
|
"""
|
|
2919
2921
|
|
|
2920
|
-
__version__ = "1.15.
|
|
2922
|
+
__version__ = "1.15.7"
|
|
2921
2923
|
__author__ = "AKFamily"
|
|
2922
2924
|
|
|
2923
2925
|
import sys
|
|
@@ -5381,6 +5383,18 @@ from akshare.fund.fund_xq import (
|
|
|
5381
5383
|
fund_individual_detail_hold_xq,
|
|
5382
5384
|
)
|
|
5383
5385
|
|
|
5386
|
+
"""
|
|
5387
|
+
异常处理模块
|
|
5388
|
+
"""
|
|
5389
|
+
from .exceptions import (
|
|
5390
|
+
AkshareException,
|
|
5391
|
+
APIError,
|
|
5392
|
+
DataParsingError,
|
|
5393
|
+
InvalidParameterError,
|
|
5394
|
+
NetworkError,
|
|
5395
|
+
RateLimitError,
|
|
5396
|
+
)
|
|
5397
|
+
|
|
5384
5398
|
"""
|
|
5385
5399
|
Pro API 设置
|
|
5386
5400
|
"""
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""
|
|
2
|
+
AKShare 异常处理模块
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class AkshareException(Exception):
|
|
7
|
+
"""Base exception for akshare library"""
|
|
8
|
+
|
|
9
|
+
def __init__(self, message):
|
|
10
|
+
self.message = message
|
|
11
|
+
super().__init__(self.message)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class APIError(AkshareException):
|
|
15
|
+
"""Raised when API request fails"""
|
|
16
|
+
|
|
17
|
+
def __init__(self, message, status_code=None):
|
|
18
|
+
self.status_code = status_code
|
|
19
|
+
super().__init__(f"API Error: {message} (Status code: {status_code})")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class DataParsingError(AkshareException):
|
|
23
|
+
"""Raised when data parsing fails"""
|
|
24
|
+
|
|
25
|
+
pass
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class InvalidParameterError(AkshareException):
|
|
29
|
+
"""Raised when an invalid parameter is provided"""
|
|
30
|
+
|
|
31
|
+
pass
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class NetworkError(AkshareException):
|
|
35
|
+
"""Raised when network-related issues occur"""
|
|
36
|
+
|
|
37
|
+
pass
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class RateLimitError(AkshareException):
|
|
41
|
+
"""Raised when API rate limit is exceeded"""
|
|
42
|
+
|
|
43
|
+
pass
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2024/
|
|
4
|
+
Date: 2024/10/23 13:00
|
|
5
5
|
Desc: 申万宏源研究-指数系列
|
|
6
|
-
https://www.
|
|
6
|
+
https://www.swsresearch.com/institute_sw/allIndex/releasedIndex
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import math
|
|
@@ -17,7 +17,7 @@ from akshare.utils.tqdm import get_tqdm
|
|
|
17
17
|
def index_hist_sw(symbol: str = "801030", period: str = "day") -> pd.DataFrame:
|
|
18
18
|
"""
|
|
19
19
|
申万宏源研究-指数发布-指数详情-指数历史数据
|
|
20
|
-
https://www.
|
|
20
|
+
https://www.swsresearch.com/institute_sw/allIndex/releasedIndex/releasedetail?code=801001&name=%E7%94%B3%E4%B8%8750
|
|
21
21
|
:param symbol: 指数代码
|
|
22
22
|
:type symbol: str
|
|
23
23
|
:param period: choice of {"day", "week", "month"}
|
|
@@ -30,7 +30,7 @@ def index_hist_sw(symbol: str = "801030", period: str = "day") -> pd.DataFrame:
|
|
|
30
30
|
"week": "WEEK",
|
|
31
31
|
"month": "MONTH",
|
|
32
32
|
}
|
|
33
|
-
url = "https://www.
|
|
33
|
+
url = "https://www.swsresearch.com/institute-sw/api/index_publish/trend/"
|
|
34
34
|
params = {
|
|
35
35
|
"swindexcode": symbol,
|
|
36
36
|
"period": period_map[period],
|
|
@@ -81,14 +81,14 @@ def index_hist_sw(symbol: str = "801030", period: str = "day") -> pd.DataFrame:
|
|
|
81
81
|
def index_min_sw(symbol: str = "801001") -> pd.DataFrame:
|
|
82
82
|
"""
|
|
83
83
|
申万宏源研究-指数发布-指数详情-指数分时数据
|
|
84
|
-
https://www.
|
|
84
|
+
https://www.swsresearch.com/institute_sw/allIndex/releasedIndex/releasedetail?code=801001&name=%E7%94%B3%E4%B8%8750
|
|
85
85
|
:param symbol: 指数代码
|
|
86
86
|
:type symbol: str
|
|
87
87
|
:return: 指数分时数据
|
|
88
88
|
:rtype: pandas.DataFrame
|
|
89
89
|
"""
|
|
90
90
|
url = (
|
|
91
|
-
"https://www.
|
|
91
|
+
"https://www.swsresearch.com/institute-sw/api/index_publish/details/timelines/"
|
|
92
92
|
)
|
|
93
93
|
params = {
|
|
94
94
|
"swindexcode": symbol,
|
|
@@ -127,13 +127,13 @@ def index_min_sw(symbol: str = "801001") -> pd.DataFrame:
|
|
|
127
127
|
def index_component_sw(symbol: str = "801001") -> pd.DataFrame:
|
|
128
128
|
"""
|
|
129
129
|
申万宏源研究-指数发布-指数详情-成分股
|
|
130
|
-
https://www.
|
|
130
|
+
https://www.swsresearch.com/institute_sw/allIndex/releasedIndex/releasedetail?code=801001&name=%E7%94%B3%E4%B8%8750
|
|
131
131
|
:param symbol: 指数代码
|
|
132
132
|
:type symbol: str
|
|
133
133
|
:return: 成分股
|
|
134
134
|
:rtype: pandas.DataFrame
|
|
135
135
|
"""
|
|
136
|
-
url = "https://www.
|
|
136
|
+
url = "https://www.swsresearch.com/institute-sw/api/index_publish/details/component_stocks/"
|
|
137
137
|
params = {"swindexcode": symbol, "page": "1", "page_size": "10000"}
|
|
138
138
|
headers = {
|
|
139
139
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
@@ -221,7 +221,7 @@ def __index_realtime_sw(symbol: str = "大类风格指数") -> pd.DataFrame:
|
|
|
221
221
|
def index_realtime_sw(symbol: str = "二级行业") -> pd.DataFrame:
|
|
222
222
|
"""
|
|
223
223
|
申万宏源研究-指数系列
|
|
224
|
-
https://www.
|
|
224
|
+
https://www.swsresearch.com/institute_sw/allIndex/releasedIndex
|
|
225
225
|
:param symbol: choice of {"市场表征", "一级行业", "二级行业", "风格指数", "大类风格指数", "金创指数"}
|
|
226
226
|
:type symbol: str
|
|
227
227
|
:return: 指数系列实时行情数据
|
|
@@ -230,7 +230,7 @@ def index_realtime_sw(symbol: str = "二级行业") -> pd.DataFrame:
|
|
|
230
230
|
if symbol in {"大类风格指数", "金创指数"}:
|
|
231
231
|
temp_df = __index_realtime_sw(symbol)
|
|
232
232
|
return temp_df
|
|
233
|
-
url = "https://www.
|
|
233
|
+
url = "https://www.swsresearch.com/institute-sw/api/index_publish/current/"
|
|
234
234
|
params = {"page": "1", "page_size": "50", "indextype": symbol}
|
|
235
235
|
headers = {
|
|
236
236
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
@@ -289,7 +289,7 @@ def index_analysis_daily_sw(
|
|
|
289
289
|
) -> pd.DataFrame:
|
|
290
290
|
"""
|
|
291
291
|
申万宏源研究-指数分析
|
|
292
|
-
https://www.
|
|
292
|
+
https://www.swsresearch.com/institute_sw/allIndex/analysisIndex
|
|
293
293
|
:param symbol: choice of {"市场表征", "一级行业", "二级行业", "风格指数"}
|
|
294
294
|
:type symbol: str
|
|
295
295
|
:param start_date: 开始日期
|
|
@@ -299,7 +299,7 @@ def index_analysis_daily_sw(
|
|
|
299
299
|
:return: 指数分析
|
|
300
300
|
:rtype: pandas.DataFrame
|
|
301
301
|
"""
|
|
302
|
-
url = "https://www.
|
|
302
|
+
url = "https://www.swsresearch.com/institute-sw/api/index_analysis/index_analysis_report/"
|
|
303
303
|
params = {
|
|
304
304
|
"page": "1",
|
|
305
305
|
"page_size": "50",
|
|
@@ -363,13 +363,13 @@ def index_analysis_daily_sw(
|
|
|
363
363
|
def index_analysis_week_month_sw(symbol: str = "month") -> pd.DataFrame:
|
|
364
364
|
"""
|
|
365
365
|
申万宏源研究-周/月报表-日期序列
|
|
366
|
-
https://www.
|
|
366
|
+
https://www.swsresearch.com/institute_sw/allIndex/analysisIndex
|
|
367
367
|
:param symbol: choice of {"week", "month"}
|
|
368
368
|
:type symbol: str
|
|
369
369
|
:return: 日期序列
|
|
370
370
|
:rtype: pandas.DataFrame
|
|
371
371
|
"""
|
|
372
|
-
url = "https://www.
|
|
372
|
+
url = "https://www.swsresearch.com/institute-sw/api/index_analysis/week_month_datetime/"
|
|
373
373
|
params = {"type": symbol.upper()}
|
|
374
374
|
headers = {
|
|
375
375
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
@@ -392,7 +392,7 @@ def index_analysis_weekly_sw(
|
|
|
392
392
|
) -> pd.DataFrame:
|
|
393
393
|
"""
|
|
394
394
|
申万宏源研究-指数分析-周报告
|
|
395
|
-
https://www.
|
|
395
|
+
https://www.swsresearch.com/institute_sw/allIndex/analysisIndex
|
|
396
396
|
:param symbol: choice of {"市场表征", "一级行业", "二级行业", "风格指数"}
|
|
397
397
|
:type symbol: str
|
|
398
398
|
:param date: 查询日期; 通过调用 ak.index_analysis_week_month_sw(date="20221104") 接口获取
|
|
@@ -400,7 +400,7 @@ def index_analysis_weekly_sw(
|
|
|
400
400
|
:return: 指数分析
|
|
401
401
|
:rtype: pandas.DataFrame
|
|
402
402
|
"""
|
|
403
|
-
url = "https://www.
|
|
403
|
+
url = "https://www.swsresearch.com/institute-sw/api/index_analysis/index_analysis_reports/"
|
|
404
404
|
params = {
|
|
405
405
|
"page": "1",
|
|
406
406
|
"page_size": "50",
|
|
@@ -467,7 +467,7 @@ def index_analysis_monthly_sw(
|
|
|
467
467
|
) -> pd.DataFrame:
|
|
468
468
|
"""
|
|
469
469
|
申万宏源研究-指数分析-月报告
|
|
470
|
-
https://www.
|
|
470
|
+
https://www.swsresearch.com/institute_sw/allIndex/analysisIndex
|
|
471
471
|
:param symbol: choice of {"市场表征", "一级行业", "二级行业", "风格指数"}
|
|
472
472
|
:type symbol: str
|
|
473
473
|
:param date: 查询日期; 通过调用 ak.index_analysis_week_month_sw() 接口获取
|
|
@@ -475,7 +475,7 @@ def index_analysis_monthly_sw(
|
|
|
475
475
|
:return: 指数分析
|
|
476
476
|
:rtype: pandas.DataFrame
|
|
477
477
|
"""
|
|
478
|
-
url = "https://www.
|
|
478
|
+
url = "https://www.swsresearch.com/institute-sw/api/index_analysis/index_analysis_reports/"
|
|
479
479
|
params = {
|
|
480
480
|
"page": "1",
|
|
481
481
|
"page_size": "50",
|
|
@@ -7,7 +7,8 @@ Desc: 集思录-T+0 QDII
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import pandas as pd
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
from akshare.request import make_request_with_retry_json
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
def qdii_e_index_jsl() -> pd.DataFrame:
|
|
@@ -22,8 +23,7 @@ def qdii_e_index_jsl() -> pd.DataFrame:
|
|
|
22
23
|
"___jsl": "LST___t=1728207798534",
|
|
23
24
|
"rp": "22",
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
-
data_json = r.json()
|
|
26
|
+
data_json = make_request_with_retry_json(url, params)
|
|
27
27
|
temp_df = pd.DataFrame([item["cell"] for item in data_json["rows"]])
|
|
28
28
|
temp_df.rename(
|
|
29
29
|
columns={
|
|
@@ -94,8 +94,7 @@ def qdii_e_comm_jsl() -> pd.DataFrame:
|
|
|
94
94
|
"___jsl": "LST___t=1728207798534",
|
|
95
95
|
"rp": "22",
|
|
96
96
|
}
|
|
97
|
-
|
|
98
|
-
data_json = r.json()
|
|
97
|
+
data_json = make_request_with_retry_json(url, params=params)
|
|
99
98
|
temp_df = pd.DataFrame([item["cell"] for item in data_json["rows"]])
|
|
100
99
|
temp_df.rename(
|
|
101
100
|
columns={
|
|
@@ -166,8 +165,7 @@ def qdii_a_index_jsl() -> pd.DataFrame:
|
|
|
166
165
|
"___jsl": "LST___t=1728206439242",
|
|
167
166
|
"rp": "22",
|
|
168
167
|
}
|
|
169
|
-
|
|
170
|
-
data_json = r.json()
|
|
168
|
+
data_json = make_request_with_retry_json(url, params=params)
|
|
171
169
|
temp_df = pd.DataFrame([item["cell"] for item in data_json["rows"]])
|
|
172
170
|
temp_df.rename(
|
|
173
171
|
columns={
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import time
|
|
2
|
+
|
|
3
|
+
import requests
|
|
4
|
+
from requests.exceptions import RequestException
|
|
5
|
+
|
|
6
|
+
from akshare.exceptions import NetworkError, APIError, RateLimitError, DataParsingError
|
|
7
|
+
from akshare.utils.context import config
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def make_request_with_retry_json(
|
|
11
|
+
url, params=None, headers=None, proxies=None, max_retries=3, retry_delay=1
|
|
12
|
+
):
|
|
13
|
+
"""
|
|
14
|
+
发送 HTTP GET 请求,支持重试机制和代理设置。
|
|
15
|
+
|
|
16
|
+
:param url: 请求的 URL
|
|
17
|
+
:param params: URL 参数 (可选)
|
|
18
|
+
:param headers: 请求头 (可选)
|
|
19
|
+
:param proxies: 代理设置 (可选)
|
|
20
|
+
:param max_retries: 最大重试次数
|
|
21
|
+
:param retry_delay: 初始重试延迟(秒)
|
|
22
|
+
:return: 解析后的 JSON 数据
|
|
23
|
+
"""
|
|
24
|
+
if proxies is None:
|
|
25
|
+
proxies = config.proxies
|
|
26
|
+
for attempt in range(max_retries):
|
|
27
|
+
try:
|
|
28
|
+
response = requests.get(
|
|
29
|
+
url, params=params, headers=headers, proxies=proxies
|
|
30
|
+
)
|
|
31
|
+
if response.status_code == 200:
|
|
32
|
+
try:
|
|
33
|
+
data = response.json()
|
|
34
|
+
if not data:
|
|
35
|
+
raise DataParsingError("Empty response data")
|
|
36
|
+
return data
|
|
37
|
+
except ValueError:
|
|
38
|
+
raise DataParsingError("Failed to parse JSON response")
|
|
39
|
+
elif response.status_code == 429:
|
|
40
|
+
raise RateLimitError(
|
|
41
|
+
f"Rate limit exceeded. Status code: {response.status_code}"
|
|
42
|
+
)
|
|
43
|
+
else:
|
|
44
|
+
raise APIError(
|
|
45
|
+
f"API request failed. Status code: {response.status_code}"
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
except (RequestException, RateLimitError, APIError, DataParsingError) as e:
|
|
49
|
+
if attempt == max_retries - 1:
|
|
50
|
+
if isinstance(e, RateLimitError):
|
|
51
|
+
raise
|
|
52
|
+
elif isinstance(e, (APIError, DataParsingError)):
|
|
53
|
+
raise
|
|
54
|
+
else:
|
|
55
|
+
raise NetworkError(
|
|
56
|
+
f"Failed to connect after {max_retries} attempts: {str(e)}"
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
time.sleep(retry_delay)
|
|
60
|
+
retry_delay *= 2 # 指数退避策略
|
|
61
|
+
|
|
62
|
+
raise NetworkError(f"Failed to connect after {max_retries} attempts")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def make_request_with_retry_text(
|
|
66
|
+
url, params=None, headers=None, proxies=None, max_retries=3, retry_delay=1
|
|
67
|
+
):
|
|
68
|
+
"""
|
|
69
|
+
发送 HTTP GET 请求,支持重试机制和代理设置。
|
|
70
|
+
|
|
71
|
+
:param url: 请求的 URL
|
|
72
|
+
:param params: URL 参数 (可选)
|
|
73
|
+
:param headers: 请求头 (可选)
|
|
74
|
+
:param proxies: 代理设置 (可选)
|
|
75
|
+
:param max_retries: 最大重试次数
|
|
76
|
+
:param retry_delay: 初始重试延迟(秒)
|
|
77
|
+
:return: 解析后的 JSON 数据
|
|
78
|
+
"""
|
|
79
|
+
if proxies is None:
|
|
80
|
+
proxies = config.proxies
|
|
81
|
+
for attempt in range(max_retries):
|
|
82
|
+
try:
|
|
83
|
+
response = requests.get(
|
|
84
|
+
url, params=params, headers=headers, proxies=proxies
|
|
85
|
+
)
|
|
86
|
+
if response.status_code == 200:
|
|
87
|
+
try:
|
|
88
|
+
data = response.text
|
|
89
|
+
if not data:
|
|
90
|
+
raise DataParsingError("Empty response data")
|
|
91
|
+
return data
|
|
92
|
+
except ValueError:
|
|
93
|
+
raise DataParsingError("Failed to parse JSON response")
|
|
94
|
+
elif response.status_code == 429:
|
|
95
|
+
raise RateLimitError(
|
|
96
|
+
f"Rate limit exceeded. Status code: {response.status_code}"
|
|
97
|
+
)
|
|
98
|
+
else:
|
|
99
|
+
raise APIError(
|
|
100
|
+
f"API request failed. Status code: {response.status_code}"
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
except (RequestException, RateLimitError, APIError, DataParsingError) as e:
|
|
104
|
+
if attempt == max_retries - 1:
|
|
105
|
+
if isinstance(e, RateLimitError):
|
|
106
|
+
raise
|
|
107
|
+
elif isinstance(e, (APIError, DataParsingError)):
|
|
108
|
+
raise
|
|
109
|
+
else:
|
|
110
|
+
raise NetworkError(
|
|
111
|
+
f"Failed to connect after {max_retries} attempts: {str(e)}"
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
time.sleep(retry_delay)
|
|
115
|
+
retry_delay *= 2 # 指数退避策略
|
|
116
|
+
|
|
117
|
+
raise NetworkError(f"Failed to connect after {max_retries} attempts")
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
class AkshareConfig:
|
|
2
|
+
_instance = None
|
|
3
|
+
|
|
4
|
+
def __new__(cls):
|
|
5
|
+
if cls._instance is None:
|
|
6
|
+
cls._instance = super().__new__(cls)
|
|
7
|
+
cls._instance.proxies = None
|
|
8
|
+
return cls._instance
|
|
9
|
+
|
|
10
|
+
@classmethod
|
|
11
|
+
def set_proxies(cls, proxies):
|
|
12
|
+
cls().proxies = proxies
|
|
13
|
+
|
|
14
|
+
@classmethod
|
|
15
|
+
def get_proxies(cls):
|
|
16
|
+
return cls().proxies
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
config = AkshareConfig()
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# 导出 set_proxies 函数
|
|
23
|
+
def set_proxies(proxies):
|
|
24
|
+
config.set_proxies(proxies)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def get_proxies():
|
|
28
|
+
return config.get_proxies()
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class ProxyContext:
|
|
32
|
+
def __init__(self, proxies):
|
|
33
|
+
self.proxies = proxies
|
|
34
|
+
self.old_proxies = None
|
|
35
|
+
|
|
36
|
+
def __enter__(self):
|
|
37
|
+
self.old_proxies = config.get_proxies()
|
|
38
|
+
config.set_proxies(self.proxies)
|
|
39
|
+
return self
|
|
40
|
+
|
|
41
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
42
|
+
config.set_proxies(self.old_proxies)
|
|
43
|
+
return False # 不处理异常
|
|
@@ -4,6 +4,8 @@ pyproject.toml
|
|
|
4
4
|
setup.py
|
|
5
5
|
akshare/__init__.py
|
|
6
6
|
akshare/datasets.py
|
|
7
|
+
akshare/exceptions.py
|
|
8
|
+
akshare/request.py
|
|
7
9
|
akshare.egg-info/PKG-INFO
|
|
8
10
|
akshare.egg-info/SOURCES.txt
|
|
9
11
|
akshare.egg-info/dependency_links.txt
|
|
@@ -381,6 +383,7 @@ akshare/tool/__init__.py
|
|
|
381
383
|
akshare/tool/trade_date_hist.py
|
|
382
384
|
akshare/utils/__init__.py
|
|
383
385
|
akshare/utils/cons.py
|
|
386
|
+
akshare/utils/context.py
|
|
384
387
|
akshare/utils/demjson.py
|
|
385
388
|
akshare/utils/func.py
|
|
386
389
|
akshare/utils/token_process.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|