From 693444511f5721c12b581734a346f4edca179d7b Mon Sep 17 00:00:00 2001 From: foolcage <5533061@qq.com> Date: Wed, 3 Jul 2024 23:33:14 +0800 Subject: [PATCH] 1)Add cbond(Convertible) 2)Improve tag --- api-tests/event/get_stock_event.http | 5 ++ src/zvt/autocode/generator.py | 3 + src/zvt/contract/__init__.py | 4 + src/zvt/domain/actor/__init__.py | 2 + src/zvt/domain/actor/actor_meta.py | 2 + src/zvt/domain/actor/stock_actor.py | 1 + src/zvt/domain/emotion/__init__.py | 2 + src/zvt/domain/emotion/emotion.py | 2 + src/zvt/domain/fundamental/__init__.py | 2 + .../domain/fundamental/dividend_financing.py | 1 + src/zvt/domain/fundamental/finance.py | 1 + src/zvt/domain/fundamental/trading.py | 1 + src/zvt/domain/fundamental/valuation.py | 1 + src/zvt/domain/macro/__init__.py | 2 + src/zvt/domain/macro/macro.py | 2 + src/zvt/domain/macro/monetary.py | 2 + src/zvt/domain/meta/__init__.py | 8 ++ src/zvt/domain/meta/block_meta.py | 2 + src/zvt/domain/meta/cbond_meta.py | 21 +++++ src/zvt/domain/meta/country_meta.py | 2 + src/zvt/domain/meta/currency_meta.py | 2 + src/zvt/domain/meta/etf_meta.py | 2 + src/zvt/domain/meta/fund_meta.py | 2 + src/zvt/domain/meta/future_meta.py | 1 + src/zvt/domain/meta/index_meta.py | 2 + src/zvt/domain/meta/indexus_meta.py | 2 + src/zvt/domain/meta/stock_meta.py | 2 + src/zvt/domain/meta/stockhk_meta.py | 2 + src/zvt/domain/meta/stockus_meta.py | 2 + src/zvt/domain/misc/__init__.py | 2 + src/zvt/domain/misc/holder.py | 1 + src/zvt/domain/misc/money_flow.py | 1 + src/zvt/domain/misc/overall.py | 1 + src/zvt/domain/misc/stock_news.py | 2 + src/zvt/domain/quotes/block/__init__.py | 2 + src/zvt/domain/quotes/block/block_1d_kdata.py | 1 + .../domain/quotes/block/block_1mon_kdata.py | 1 + .../domain/quotes/block/block_1wk_kdata.py | 1 + src/zvt/domain/quotes/currency/__init__.py | 2 + .../quotes/currency/currency_1d_kdata.py | 1 + src/zvt/domain/quotes/etf/__init__.py | 2 + src/zvt/domain/quotes/etf/etf_1d_kdata.py | 1 + src/zvt/domain/quotes/future/__init__.py | 2 + .../domain/quotes/future/future_1d_kdata.py | 1 + src/zvt/domain/quotes/index/__init__.py | 2 + src/zvt/domain/quotes/index/index_1d_kdata.py | 1 + .../domain/quotes/index/index_1wk_kdata.py | 1 + src/zvt/domain/quotes/indexus/__init__.py | 2 + .../domain/quotes/indexus/indexus_1d_kdata.py | 1 + src/zvt/domain/quotes/stock/__init__.py | 2 + .../quotes/stock/stock_15m_hfq_kdata.py | 1 + .../domain/quotes/stock/stock_15m_kdata.py | 1 + .../domain/quotes/stock/stock_1d_hfq_kdata.py | 1 + src/zvt/domain/quotes/stock/stock_1d_kdata.py | 1 + .../domain/quotes/stock/stock_1h_hfq_kdata.py | 1 + src/zvt/domain/quotes/stock/stock_1h_kdata.py | 1 + .../domain/quotes/stock/stock_1m_hfq_kdata.py | 1 + src/zvt/domain/quotes/stock/stock_1m_kdata.py | 1 + .../quotes/stock/stock_1mon_hfq_kdata.py | 1 + .../domain/quotes/stock/stock_1mon_kdata.py | 1 + .../quotes/stock/stock_1wk_hfq_kdata.py | 1 + .../domain/quotes/stock/stock_1wk_kdata.py | 1 + .../quotes/stock/stock_30m_hfq_kdata.py | 1 + .../domain/quotes/stock/stock_30m_kdata.py | 1 + .../domain/quotes/stock/stock_4h_hfq_kdata.py | 1 + src/zvt/domain/quotes/stock/stock_4h_kdata.py | 1 + .../domain/quotes/stock/stock_5m_hfq_kdata.py | 1 + src/zvt/domain/quotes/stock/stock_5m_kdata.py | 1 + src/zvt/domain/quotes/stock/stock_quote.py | 1 + src/zvt/domain/quotes/stockhk/__init__.py | 2 + .../quotes/stockhk/stockhk_1d_hfq_kdata.py | 1 + .../domain/quotes/stockhk/stockhk_1d_kdata.py | 1 + src/zvt/domain/quotes/stockus/__init__.py | 2 + .../quotes/stockus/stockus_1d_hfq_kdata.py | 1 + .../domain/quotes/stockus/stockus_1d_kdata.py | 1 + src/zvt/domain/quotes/trade_day.py | 1 + src/zvt/fill_project.py | 6 +- src/zvt/main.py | 2 +- src/zvt/recorders/__init__.py | 1 + src/zvt/recorders/consts.py | 2 + src/zvt/recorders/eastmoney/__init__.py | 2 + .../eastmoney/dividend_financing/__init__.py | 2 + .../eastmoney_dividend_detail_recorder.py | 2 + .../eastmoney_dividend_financing_recorder.py | 2 + .../eastmoney_rights_issue_detail_recorder.py | 2 + .../eastmoney_spo_detail_recorder.py | 2 + .../recorders/eastmoney/finance/__init__.py | 2 + .../eastmoney_balance_sheet_recorder.py | 2 + .../finance/eastmoney_cash_flow_recorder.py | 2 + .../eastmoney_finance_factor_recorder.py | 2 + .../eastmoney_income_statement_recorder.py | 2 + .../recorders/eastmoney/holder/__init__.py | 3 + .../holder/eastmoney_stock_actor_recorder.py | 2 + .../eastmoney_top_ten_holder_recorder.py | 2 + ...tmoney_top_ten_tradable_holder_recorder.py | 2 + src/zvt/recorders/eastmoney/meta/__init__.py | 2 + .../meta/eastmoney_block_meta_recorder.py | 2 + .../meta/eastmoney_stock_meta_recorder.py | 2 + .../recorders/eastmoney/trading/__init__.py | 2 + .../eastmoney_holder_trading_recorder.py | 2 + .../eastmoney_manager_trading_recorder.py | 2 + src/zvt/recorders/em/__init__.py | 2 + src/zvt/recorders/em/actor/__init__.py | 2 + .../actor/em_stock_actor_summary_recorder.py | 2 + .../em/actor/em_stock_ii_recorder.py | 2 + .../actor/em_stock_top_ten_free_recorder.py | 2 + .../em/actor/em_stock_top_ten_recorder.py | 2 + src/zvt/recorders/em/em_api.py | 14 +++- src/zvt/recorders/em/macro/__init__.py | 2 + .../em/macro/em_treasury_yield_recorder.py | 2 + src/zvt/recorders/em/meta/__init__.py | 8 ++ .../em/meta/em_block_meta_recorder.py | 2 + .../em/meta/em_cbond_meta_recorder.py | 25 ++++++ .../em/meta/em_currency_meta_recorder.py | 2 + .../em/meta/em_future_meta_recorder.py | 2 + .../em/meta/em_index_meta_recorder.py | 2 + .../em/meta/em_indexus_meta_recorder.py | 2 + .../em/meta/em_stock_meta_recorder.py | 2 + .../em/meta/em_stockhk_meta_recorder.py | 2 + .../em/meta/em_stockus_meta_recorder.py | 2 + src/zvt/recorders/em/misc/__init__.py | 2 + .../em/misc/em_stock_news_recorder.py | 2 + src/zvt/recorders/em/quotes/__init__.py | 2 + .../recorders/em/quotes/em_kdata_recorder.py | 2 + src/zvt/recorders/em/trading/__init__.py | 2 + .../trading/em_dragon_and_tiger_recorder.py | 2 + src/zvt/recorders/exchange/__init__.py | 2 + src/zvt/recorders/exchange/api/__init__.py | 2 + .../recorders/exchange/api/cn_index_api.py | 2 + .../exchange/api/cn_index_stock_api.py | 2 + .../recorders/exchange/api/cs_index_api.py | 2 + .../exchange/api/cs_index_stock_api.py | 2 + .../exchange/exchange_etf_meta_recorder.py | 2 + .../exchange/exchange_index_recorder.py | 1 + .../exchange/exchange_index_stock_recorder.py | 2 + .../exchange/exchange_stock_meta_recorder.py | 2 + .../exchange_stock_summary_recorder.py | 2 + src/zvt/recorders/joinquant/__init__.py | 2 + .../joinquant/fundamental/__init__.py | 2 + .../fundamental/jq_etf_valuation_recorder.py | 2 + .../fundamental/jq_margin_trading_recorder.py | 2 + .../jq_stock_valuation_recorder.py | 2 + src/zvt/recorders/joinquant/meta/__init__.py | 2 + .../joinquant/meta/jq_fund_meta_recorder.py | 2 + .../joinquant/meta/jq_stock_meta_recorder.py | 2 + .../joinquant/meta/jq_trade_day_recorder.py | 2 + src/zvt/recorders/joinquant/misc/__init__.py | 2 + .../joinquant/misc/jq_hk_holder_recorder.py | 2 + .../misc/jq_index_money_flow_recorder.py | 2 + .../misc/jq_stock_money_flow_recorder.py | 2 + .../recorders/joinquant/overall/__init__.py | 2 + .../overall/jq_cross_market_recorder.py | 2 + .../overall/jq_margin_trading_recorder.py | 2 + .../overall/jq_stock_summary_recorder.py | 2 + .../recorders/joinquant/quotes/__init__.py | 2 + .../quotes/jq_index_kdata_recorder.py | 2 + .../quotes/jq_stock_kdata_recorder.py | 1 + src/zvt/recorders/jqka/__init__.py | 2 + .../jqka/emotion/JqkaEmotionRecorder.py | 1 + src/zvt/recorders/jqka/emotion/__init__.py | 2 + src/zvt/recorders/jqka/jqka_api.py | 2 + src/zvt/recorders/qmt/__init__.py | 12 +-- src/zvt/recorders/qmt/meta/__init__.py | 14 ++++ .../qmt/meta/qmt_stock_meta_recorder.py | 2 + src/zvt/recorders/qmt/quotes/__init__.py | 2 + .../qmt/quotes/qmt_kdata_recorder.py | 2 + src/zvt/recorders/sina/__init__.py | 2 + src/zvt/recorders/sina/meta/__init__.py | 2 + .../sina/meta/sina_block_recorder.py | 2 + src/zvt/recorders/sina/money_flow/__init__.py | 2 + .../sina_block_money_flow_recorder.py | 2 + .../sina_stock_money_flow_recorder.py | 2 + src/zvt/recorders/sina/quotes/__init__.py | 2 + .../sina/quotes/sina_etf_kdata_recorder.py | 2 + .../sina/quotes/sina_index_kdata_recorder.py | 2 + src/zvt/recorders/wb/__init__.py | 2 + src/zvt/recorders/wb/wb_api.py | 2 + src/zvt/recorders/wb/wb_country_recorder.py | 2 + src/zvt/recorders/wb/wb_economy_recorder.py | 2 + src/zvt/rest/trading.py | 5 +- src/zvt/rest/work.py | 45 ++--------- src/zvt/tag/__init__.py | 2 + src/zvt/tag/common.py | 8 +- src/zvt/tag/tag_models.py | 19 +++-- src/zvt/tag/tag_service.py | 77 ++++++++++++++++++- src/zvt/tag/tag_stats.py | 6 +- src/zvt/tag/tag_utils.py | 3 +- src/zvt/trading/trading_models.py | 2 +- src/zvt/trading/trading_service.py | 9 ++- 189 files changed, 508 insertions(+), 79 deletions(-) create mode 100644 api-tests/event/get_stock_event.http create mode 100644 src/zvt/domain/meta/cbond_meta.py create mode 100644 src/zvt/recorders/em/meta/em_cbond_meta_recorder.py diff --git a/api-tests/event/get_stock_event.http b/api-tests/event/get_stock_event.http new file mode 100644 index 00000000..9c0bcf4f --- /dev/null +++ b/api-tests/event/get_stock_event.http @@ -0,0 +1,5 @@ +GET http://127.0.0.1:8090/api/event/get_stock_event?entity_id=stock_sz_000034 +accept: application/json + + + diff --git a/src/zvt/autocode/generator.py b/src/zvt/autocode/generator.py index 53b6784f..ef85a76e 100644 --- a/src/zvt/autocode/generator.py +++ b/src/zvt/autocode/generator.py @@ -138,6 +138,9 @@ def gen_exports( end_empty_lines_count = end_empty_lines_count + 1 lines = lines[: len(lines) - end_empty_lines_count] + if not lines: + lines.append("# -*- coding: utf-8 -*-#") + lines.append("\n\n") lines.append(gen_flag) lines.append("\n") diff --git a/src/zvt/contract/__init__.py b/src/zvt/contract/__init__.py index 8cd5d7f0..3cd9f856 100644 --- a/src/zvt/contract/__init__.py +++ b/src/zvt/contract/__init__.py @@ -160,6 +160,9 @@ class TradableType(Enum): #: A股(中国) #: China stock stock = "stock" + #: 可转债(中国) + #: China convertible Bond + cbond = "cbond" #: A股指数(中国) #: China index index = "index" @@ -239,6 +242,7 @@ class Exchange(Enum): TradableType.block: [Exchange.cn], TradableType.index: [Exchange.sh, Exchange.sz], TradableType.stock: [Exchange.sh, Exchange.sz, Exchange.bj], + TradableType.cbond: [Exchange.sh, Exchange.sz], TradableType.stockhk: [Exchange.hk], TradableType.stockus: [Exchange.nasdaq, Exchange.nyse], TradableType.indexus: [Exchange.us], diff --git a/src/zvt/domain/actor/__init__.py b/src/zvt/domain/actor/__init__.py index 9a2c7aed..c9d337ae 100644 --- a/src/zvt/domain/actor/__init__.py +++ b/src/zvt/domain/actor/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/actor/actor_meta.py b/src/zvt/domain/actor/actor_meta.py index 160ba907..d89ca653 100644 --- a/src/zvt/domain/actor/actor_meta.py +++ b/src/zvt/domain/actor/actor_meta.py @@ -14,5 +14,7 @@ class ActorMeta(ActorMetaBase, ActorEntity): register_schema(providers=["em"], db_name="actor_meta", schema_base=ActorMetaBase) + + # the __all__ is generated __all__ = ["ActorMeta"] diff --git a/src/zvt/domain/actor/stock_actor.py b/src/zvt/domain/actor/stock_actor.py index 526d84a9..d0a93def 100644 --- a/src/zvt/domain/actor/stock_actor.py +++ b/src/zvt/domain/actor/stock_actor.py @@ -78,5 +78,6 @@ class StockActorSummary(StockActorBase, TradableMeetActor): register_schema(providers=["em"], db_name="stock_actor", schema_base=StockActorBase, entity_type="stock") + # the __all__ is generated __all__ = ["StockTopTenFreeHolder", "StockTopTenHolder", "StockInstitutionalInvestorHolder", "StockActorSummary"] diff --git a/src/zvt/domain/emotion/__init__.py b/src/zvt/domain/emotion/__init__.py index d7225685..f0db3f9d 100644 --- a/src/zvt/domain/emotion/__init__.py +++ b/src/zvt/domain/emotion/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/emotion/emotion.py b/src/zvt/domain/emotion/emotion.py index 42b0fe1b..18688beb 100644 --- a/src/zvt/domain/emotion/emotion.py +++ b/src/zvt/domain/emotion/emotion.py @@ -83,5 +83,7 @@ class Emotion(EmotionBase, Mixin): register_schema(providers=["jqka"], db_name="emotion", schema_base=EmotionBase) + + # the __all__ is generated __all__ = ["LimitUpInfo", "LimitDownInfo", "Emotion"] diff --git a/src/zvt/domain/fundamental/__init__.py b/src/zvt/domain/fundamental/__init__.py index 0fea491d..70afbd39 100644 --- a/src/zvt/domain/fundamental/__init__.py +++ b/src/zvt/domain/fundamental/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/fundamental/dividend_financing.py b/src/zvt/domain/fundamental/dividend_financing.py index 19724741..e54c1fdc 100644 --- a/src/zvt/domain/fundamental/dividend_financing.py +++ b/src/zvt/domain/fundamental/dividend_financing.py @@ -73,5 +73,6 @@ class RightsIssueDetail(DividendFinancingBase, Mixin): providers=["eastmoney"], db_name="dividend_financing", schema_base=DividendFinancingBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["DividendFinancing", "DividendDetail", "SpoDetail", "RightsIssueDetail"] diff --git a/src/zvt/domain/fundamental/finance.py b/src/zvt/domain/fundamental/finance.py index 970fa699..58d51156 100644 --- a/src/zvt/domain/fundamental/finance.py +++ b/src/zvt/domain/fundamental/finance.py @@ -985,5 +985,6 @@ def important_cols(cls): register_schema(providers=["eastmoney"], db_name="finance", schema_base=FinanceBase, entity_type="stock") + # the __all__ is generated __all__ = ["BalanceSheet", "IncomeStatement", "CashFlowStatement", "FinanceFactor"] diff --git a/src/zvt/domain/fundamental/trading.py b/src/zvt/domain/fundamental/trading.py index 6ea19482..94eff5f0 100644 --- a/src/zvt/domain/fundamental/trading.py +++ b/src/zvt/domain/fundamental/trading.py @@ -160,5 +160,6 @@ class DragonAndTiger(TradingBase, Mixin): providers=["em", "eastmoney", "joinquant"], db_name="trading", schema_base=TradingBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["ManagerTrading", "HolderTrading", "BigDealTrading", "MarginTrading", "DragonAndTiger"] diff --git a/src/zvt/domain/fundamental/valuation.py b/src/zvt/domain/fundamental/valuation.py index 2c33d6c3..594ace7e 100644 --- a/src/zvt/domain/fundamental/valuation.py +++ b/src/zvt/domain/fundamental/valuation.py @@ -64,5 +64,6 @@ class EtfValuation(ValuationBase, Mixin): register_schema(providers=["joinquant"], db_name="valuation", schema_base=ValuationBase, entity_type="stock") + # the __all__ is generated __all__ = ["StockValuation", "EtfValuation"] diff --git a/src/zvt/domain/macro/__init__.py b/src/zvt/domain/macro/__init__.py index 96244dbe..4bd907b6 100644 --- a/src/zvt/domain/macro/__init__.py +++ b/src/zvt/domain/macro/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/macro/macro.py b/src/zvt/domain/macro/macro.py index f17b96d7..1a2a7ff2 100644 --- a/src/zvt/domain/macro/macro.py +++ b/src/zvt/domain/macro/macro.py @@ -39,5 +39,7 @@ class Economy(MacroBase, Mixin): register_schema(providers=["wb"], db_name="macro", schema_base=MacroBase) + + # the __all__ is generated __all__ = ["Economy"] diff --git a/src/zvt/domain/macro/monetary.py b/src/zvt/domain/macro/monetary.py index 239a1b10..582c9d37 100644 --- a/src/zvt/domain/macro/monetary.py +++ b/src/zvt/domain/macro/monetary.py @@ -24,5 +24,7 @@ class TreasuryYield(MonetaryBase, Mixin): register_schema(providers=["em"], db_name="monetary", schema_base=MonetaryBase) + + # the __all__ is generated __all__ = ["TreasuryYield"] diff --git a/src/zvt/domain/meta/__init__.py b/src/zvt/domain/meta/__init__.py index 07247273..0c4b1f52 100644 --- a/src/zvt/domain/meta/__init__.py +++ b/src/zvt/domain/meta/__init__.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*-# + # the __all__ is generated __all__ = [] @@ -29,6 +31,12 @@ __all__ += _country_meta_all +# import all from submodule cbond_meta +from .cbond_meta import * +from .cbond_meta import __all__ as _cbond_meta_all + +__all__ += _cbond_meta_all + # import all from submodule index_meta from .index_meta import * from .index_meta import __all__ as _index_meta_all diff --git a/src/zvt/domain/meta/block_meta.py b/src/zvt/domain/meta/block_meta.py index ea3ce9aa..3a1b8a8a 100644 --- a/src/zvt/domain/meta/block_meta.py +++ b/src/zvt/domain/meta/block_meta.py @@ -23,5 +23,7 @@ class BlockStock(BlockMetaBase, PortfolioStock): register_schema(providers=["em", "eastmoney", "sina"], db_name="block_meta", schema_base=BlockMetaBase) + + # the __all__ is generated __all__ = ["Block", "BlockStock"] diff --git a/src/zvt/domain/meta/cbond_meta.py b/src/zvt/domain/meta/cbond_meta.py new file mode 100644 index 00000000..9718bd4e --- /dev/null +++ b/src/zvt/domain/meta/cbond_meta.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- + +from sqlalchemy.orm import declarative_base + +from zvt.contract import TradableEntity +from zvt.contract.register import register_schema, register_entity + +CBondBase = declarative_base() + + +#: 美股 +@register_entity(entity_type="cbond") +class CBond(CBondBase, TradableEntity): + __tablename__ = "cbond" + + +register_schema(providers=["em"], db_name="cbond_meta", schema_base=CBondBase) + + +# the __all__ is generated +__all__ = ["CBond"] diff --git a/src/zvt/domain/meta/country_meta.py b/src/zvt/domain/meta/country_meta.py index 037cd45c..dbd3a9f7 100644 --- a/src/zvt/domain/meta/country_meta.py +++ b/src/zvt/domain/meta/country_meta.py @@ -34,5 +34,7 @@ class Country(CountryMetaBase, TradableEntity): register_schema(providers=["wb"], db_name="country_meta", schema_base=CountryMetaBase) + + # the __all__ is generated __all__ = ["Country"] diff --git a/src/zvt/domain/meta/currency_meta.py b/src/zvt/domain/meta/currency_meta.py index 77580607..94d6bdcc 100644 --- a/src/zvt/domain/meta/currency_meta.py +++ b/src/zvt/domain/meta/currency_meta.py @@ -14,5 +14,7 @@ class Currency(CurrencyMetaBase, TradableEntity): register_schema(providers=["em"], db_name="currency_meta", schema_base=CurrencyMetaBase) + + # the __all__ is generated __all__ = ["Currency"] diff --git a/src/zvt/domain/meta/etf_meta.py b/src/zvt/domain/meta/etf_meta.py index dd21bb82..66d02c0b 100644 --- a/src/zvt/domain/meta/etf_meta.py +++ b/src/zvt/domain/meta/etf_meta.py @@ -28,5 +28,7 @@ class EtfStock(EtfMetaBase, PortfolioStockHistory): register_schema(providers=["exchange", "joinquant"], db_name="etf_meta", schema_base=EtfMetaBase) + + # the __all__ is generated __all__ = ["Etf", "EtfStock"] diff --git a/src/zvt/domain/meta/fund_meta.py b/src/zvt/domain/meta/fund_meta.py index 9fe6f80d..bc213ceb 100644 --- a/src/zvt/domain/meta/fund_meta.py +++ b/src/zvt/domain/meta/fund_meta.py @@ -55,5 +55,7 @@ class FundStock(FundMetaBase, PortfolioStockHistory): register_schema(providers=["joinquant"], db_name="fund_meta", schema_base=FundMetaBase) + + # the __all__ is generated __all__ = ["Fund", "FundStock"] diff --git a/src/zvt/domain/meta/future_meta.py b/src/zvt/domain/meta/future_meta.py index 5d54b644..c77ce9f7 100644 --- a/src/zvt/domain/meta/future_meta.py +++ b/src/zvt/domain/meta/future_meta.py @@ -14,5 +14,6 @@ class Future(FutureMetaBase, TradableEntity): register_schema(providers=["em"], db_name="future_meta", schema_base=FutureMetaBase) + # the __all__ is generated __all__ = ["Future"] diff --git a/src/zvt/domain/meta/index_meta.py b/src/zvt/domain/meta/index_meta.py index 5539f0b8..0cb851d0 100644 --- a/src/zvt/domain/meta/index_meta.py +++ b/src/zvt/domain/meta/index_meta.py @@ -28,5 +28,7 @@ class IndexStock(IndexMetaBase, PortfolioStockHistory): register_schema(providers=["em", "exchange"], db_name="index_meta", schema_base=IndexMetaBase) + + # the __all__ is generated __all__ = ["Index", "IndexStock"] diff --git a/src/zvt/domain/meta/indexus_meta.py b/src/zvt/domain/meta/indexus_meta.py index 59360713..377133fc 100644 --- a/src/zvt/domain/meta/indexus_meta.py +++ b/src/zvt/domain/meta/indexus_meta.py @@ -24,5 +24,7 @@ class Indexus(IndexusMetaBase, Portfolio): register_schema(providers=["em"], db_name="indexus_meta", schema_base=IndexusMetaBase) + + # the __all__ is generated __all__ = ["Indexus"] diff --git a/src/zvt/domain/meta/stock_meta.py b/src/zvt/domain/meta/stock_meta.py index 110a83ee..397f2f32 100644 --- a/src/zvt/domain/meta/stock_meta.py +++ b/src/zvt/domain/meta/stock_meta.py @@ -49,5 +49,7 @@ class StockDetail(StockMetaBase, TradableEntity): register_schema( providers=["exchange", "joinquant", "eastmoney", "em", "qmt"], db_name="stock_meta", schema_base=StockMetaBase ) + + # the __all__ is generated __all__ = ["Stock", "StockDetail"] diff --git a/src/zvt/domain/meta/stockhk_meta.py b/src/zvt/domain/meta/stockhk_meta.py index 23aeb60b..1b44fcd1 100644 --- a/src/zvt/domain/meta/stockhk_meta.py +++ b/src/zvt/domain/meta/stockhk_meta.py @@ -17,5 +17,7 @@ class Stockhk(StockhkMetaBase, TradableEntity): register_schema(providers=["em"], db_name="stockhk_meta", schema_base=StockhkMetaBase) + + # the __all__ is generated __all__ = ["Stockhk"] diff --git a/src/zvt/domain/meta/stockus_meta.py b/src/zvt/domain/meta/stockus_meta.py index d141ab4a..4d2a8a54 100644 --- a/src/zvt/domain/meta/stockus_meta.py +++ b/src/zvt/domain/meta/stockus_meta.py @@ -15,5 +15,7 @@ class Stockus(StockusMetaBase, TradableEntity): register_schema(providers=["em"], db_name="stockus_meta", schema_base=StockusMetaBase) + + # the __all__ is generated __all__ = ["Stockus"] diff --git a/src/zvt/domain/misc/__init__.py b/src/zvt/domain/misc/__init__.py index 4da05788..2a38f73f 100644 --- a/src/zvt/domain/misc/__init__.py +++ b/src/zvt/domain/misc/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/misc/holder.py b/src/zvt/domain/misc/holder.py index e8416920..9b8fc213 100644 --- a/src/zvt/domain/misc/holder.py +++ b/src/zvt/domain/misc/holder.py @@ -95,5 +95,6 @@ class InstitutionalInvestorHolder(HolderBase, Mixin): register_schema(providers=["eastmoney", "joinquant"], db_name="holder", schema_base=HolderBase, entity_type="stock") + # the __all__ is generated __all__ = ["HkHolder", "TopTenTradableHolder", "TopTenHolder", "InstitutionalInvestorHolder"] diff --git a/src/zvt/domain/misc/money_flow.py b/src/zvt/domain/misc/money_flow.py index 3fbc4cd6..e3995c5f 100644 --- a/src/zvt/domain/misc/money_flow.py +++ b/src/zvt/domain/misc/money_flow.py @@ -110,5 +110,6 @@ class IndexMoneyFlow(MoneyFlowBase, Mixin): register_schema(providers=["joinquant", "sina"], db_name="money_flow", schema_base=MoneyFlowBase, entity_type="stock") + # the __all__ is generated __all__ = ["BlockMoneyFlow", "StockMoneyFlow", "IndexMoneyFlow"] diff --git a/src/zvt/domain/misc/overall.py b/src/zvt/domain/misc/overall.py index 0a552582..48da1737 100644 --- a/src/zvt/domain/misc/overall.py +++ b/src/zvt/domain/misc/overall.py @@ -69,5 +69,6 @@ class CrossMarketSummary(OverallBase, Mixin): register_schema(providers=["joinquant", "exchange"], db_name="overall", schema_base=OverallBase, entity_type="stock") + # the __all__ is generated __all__ = ["StockSummary", "MarginTradingSummary", "CrossMarketSummary"] diff --git a/src/zvt/domain/misc/stock_news.py b/src/zvt/domain/misc/stock_news.py index d313677b..41d32587 100644 --- a/src/zvt/domain/misc/stock_news.py +++ b/src/zvt/domain/misc/stock_news.py @@ -24,5 +24,7 @@ class StockNews(NewsBase, Mixin): register_schema(providers=["em"], db_name="stock_news", schema_base=NewsBase, entity_type="stock") + + # the __all__ is generated __all__ = ["StockNews"] diff --git a/src/zvt/domain/quotes/block/__init__.py b/src/zvt/domain/quotes/block/__init__.py index bb60c977..f2338896 100644 --- a/src/zvt/domain/quotes/block/__init__.py +++ b/src/zvt/domain/quotes/block/__init__.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- # this file is generated by gen_kdata_schema function, dont't change it + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/quotes/block/block_1d_kdata.py b/src/zvt/domain/quotes/block/block_1d_kdata.py index 7c8b30ea..b71d473d 100644 --- a/src/zvt/domain/quotes/block/block_1d_kdata.py +++ b/src/zvt/domain/quotes/block/block_1d_kdata.py @@ -14,5 +14,6 @@ class Block1dKdata(KdataBase, BlockKdataCommon): register_schema(providers=["em"], db_name="block_1d_kdata", schema_base=KdataBase, entity_type="block") + # the __all__ is generated __all__ = ["Block1dKdata"] diff --git a/src/zvt/domain/quotes/block/block_1mon_kdata.py b/src/zvt/domain/quotes/block/block_1mon_kdata.py index 431a660f..a9b5f6d7 100644 --- a/src/zvt/domain/quotes/block/block_1mon_kdata.py +++ b/src/zvt/domain/quotes/block/block_1mon_kdata.py @@ -14,5 +14,6 @@ class Block1monKdata(KdataBase, BlockKdataCommon): register_schema(providers=["em"], db_name="block_1mon_kdata", schema_base=KdataBase, entity_type="block") + # the __all__ is generated __all__ = ["Block1monKdata"] diff --git a/src/zvt/domain/quotes/block/block_1wk_kdata.py b/src/zvt/domain/quotes/block/block_1wk_kdata.py index f4c92a55..8ba22873 100644 --- a/src/zvt/domain/quotes/block/block_1wk_kdata.py +++ b/src/zvt/domain/quotes/block/block_1wk_kdata.py @@ -14,5 +14,6 @@ class Block1wkKdata(KdataBase, BlockKdataCommon): register_schema(providers=["em"], db_name="block_1wk_kdata", schema_base=KdataBase, entity_type="block") + # the __all__ is generated __all__ = ["Block1wkKdata"] diff --git a/src/zvt/domain/quotes/currency/__init__.py b/src/zvt/domain/quotes/currency/__init__.py index d559e78f..51b81592 100644 --- a/src/zvt/domain/quotes/currency/__init__.py +++ b/src/zvt/domain/quotes/currency/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/quotes/currency/currency_1d_kdata.py b/src/zvt/domain/quotes/currency/currency_1d_kdata.py index d11b1add..863e88dc 100644 --- a/src/zvt/domain/quotes/currency/currency_1d_kdata.py +++ b/src/zvt/domain/quotes/currency/currency_1d_kdata.py @@ -14,5 +14,6 @@ class Currency1dKdata(KdataBase, CurrencyKdataCommon): register_schema(providers=["em"], db_name="currency_1d_kdata", schema_base=KdataBase, entity_type="currency") + # the __all__ is generated __all__ = ["Currency1dKdata"] diff --git a/src/zvt/domain/quotes/etf/__init__.py b/src/zvt/domain/quotes/etf/__init__.py index 66ba4e40..0740f7ed 100644 --- a/src/zvt/domain/quotes/etf/__init__.py +++ b/src/zvt/domain/quotes/etf/__init__.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- # this file is generated by gen_kdata_schema function, dont't change it + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/quotes/etf/etf_1d_kdata.py b/src/zvt/domain/quotes/etf/etf_1d_kdata.py index f411b07a..0622e6d4 100644 --- a/src/zvt/domain/quotes/etf/etf_1d_kdata.py +++ b/src/zvt/domain/quotes/etf/etf_1d_kdata.py @@ -14,5 +14,6 @@ class Etf1dKdata(KdataBase, EtfKdataCommon): register_schema(providers=["sina"], db_name="etf_1d_kdata", schema_base=KdataBase, entity_type="etf") + # the __all__ is generated __all__ = ["Etf1dKdata"] diff --git a/src/zvt/domain/quotes/future/__init__.py b/src/zvt/domain/quotes/future/__init__.py index 62abacf1..6ac0ca4f 100644 --- a/src/zvt/domain/quotes/future/__init__.py +++ b/src/zvt/domain/quotes/future/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/quotes/future/future_1d_kdata.py b/src/zvt/domain/quotes/future/future_1d_kdata.py index be740524..86760a60 100644 --- a/src/zvt/domain/quotes/future/future_1d_kdata.py +++ b/src/zvt/domain/quotes/future/future_1d_kdata.py @@ -14,5 +14,6 @@ class Future1dKdata(KdataBase, FutureKdataCommon): register_schema(providers=["em"], db_name="future_1d_kdata", schema_base=KdataBase, entity_type="future") + # the __all__ is generated __all__ = ["Future1dKdata"] diff --git a/src/zvt/domain/quotes/index/__init__.py b/src/zvt/domain/quotes/index/__init__.py index a17742c3..fe6a0fe5 100644 --- a/src/zvt/domain/quotes/index/__init__.py +++ b/src/zvt/domain/quotes/index/__init__.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- # this file is generated by gen_kdata_schema function, dont't change it + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/quotes/index/index_1d_kdata.py b/src/zvt/domain/quotes/index/index_1d_kdata.py index c0c06830..4c056e75 100644 --- a/src/zvt/domain/quotes/index/index_1d_kdata.py +++ b/src/zvt/domain/quotes/index/index_1d_kdata.py @@ -14,5 +14,6 @@ class Index1dKdata(KdataBase, IndexKdataCommon): register_schema(providers=["em", "sina"], db_name="index_1d_kdata", schema_base=KdataBase, entity_type="index") + # the __all__ is generated __all__ = ["Index1dKdata"] diff --git a/src/zvt/domain/quotes/index/index_1wk_kdata.py b/src/zvt/domain/quotes/index/index_1wk_kdata.py index b1f6e30b..42819741 100644 --- a/src/zvt/domain/quotes/index/index_1wk_kdata.py +++ b/src/zvt/domain/quotes/index/index_1wk_kdata.py @@ -14,5 +14,6 @@ class Index1wkKdata(KdataBase, IndexKdataCommon): register_schema(providers=["em", "sina"], db_name="index_1wk_kdata", schema_base=KdataBase, entity_type="index") + # the __all__ is generated __all__ = ["Index1wkKdata"] diff --git a/src/zvt/domain/quotes/indexus/__init__.py b/src/zvt/domain/quotes/indexus/__init__.py index 9547b783..5058652e 100644 --- a/src/zvt/domain/quotes/indexus/__init__.py +++ b/src/zvt/domain/quotes/indexus/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/quotes/indexus/indexus_1d_kdata.py b/src/zvt/domain/quotes/indexus/indexus_1d_kdata.py index 9f41e760..9ecef7fb 100644 --- a/src/zvt/domain/quotes/indexus/indexus_1d_kdata.py +++ b/src/zvt/domain/quotes/indexus/indexus_1d_kdata.py @@ -14,5 +14,6 @@ class Indexus1dKdata(KdataBase, IndexusKdataCommon): register_schema(providers=["em"], db_name="indexus_1d_kdata", schema_base=KdataBase, entity_type="indexus") + # the __all__ is generated __all__ = ["Indexus1dKdata"] diff --git a/src/zvt/domain/quotes/stock/__init__.py b/src/zvt/domain/quotes/stock/__init__.py index baabcb24..b6db7468 100644 --- a/src/zvt/domain/quotes/stock/__init__.py +++ b/src/zvt/domain/quotes/stock/__init__.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- # this file is generated by gen_kdata_schema function, dont't change it + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/quotes/stock/stock_15m_hfq_kdata.py b/src/zvt/domain/quotes/stock/stock_15m_hfq_kdata.py index d3ee4624..ca66e7a1 100644 --- a/src/zvt/domain/quotes/stock/stock_15m_hfq_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_15m_hfq_kdata.py @@ -16,5 +16,6 @@ class Stock15mHfqKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_15m_hfq_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock15mHfqKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_15m_kdata.py b/src/zvt/domain/quotes/stock/stock_15m_kdata.py index b1908ce4..770e60cc 100644 --- a/src/zvt/domain/quotes/stock/stock_15m_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_15m_kdata.py @@ -16,5 +16,6 @@ class Stock15mKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_15m_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock15mKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_1d_hfq_kdata.py b/src/zvt/domain/quotes/stock/stock_1d_hfq_kdata.py index 0a233299..108ab52a 100644 --- a/src/zvt/domain/quotes/stock/stock_1d_hfq_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_1d_hfq_kdata.py @@ -16,5 +16,6 @@ class Stock1dHfqKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_1d_hfq_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock1dHfqKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_1d_kdata.py b/src/zvt/domain/quotes/stock/stock_1d_kdata.py index f873edc2..eb46fa83 100644 --- a/src/zvt/domain/quotes/stock/stock_1d_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_1d_kdata.py @@ -16,5 +16,6 @@ class Stock1dKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_1d_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock1dKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_1h_hfq_kdata.py b/src/zvt/domain/quotes/stock/stock_1h_hfq_kdata.py index 931cbe79..b864673b 100644 --- a/src/zvt/domain/quotes/stock/stock_1h_hfq_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_1h_hfq_kdata.py @@ -16,5 +16,6 @@ class Stock1hHfqKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_1h_hfq_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock1hHfqKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_1h_kdata.py b/src/zvt/domain/quotes/stock/stock_1h_kdata.py index 3e129b8a..cdbeacac 100644 --- a/src/zvt/domain/quotes/stock/stock_1h_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_1h_kdata.py @@ -16,5 +16,6 @@ class Stock1hKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_1h_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock1hKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_1m_hfq_kdata.py b/src/zvt/domain/quotes/stock/stock_1m_hfq_kdata.py index 88578b31..c91345ca 100644 --- a/src/zvt/domain/quotes/stock/stock_1m_hfq_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_1m_hfq_kdata.py @@ -16,5 +16,6 @@ class Stock1mHfqKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_1m_hfq_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock1mHfqKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_1m_kdata.py b/src/zvt/domain/quotes/stock/stock_1m_kdata.py index b8459b1c..642f4a0d 100644 --- a/src/zvt/domain/quotes/stock/stock_1m_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_1m_kdata.py @@ -16,5 +16,6 @@ class Stock1mKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_1m_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock1mKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_1mon_hfq_kdata.py b/src/zvt/domain/quotes/stock/stock_1mon_hfq_kdata.py index f98c129e..495bc3a1 100644 --- a/src/zvt/domain/quotes/stock/stock_1mon_hfq_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_1mon_hfq_kdata.py @@ -16,5 +16,6 @@ class Stock1monHfqKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_1mon_hfq_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock1monHfqKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_1mon_kdata.py b/src/zvt/domain/quotes/stock/stock_1mon_kdata.py index bc830cba..0f3f35f3 100644 --- a/src/zvt/domain/quotes/stock/stock_1mon_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_1mon_kdata.py @@ -16,5 +16,6 @@ class Stock1monKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_1mon_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock1monKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_1wk_hfq_kdata.py b/src/zvt/domain/quotes/stock/stock_1wk_hfq_kdata.py index ae14a466..0c3a649f 100644 --- a/src/zvt/domain/quotes/stock/stock_1wk_hfq_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_1wk_hfq_kdata.py @@ -16,5 +16,6 @@ class Stock1wkHfqKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_1wk_hfq_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock1wkHfqKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_1wk_kdata.py b/src/zvt/domain/quotes/stock/stock_1wk_kdata.py index d1b43c31..a6386ef0 100644 --- a/src/zvt/domain/quotes/stock/stock_1wk_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_1wk_kdata.py @@ -16,5 +16,6 @@ class Stock1wkKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_1wk_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock1wkKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_30m_hfq_kdata.py b/src/zvt/domain/quotes/stock/stock_30m_hfq_kdata.py index 3da8d990..09ab4176 100644 --- a/src/zvt/domain/quotes/stock/stock_30m_hfq_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_30m_hfq_kdata.py @@ -16,5 +16,6 @@ class Stock30mHfqKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_30m_hfq_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock30mHfqKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_30m_kdata.py b/src/zvt/domain/quotes/stock/stock_30m_kdata.py index afc748d7..a75ffe7f 100644 --- a/src/zvt/domain/quotes/stock/stock_30m_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_30m_kdata.py @@ -16,5 +16,6 @@ class Stock30mKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_30m_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock30mKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_4h_hfq_kdata.py b/src/zvt/domain/quotes/stock/stock_4h_hfq_kdata.py index 0368cf53..0f017c16 100644 --- a/src/zvt/domain/quotes/stock/stock_4h_hfq_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_4h_hfq_kdata.py @@ -16,5 +16,6 @@ class Stock4hHfqKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_4h_hfq_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock4hHfqKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_4h_kdata.py b/src/zvt/domain/quotes/stock/stock_4h_kdata.py index eba00d1c..7ca9c022 100644 --- a/src/zvt/domain/quotes/stock/stock_4h_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_4h_kdata.py @@ -16,5 +16,6 @@ class Stock4hKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_4h_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock4hKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_5m_hfq_kdata.py b/src/zvt/domain/quotes/stock/stock_5m_hfq_kdata.py index 5cdce9e4..e935faa3 100644 --- a/src/zvt/domain/quotes/stock/stock_5m_hfq_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_5m_hfq_kdata.py @@ -16,5 +16,6 @@ class Stock5mHfqKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_5m_hfq_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock5mHfqKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_5m_kdata.py b/src/zvt/domain/quotes/stock/stock_5m_kdata.py index c7d13f77..a4717bab 100644 --- a/src/zvt/domain/quotes/stock/stock_5m_kdata.py +++ b/src/zvt/domain/quotes/stock/stock_5m_kdata.py @@ -16,5 +16,6 @@ class Stock5mKdata(KdataBase, StockKdataCommon): providers=["em", "qmt", "joinquant"], db_name="stock_5m_kdata", schema_base=KdataBase, entity_type="stock" ) + # the __all__ is generated __all__ = ["Stock5mKdata"] diff --git a/src/zvt/domain/quotes/stock/stock_quote.py b/src/zvt/domain/quotes/stock/stock_quote.py index 99165977..87a49f7e 100644 --- a/src/zvt/domain/quotes/stock/stock_quote.py +++ b/src/zvt/domain/quotes/stock/stock_quote.py @@ -43,5 +43,6 @@ class StockQuote(StockQuoteBase, Mixin): register_schema(providers=["qmt"], db_name="stock_quote", schema_base=StockQuoteBase, entity_type="stock") + # the __all__ is generated __all__ = ["StockQuote"] diff --git a/src/zvt/domain/quotes/stockhk/__init__.py b/src/zvt/domain/quotes/stockhk/__init__.py index a2842bda..546d88d0 100644 --- a/src/zvt/domain/quotes/stockhk/__init__.py +++ b/src/zvt/domain/quotes/stockhk/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/quotes/stockhk/stockhk_1d_hfq_kdata.py b/src/zvt/domain/quotes/stockhk/stockhk_1d_hfq_kdata.py index 30d0a13e..35b4bfdf 100644 --- a/src/zvt/domain/quotes/stockhk/stockhk_1d_hfq_kdata.py +++ b/src/zvt/domain/quotes/stockhk/stockhk_1d_hfq_kdata.py @@ -14,5 +14,6 @@ class Stockhk1dHfqKdata(KdataBase, StockhkKdataCommon): register_schema(providers=["em"], db_name="stockhk_1d_hfq_kdata", schema_base=KdataBase, entity_type="stockhk") + # the __all__ is generated __all__ = ["Stockhk1dHfqKdata"] diff --git a/src/zvt/domain/quotes/stockhk/stockhk_1d_kdata.py b/src/zvt/domain/quotes/stockhk/stockhk_1d_kdata.py index 7ba687c9..b056a503 100644 --- a/src/zvt/domain/quotes/stockhk/stockhk_1d_kdata.py +++ b/src/zvt/domain/quotes/stockhk/stockhk_1d_kdata.py @@ -14,5 +14,6 @@ class Stockhk1dKdata(KdataBase, StockhkKdataCommon): register_schema(providers=["em"], db_name="stockhk_1d_kdata", schema_base=KdataBase, entity_type="stockhk") + # the __all__ is generated __all__ = ["Stockhk1dKdata"] diff --git a/src/zvt/domain/quotes/stockus/__init__.py b/src/zvt/domain/quotes/stockus/__init__.py index c6c8190b..72c8855b 100644 --- a/src/zvt/domain/quotes/stockus/__init__.py +++ b/src/zvt/domain/quotes/stockus/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/domain/quotes/stockus/stockus_1d_hfq_kdata.py b/src/zvt/domain/quotes/stockus/stockus_1d_hfq_kdata.py index 408c822e..90980435 100644 --- a/src/zvt/domain/quotes/stockus/stockus_1d_hfq_kdata.py +++ b/src/zvt/domain/quotes/stockus/stockus_1d_hfq_kdata.py @@ -14,5 +14,6 @@ class Stockus1dHfqKdata(KdataBase, StockusKdataCommon): register_schema(providers=["em"], db_name="stockus_1d_hfq_kdata", schema_base=KdataBase, entity_type="stockus") + # the __all__ is generated __all__ = ["Stockus1dHfqKdata"] diff --git a/src/zvt/domain/quotes/stockus/stockus_1d_kdata.py b/src/zvt/domain/quotes/stockus/stockus_1d_kdata.py index e7c0c75e..16c43731 100644 --- a/src/zvt/domain/quotes/stockus/stockus_1d_kdata.py +++ b/src/zvt/domain/quotes/stockus/stockus_1d_kdata.py @@ -14,5 +14,6 @@ class Stockus1dKdata(KdataBase, StockusKdataCommon): register_schema(providers=["em"], db_name="stockus_1d_kdata", schema_base=KdataBase, entity_type="stockus") + # the __all__ is generated __all__ = ["Stockus1dKdata"] diff --git a/src/zvt/domain/quotes/trade_day.py b/src/zvt/domain/quotes/trade_day.py index ea2adf8b..fa3607e7 100644 --- a/src/zvt/domain/quotes/trade_day.py +++ b/src/zvt/domain/quotes/trade_day.py @@ -13,5 +13,6 @@ class StockTradeDay(TradeDayBase, Mixin): register_schema(providers=["joinquant"], db_name="trade_day", schema_base=TradeDayBase) + # the __all__ is generated __all__ = ["StockTradeDay"] diff --git a/src/zvt/fill_project.py b/src/zvt/fill_project.py index 01ea03fb..64b6e273 100644 --- a/src/zvt/fill_project.py +++ b/src/zvt/fill_project.py @@ -91,8 +91,8 @@ def gen_kdata_schemas(): # gen_exports("broker") # gen_exports("common") # gen_exports("contract", export_from_package=True, export_modules=["schema"]) - # gen_exports("tag") - gen_exports("factors", export_from_package=True) + # gen_exports("domain", export_from_package=True) + # gen_exports("factors", export_from_package=True) # gen_exports("trading") # gen_exports("ml") @@ -101,6 +101,6 @@ def gen_kdata_schemas(): # gen_exports('trader') # gen_exports('autocode') # gen_exports("zhdate") - # gen_exports("recorders") + gen_exports("recorders", export_from_package=True) # gen_kdata_schemas() # zip_dir(ZVT_TEST_DATA_PATH, zip_file_name=DATA_SAMPLE_ZIP_PATH) diff --git a/src/zvt/main.py b/src/zvt/main.py index 468f05a2..d2d092e2 100644 --- a/src/zvt/main.py +++ b/src/zvt/main.py @@ -36,7 +36,7 @@ def tab_content(active_tab): def main(): # init_plugins() - zvt_app.run_server(debug=True) + zvt_app.run_server(debug=True, host="0.0.0.0") # zvt_app.run_server() diff --git a/src/zvt/recorders/__init__.py b/src/zvt/recorders/__init__.py index 0402dd96..61aba9b0 100644 --- a/src/zvt/recorders/__init__.py +++ b/src/zvt/recorders/__init__.py @@ -65,6 +65,7 @@ def init_main_index(provider="exchange"): init_main_index(provider="exchange") + # the __all__ is generated __all__ = ["init_main_index"] diff --git a/src/zvt/recorders/consts.py b/src/zvt/recorders/consts.py index 46ae8028..b39b3c28 100644 --- a/src/zvt/recorders/consts.py +++ b/src/zvt/recorders/consts.py @@ -147,5 +147,7 @@ User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36 """ ) + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/eastmoney/__init__.py b/src/zvt/recorders/eastmoney/__init__.py index a47ad474..eb810d0f 100644 --- a/src/zvt/recorders/eastmoney/__init__.py +++ b/src/zvt/recorders/eastmoney/__init__.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*-# + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/eastmoney/dividend_financing/__init__.py b/src/zvt/recorders/eastmoney/dividend_financing/__init__.py index 608aa9ec..fc6e9c6a 100644 --- a/src/zvt/recorders/eastmoney/dividend_financing/__init__.py +++ b/src/zvt/recorders/eastmoney/dividend_financing/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_dividend_detail_recorder.py b/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_dividend_detail_recorder.py index 8c969c93..3ede9dc3 100644 --- a/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_dividend_detail_recorder.py +++ b/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_dividend_detail_recorder.py @@ -32,5 +32,7 @@ def get_data_map(self): recorder = DividendDetailRecorder(codes=["601318"]) recorder.run() + + # the __all__ is generated __all__ = ["DividendDetailRecorder"] diff --git a/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_dividend_financing_recorder.py b/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_dividend_financing_recorder.py index b2739c4b..f46b8d11 100644 --- a/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_dividend_financing_recorder.py +++ b/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_dividend_financing_recorder.py @@ -55,5 +55,7 @@ def on_finish(self): recorder = DividendFinancingRecorder(codes=["000999"]) recorder.run() + + # the __all__ is generated __all__ = ["DividendFinancingRecorder"] diff --git a/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_rights_issue_detail_recorder.py b/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_rights_issue_detail_recorder.py index 14dedd00..d5b35d3c 100644 --- a/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_rights_issue_detail_recorder.py +++ b/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_rights_issue_detail_recorder.py @@ -56,5 +56,7 @@ def on_finish(self): recorder = RightsIssueDetailRecorder(codes=SAMPLE_STOCK_CODES) recorder.run() + + # the __all__ is generated __all__ = ["RightsIssueDetailRecorder"] diff --git a/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_spo_detail_recorder.py b/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_spo_detail_recorder.py index 3b4736f0..939c80b8 100644 --- a/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_spo_detail_recorder.py +++ b/src/zvt/recorders/eastmoney/dividend_financing/eastmoney_spo_detail_recorder.py @@ -54,5 +54,7 @@ def on_finish(self): recorder = SPODetailRecorder(codes=["000999"]) recorder.run() + + # the __all__ is generated __all__ = ["SPODetailRecorder"] diff --git a/src/zvt/recorders/eastmoney/finance/__init__.py b/src/zvt/recorders/eastmoney/finance/__init__.py index de2a29c3..e3cdffcf 100644 --- a/src/zvt/recorders/eastmoney/finance/__init__.py +++ b/src/zvt/recorders/eastmoney/finance/__init__.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*-# + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/eastmoney/finance/eastmoney_balance_sheet_recorder.py b/src/zvt/recorders/eastmoney/finance/eastmoney_balance_sheet_recorder.py index faba6d78..a58e039c 100644 --- a/src/zvt/recorders/eastmoney/finance/eastmoney_balance_sheet_recorder.py +++ b/src/zvt/recorders/eastmoney/finance/eastmoney_balance_sheet_recorder.py @@ -445,5 +445,7 @@ def get_data_map(self): # init_log('blance_sheet.log') recorder = ChinaStockBalanceSheetRecorder(codes=["002572"]) recorder.run() + + # the __all__ is generated __all__ = ["ChinaStockBalanceSheetRecorder"] diff --git a/src/zvt/recorders/eastmoney/finance/eastmoney_cash_flow_recorder.py b/src/zvt/recorders/eastmoney/finance/eastmoney_cash_flow_recorder.py index c69456e3..1598818d 100644 --- a/src/zvt/recorders/eastmoney/finance/eastmoney_cash_flow_recorder.py +++ b/src/zvt/recorders/eastmoney/finance/eastmoney_cash_flow_recorder.py @@ -188,5 +188,7 @@ def get_data_map(self): # init_log('cash_flow.log') recorder = ChinaStockCashFlowRecorder(codes=["002572"]) recorder.run() + + # the __all__ is generated __all__ = ["ChinaStockCashFlowRecorder"] diff --git a/src/zvt/recorders/eastmoney/finance/eastmoney_finance_factor_recorder.py b/src/zvt/recorders/eastmoney/finance/eastmoney_finance_factor_recorder.py index 34e43a44..d920d78a 100644 --- a/src/zvt/recorders/eastmoney/finance/eastmoney_finance_factor_recorder.py +++ b/src/zvt/recorders/eastmoney/finance/eastmoney_finance_factor_recorder.py @@ -156,5 +156,7 @@ def get_data_map(self): # init_log('finance_factor.log') recorder = ChinaStockFinanceFactorRecorder(codes=["000001"]) recorder.run() + + # the __all__ is generated __all__ = ["ChinaStockFinanceFactorRecorder"] diff --git a/src/zvt/recorders/eastmoney/finance/eastmoney_income_statement_recorder.py b/src/zvt/recorders/eastmoney/finance/eastmoney_income_statement_recorder.py index 883ca09c..77aba6d2 100644 --- a/src/zvt/recorders/eastmoney/finance/eastmoney_income_statement_recorder.py +++ b/src/zvt/recorders/eastmoney/finance/eastmoney_income_statement_recorder.py @@ -171,5 +171,7 @@ def get_data_map(self): # init_log('income_statement.log') recorder = ChinaStockIncomeStatementRecorder(codes=["002572"]) recorder.run() + + # the __all__ is generated __all__ = ["ChinaStockIncomeStatementRecorder"] diff --git a/src/zvt/recorders/eastmoney/holder/__init__.py b/src/zvt/recorders/eastmoney/holder/__init__.py index 37b27d8e..7c47f13f 100644 --- a/src/zvt/recorders/eastmoney/holder/__init__.py +++ b/src/zvt/recorders/eastmoney/holder/__init__.py @@ -1,3 +1,6 @@ +# -*- coding: utf-8 -*-# + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/eastmoney/holder/eastmoney_stock_actor_recorder.py b/src/zvt/recorders/eastmoney/holder/eastmoney_stock_actor_recorder.py index 20538a43..506e03ae 100644 --- a/src/zvt/recorders/eastmoney/holder/eastmoney_stock_actor_recorder.py +++ b/src/zvt/recorders/eastmoney/holder/eastmoney_stock_actor_recorder.py @@ -50,5 +50,7 @@ def run(self): if __name__ == "__main__": EastmoneyActorRecorder().run() + + # the __all__ is generated __all__ = ["EastmoneyActorRecorder"] diff --git a/src/zvt/recorders/eastmoney/holder/eastmoney_top_ten_holder_recorder.py b/src/zvt/recorders/eastmoney/holder/eastmoney_top_ten_holder_recorder.py index 430f508f..b580d1aa 100644 --- a/src/zvt/recorders/eastmoney/holder/eastmoney_top_ten_holder_recorder.py +++ b/src/zvt/recorders/eastmoney/holder/eastmoney_top_ten_holder_recorder.py @@ -49,5 +49,7 @@ def generate_domain_id(self, entity, original_data): # init_log('top_ten_holder.log') TopTenHolderRecorder(codes=["002572"]).run() + + # the __all__ is generated __all__ = ["TopTenHolderRecorder"] diff --git a/src/zvt/recorders/eastmoney/holder/eastmoney_top_ten_tradable_holder_recorder.py b/src/zvt/recorders/eastmoney/holder/eastmoney_top_ten_tradable_holder_recorder.py index 34efd7b7..9033f5b6 100644 --- a/src/zvt/recorders/eastmoney/holder/eastmoney_top_ten_tradable_holder_recorder.py +++ b/src/zvt/recorders/eastmoney/holder/eastmoney_top_ten_tradable_holder_recorder.py @@ -18,5 +18,7 @@ class TopTenTradableHolderRecorder(TopTenHolderRecorder): # init_log('top_ten_tradable_holder.log') TopTenTradableHolderRecorder(codes=["002572"]).run() + + # the __all__ is generated __all__ = ["TopTenTradableHolderRecorder"] diff --git a/src/zvt/recorders/eastmoney/meta/__init__.py b/src/zvt/recorders/eastmoney/meta/__init__.py index 52cc1a03..1b96bcbe 100644 --- a/src/zvt/recorders/eastmoney/meta/__init__.py +++ b/src/zvt/recorders/eastmoney/meta/__init__.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*-# + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/eastmoney/meta/eastmoney_block_meta_recorder.py b/src/zvt/recorders/eastmoney/meta/eastmoney_block_meta_recorder.py index 6c4e5d0f..981e2832 100644 --- a/src/zvt/recorders/eastmoney/meta/eastmoney_block_meta_recorder.py +++ b/src/zvt/recorders/eastmoney/meta/eastmoney_block_meta_recorder.py @@ -101,5 +101,7 @@ def record(self, entity, start, end, size, timestamps): recorder = EastmoneyBlockStockRecorder(code="BK1144") recorder.run() + + # the __all__ is generated __all__ = ["EastmoneyBlockRecorder", "EastmoneyBlockStockRecorder"] diff --git a/src/zvt/recorders/eastmoney/meta/eastmoney_stock_meta_recorder.py b/src/zvt/recorders/eastmoney/meta/eastmoney_stock_meta_recorder.py index 57e9a39d..c3efc1c9 100644 --- a/src/zvt/recorders/eastmoney/meta/eastmoney_stock_meta_recorder.py +++ b/src/zvt/recorders/eastmoney/meta/eastmoney_stock_meta_recorder.py @@ -100,5 +100,7 @@ def run(self): recorder = EastmoneyStockRecorder() recorder.run() StockDetail.record_data(codes=["000338", "000777"], provider="eastmoney") + + # the __all__ is generated __all__ = ["EastmoneyStockRecorder", "EastmoneyStockDetailRecorder"] diff --git a/src/zvt/recorders/eastmoney/trading/__init__.py b/src/zvt/recorders/eastmoney/trading/__init__.py index 39e3108c..000798d2 100644 --- a/src/zvt/recorders/eastmoney/trading/__init__.py +++ b/src/zvt/recorders/eastmoney/trading/__init__.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*-# + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/eastmoney/trading/eastmoney_holder_trading_recorder.py b/src/zvt/recorders/eastmoney/trading/eastmoney_holder_trading_recorder.py index 8b15dbd8..e3dee0f6 100644 --- a/src/zvt/recorders/eastmoney/trading/eastmoney_holder_trading_recorder.py +++ b/src/zvt/recorders/eastmoney/trading/eastmoney_holder_trading_recorder.py @@ -33,5 +33,7 @@ def generate_domain_id(self, entity, original_data): recorder = HolderTradingRecorder(codes=["002572"]) recorder.run() + + # the __all__ is generated __all__ = ["HolderTradingRecorder"] diff --git a/src/zvt/recorders/eastmoney/trading/eastmoney_manager_trading_recorder.py b/src/zvt/recorders/eastmoney/trading/eastmoney_manager_trading_recorder.py index eb5d2074..29831a95 100644 --- a/src/zvt/recorders/eastmoney/trading/eastmoney_manager_trading_recorder.py +++ b/src/zvt/recorders/eastmoney/trading/eastmoney_manager_trading_recorder.py @@ -37,5 +37,7 @@ def generate_domain_id(self, entity, original_data): recorder = ManagerTradingRecorder(codes=["002572"]) recorder.run() + + # the __all__ is generated __all__ = ["ManagerTradingRecorder"] diff --git a/src/zvt/recorders/em/__init__.py b/src/zvt/recorders/em/__init__.py index 5e83e4b4..2345da66 100644 --- a/src/zvt/recorders/em/__init__.py +++ b/src/zvt/recorders/em/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/em/actor/__init__.py b/src/zvt/recorders/em/actor/__init__.py index 03c46199..8bc8e377 100644 --- a/src/zvt/recorders/em/actor/__init__.py +++ b/src/zvt/recorders/em/actor/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/em/actor/em_stock_actor_summary_recorder.py b/src/zvt/recorders/em/actor/em_stock_actor_summary_recorder.py index 61155b94..a82576b2 100644 --- a/src/zvt/recorders/em/actor/em_stock_actor_summary_recorder.py +++ b/src/zvt/recorders/em/actor/em_stock_actor_summary_recorder.py @@ -79,5 +79,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": EMStockActorSummaryRecorder(codes=["000338"]).run() + + # the __all__ is generated __all__ = ["EMStockActorSummaryRecorder"] diff --git a/src/zvt/recorders/em/actor/em_stock_ii_recorder.py b/src/zvt/recorders/em/actor/em_stock_ii_recorder.py index ccc7cf2d..bd5d7ed4 100644 --- a/src/zvt/recorders/em/actor/em_stock_ii_recorder.py +++ b/src/zvt/recorders/em/actor/em_stock_ii_recorder.py @@ -107,5 +107,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": EMStockIIRecorder(codes=["000562"]).run() + + # the __all__ is generated __all__ = ["EMStockIIRecorder"] diff --git a/src/zvt/recorders/em/actor/em_stock_top_ten_free_recorder.py b/src/zvt/recorders/em/actor/em_stock_top_ten_free_recorder.py index 5ade8d64..58034ab7 100644 --- a/src/zvt/recorders/em/actor/em_stock_top_ten_free_recorder.py +++ b/src/zvt/recorders/em/actor/em_stock_top_ten_free_recorder.py @@ -120,5 +120,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": EMStockTopTenFreeRecorder(codes=["000338"]).run() + + # the __all__ is generated __all__ = ["EMStockTopTenFreeRecorder"] diff --git a/src/zvt/recorders/em/actor/em_stock_top_ten_recorder.py b/src/zvt/recorders/em/actor/em_stock_top_ten_recorder.py index 4d3d3e0c..2b13a29c 100644 --- a/src/zvt/recorders/em/actor/em_stock_top_ten_recorder.py +++ b/src/zvt/recorders/em/actor/em_stock_top_ten_recorder.py @@ -110,5 +110,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": EMStockTopTenRecorder(codes=["000002"]).run() + + # the __all__ is generated __all__ = ["EMStockTopTenRecorder"] diff --git a/src/zvt/recorders/em/em_api.py b/src/zvt/recorders/em/em_api.py index c30f4f1f..d2c8d0f1 100644 --- a/src/zvt/recorders/em/em_api.py +++ b/src/zvt/recorders/em/em_api.py @@ -606,6 +606,13 @@ def get_tradable_list( elif entity_type == TradableType.indexus: # 纳斯达克,道琼斯,标普500,美元指数 entity_flag = "fs=i:100.NDX,i:100.DJIA,i:100.SPX,i:100.UDI" + elif entity_type == TradableType.cbond: + if exchange == Exchange.sz: + entity_flag = "fs=m:0+e:11" + elif exchange == Exchange.sh: + entity_flag = "fs=m:1+e:11" + else: + assert False # m为交易所代码,t为交易类型 elif entity_type in [TradableType.block, TradableType.stock, TradableType.stockus, TradableType.stockhk]: if exchange == Exchange.sh: @@ -889,8 +896,9 @@ def to_zvt_code(code): # get_ii_summary(code="600519", report_date="2021-03-31", org_type=actor_type_to_org_type(ActorType.corporation)) # ) # df = get_kdata(entity_id="index_sz_399370", level="1wk") - # df = get_tradable_list(entity_type="stockhk") - df = get_news("stock_sz_300999", ps=1) + df = get_tradable_list(entity_type="cbond") + print(df) + # df = get_news("stock_sz_300999", ps=1) # print(df) # print(len(df)) # df = get_tradable_list(entity_type="block") @@ -919,6 +927,7 @@ def to_zvt_code(code): # events = get_events(entity_id="stock_sz_300684") # print(events) + # the __all__ is generated __all__ = [ "get_treasury_yield", @@ -937,6 +946,7 @@ def to_zvt_code(code): "actor_type_to_org_type", "generate_filters", "get_em_data", + "get_quotes", "get_kdata", "get_basic_info", "get_future_list", diff --git a/src/zvt/recorders/em/macro/__init__.py b/src/zvt/recorders/em/macro/__init__.py index ff588acb..8d0a4ee2 100644 --- a/src/zvt/recorders/em/macro/__init__.py +++ b/src/zvt/recorders/em/macro/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/em/macro/em_treasury_yield_recorder.py b/src/zvt/recorders/em/macro/em_treasury_yield_recorder.py index edf964b3..ea9f9797 100644 --- a/src/zvt/recorders/em/macro/em_treasury_yield_recorder.py +++ b/src/zvt/recorders/em/macro/em_treasury_yield_recorder.py @@ -71,5 +71,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": r = EMTreasuryYieldRecorder() r.run() + + # the __all__ is generated __all__ = ["EMTreasuryYieldRecorder"] diff --git a/src/zvt/recorders/em/meta/__init__.py b/src/zvt/recorders/em/meta/__init__.py index 490b2e4e..8fe3c9be 100644 --- a/src/zvt/recorders/em/meta/__init__.py +++ b/src/zvt/recorders/em/meta/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] @@ -18,6 +20,12 @@ __all__ += _em_stockus_meta_recorder_all +# import all from submodule em_cbond_meta_recorder +from .em_cbond_meta_recorder import * +from .em_cbond_meta_recorder import __all__ as _em_cbond_meta_recorder_all + +__all__ += _em_cbond_meta_recorder_all + # import all from submodule em_currency_meta_recorder from .em_currency_meta_recorder import * from .em_currency_meta_recorder import __all__ as _em_currency_meta_recorder_all diff --git a/src/zvt/recorders/em/meta/em_block_meta_recorder.py b/src/zvt/recorders/em/meta/em_block_meta_recorder.py index e4e404f8..c7381f3b 100644 --- a/src/zvt/recorders/em/meta/em_block_meta_recorder.py +++ b/src/zvt/recorders/em/meta/em_block_meta_recorder.py @@ -37,5 +37,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": recorder = EMBlockStockRecorder(day_data=True, sleeping_time=0) recorder.run() + + # the __all__ is generated __all__ = ["EMBlockRecorder", "EMBlockStockRecorder"] diff --git a/src/zvt/recorders/em/meta/em_cbond_meta_recorder.py b/src/zvt/recorders/em/meta/em_cbond_meta_recorder.py new file mode 100644 index 00000000..7982e708 --- /dev/null +++ b/src/zvt/recorders/em/meta/em_cbond_meta_recorder.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +from zvt.contract.api import df_to_db +from zvt.contract.recorder import Recorder +from zvt.domain.meta.cbond_meta import CBond +from zvt.recorders.em import em_api + + +class EMCBondRecorder(Recorder): + provider = "em" + data_schema = CBond + + def run(self): + df = em_api.get_tradable_list(entity_type="cbond") + self.logger.info(df) + df_to_db(df=df, data_schema=self.data_schema, provider=self.provider, force_update=self.force_update) + + +if __name__ == "__main__": + recorder = EMCBondRecorder() + recorder.run() + + +# the __all__ is generated +__all__ = ["EMCBondRecorder"] diff --git a/src/zvt/recorders/em/meta/em_currency_meta_recorder.py b/src/zvt/recorders/em/meta/em_currency_meta_recorder.py index bfed8b0a..f4847e79 100644 --- a/src/zvt/recorders/em/meta/em_currency_meta_recorder.py +++ b/src/zvt/recorders/em/meta/em_currency_meta_recorder.py @@ -19,5 +19,7 @@ def run(self): if __name__ == "__main__": recorder = EMCurrencyRecorder(force_update=True) recorder.run() + + # the __all__ is generated __all__ = ["EMCurrencyRecorder"] diff --git a/src/zvt/recorders/em/meta/em_future_meta_recorder.py b/src/zvt/recorders/em/meta/em_future_meta_recorder.py index 7690d036..f57f4ec2 100644 --- a/src/zvt/recorders/em/meta/em_future_meta_recorder.py +++ b/src/zvt/recorders/em/meta/em_future_meta_recorder.py @@ -19,5 +19,7 @@ def run(self): if __name__ == "__main__": recorder = EMFutureRecorder(force_update=True) recorder.run() + + # the __all__ is generated __all__ = ["EMFutureRecorder"] diff --git a/src/zvt/recorders/em/meta/em_index_meta_recorder.py b/src/zvt/recorders/em/meta/em_index_meta_recorder.py index cff1bf34..9c74265b 100644 --- a/src/zvt/recorders/em/meta/em_index_meta_recorder.py +++ b/src/zvt/recorders/em/meta/em_index_meta_recorder.py @@ -19,5 +19,7 @@ def run(self): if __name__ == "__main__": recorder = EMIndexRecorder() recorder.run() + + # the __all__ is generated __all__ = ["EMIndexRecorder"] diff --git a/src/zvt/recorders/em/meta/em_indexus_meta_recorder.py b/src/zvt/recorders/em/meta/em_indexus_meta_recorder.py index 99c1a805..4cbfb29e 100644 --- a/src/zvt/recorders/em/meta/em_indexus_meta_recorder.py +++ b/src/zvt/recorders/em/meta/em_indexus_meta_recorder.py @@ -19,5 +19,7 @@ def run(self): if __name__ == "__main__": recorder = EMIndexusRecorder() recorder.run() + + # the __all__ is generated __all__ = ["EMIndexusRecorder"] diff --git a/src/zvt/recorders/em/meta/em_stock_meta_recorder.py b/src/zvt/recorders/em/meta/em_stock_meta_recorder.py index 7f82eed0..41cfa2a6 100644 --- a/src/zvt/recorders/em/meta/em_stock_meta_recorder.py +++ b/src/zvt/recorders/em/meta/em_stock_meta_recorder.py @@ -32,5 +32,7 @@ def run(self): if __name__ == "__main__": recorder = EMStockRecorder() recorder.run() + + # the __all__ is generated __all__ = ["EMStockRecorder"] diff --git a/src/zvt/recorders/em/meta/em_stockhk_meta_recorder.py b/src/zvt/recorders/em/meta/em_stockhk_meta_recorder.py index e6b74133..20840cbc 100644 --- a/src/zvt/recorders/em/meta/em_stockhk_meta_recorder.py +++ b/src/zvt/recorders/em/meta/em_stockhk_meta_recorder.py @@ -26,5 +26,7 @@ def run(self): if __name__ == "__main__": recorder = EMStockhkRecorder() recorder.run() + + # the __all__ is generated __all__ = ["EMStockhkRecorder"] diff --git a/src/zvt/recorders/em/meta/em_stockus_meta_recorder.py b/src/zvt/recorders/em/meta/em_stockus_meta_recorder.py index 0f1e5192..81736155 100644 --- a/src/zvt/recorders/em/meta/em_stockus_meta_recorder.py +++ b/src/zvt/recorders/em/meta/em_stockus_meta_recorder.py @@ -19,5 +19,7 @@ def run(self): if __name__ == "__main__": recorder = EMStockusRecorder() recorder.run() + + # the __all__ is generated __all__ = ["EMStockusRecorder"] diff --git a/src/zvt/recorders/em/misc/__init__.py b/src/zvt/recorders/em/misc/__init__.py index be419f46..c8ba9435 100644 --- a/src/zvt/recorders/em/misc/__init__.py +++ b/src/zvt/recorders/em/misc/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/em/misc/em_stock_news_recorder.py b/src/zvt/recorders/em/misc/em_stock_news_recorder.py index f6f38120..e463090f 100644 --- a/src/zvt/recorders/em/misc/em_stock_news_recorder.py +++ b/src/zvt/recorders/em/misc/em_stock_news_recorder.py @@ -48,5 +48,7 @@ def record(self, entity, start, end, size, timestamps): # entity_ids = df["entity_id"].tolist() r = EMStockNewsRecorder(entity_ids=["stock_sh_600345"], sleeping_time=0) r.run() + + # the __all__ is generated __all__ = ["EMStockNewsRecorder"] diff --git a/src/zvt/recorders/em/quotes/__init__.py b/src/zvt/recorders/em/quotes/__init__.py index 678331b9..2a0affe9 100644 --- a/src/zvt/recorders/em/quotes/__init__.py +++ b/src/zvt/recorders/em/quotes/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/em/quotes/em_kdata_recorder.py b/src/zvt/recorders/em/quotes/em_kdata_recorder.py index d3fa9dd3..9f543ce2 100644 --- a/src/zvt/recorders/em/quotes/em_kdata_recorder.py +++ b/src/zvt/recorders/em/quotes/em_kdata_recorder.py @@ -173,6 +173,8 @@ class EMCurrencyKdataRecorder(BaseEMStockKdataRecorder): level=IntervalLevel.LEVEL_1DAY, entity_ids=entity_ids, sleeping_time=0, adjust_type=AdjustType.hfq ) recorder.run() + + # the __all__ is generated __all__ = [ "BaseEMStockKdataRecorder", diff --git a/src/zvt/recorders/em/trading/__init__.py b/src/zvt/recorders/em/trading/__init__.py index 14ebb63d..c01971b8 100644 --- a/src/zvt/recorders/em/trading/__init__.py +++ b/src/zvt/recorders/em/trading/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/em/trading/em_dragon_and_tiger_recorder.py b/src/zvt/recorders/em/trading/em_dragon_and_tiger_recorder.py index dce870a6..4a31b910 100644 --- a/src/zvt/recorders/em/trading/em_dragon_and_tiger_recorder.py +++ b/src/zvt/recorders/em/trading/em_dragon_and_tiger_recorder.py @@ -194,5 +194,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": EMDragonAndTigerRecorder(sleeping_time=0.1, exchanges=["sh"]).run() + + # the __all__ is generated __all__ = ["EMDragonAndTigerRecorder"] diff --git a/src/zvt/recorders/exchange/__init__.py b/src/zvt/recorders/exchange/__init__.py index faf04c36..2c9263e0 100644 --- a/src/zvt/recorders/exchange/__init__.py +++ b/src/zvt/recorders/exchange/__init__.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*-# + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/exchange/api/__init__.py b/src/zvt/recorders/exchange/api/__init__.py index 38c3be70..fa971b67 100644 --- a/src/zvt/recorders/exchange/api/__init__.py +++ b/src/zvt/recorders/exchange/api/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/exchange/api/cn_index_api.py b/src/zvt/recorders/exchange/api/cn_index_api.py index fc18b2bb..46b4eb33 100644 --- a/src/zvt/recorders/exchange/api/cn_index_api.py +++ b/src/zvt/recorders/exchange/api/cn_index_api.py @@ -116,5 +116,7 @@ def get_cn_index(index_type="cni", category=IndexCategory.style): if __name__ == "__main__": df = get_cn_index() print(df) + + # the __all__ is generated __all__ = ["get_cn_index"] diff --git a/src/zvt/recorders/exchange/api/cn_index_stock_api.py b/src/zvt/recorders/exchange/api/cn_index_stock_api.py index 4c8a34e0..9ea8a79f 100644 --- a/src/zvt/recorders/exchange/api/cn_index_stock_api.py +++ b/src/zvt/recorders/exchange/api/cn_index_stock_api.py @@ -70,5 +70,7 @@ def get_cn_index_stock(code, timestamp, name=None): if __name__ == "__main__": df = get_cn_index_stock(timestamp="2021-08-01", code="399370", name="国证成长") print(df) + + # the __all__ is generated __all__ = ["get_cn_index_stock"] diff --git a/src/zvt/recorders/exchange/api/cs_index_api.py b/src/zvt/recorders/exchange/api/cs_index_api.py index 2c734dc0..20fcf25a 100644 --- a/src/zvt/recorders/exchange/api/cs_index_api.py +++ b/src/zvt/recorders/exchange/api/cs_index_api.py @@ -103,5 +103,7 @@ def get_cs_index(index_type="sh"): if __name__ == "__main__": df = get_cs_index() print(df) + + # the __all__ is generated __all__ = ["get_cs_index"] diff --git a/src/zvt/recorders/exchange/api/cs_index_stock_api.py b/src/zvt/recorders/exchange/api/cs_index_stock_api.py index 7b6adaf7..ce16890b 100644 --- a/src/zvt/recorders/exchange/api/cs_index_stock_api.py +++ b/src/zvt/recorders/exchange/api/cs_index_stock_api.py @@ -45,5 +45,7 @@ def get_cs_index_stock(code, timestamp, name=None): if __name__ == "__main__": df = get_cs_index_stock(code="000001", name="上证指数", timestamp=now_pd_timestamp()) print(df) + + # the __all__ is generated __all__ = ["get_cs_index_stock"] diff --git a/src/zvt/recorders/exchange/exchange_etf_meta_recorder.py b/src/zvt/recorders/exchange/exchange_etf_meta_recorder.py index 1a94b8fb..7581155e 100644 --- a/src/zvt/recorders/exchange/exchange_etf_meta_recorder.py +++ b/src/zvt/recorders/exchange/exchange_etf_meta_recorder.py @@ -208,5 +208,7 @@ def parse_index(text): if __name__ == "__main__": spider = ChinaETFListSpider(provider="exchange") spider.run() + + # the __all__ is generated __all__ = ["ChinaETFListSpider"] diff --git a/src/zvt/recorders/exchange/exchange_index_recorder.py b/src/zvt/recorders/exchange/exchange_index_recorder.py index 44c05d41..15c6c1ac 100644 --- a/src/zvt/recorders/exchange/exchange_index_recorder.py +++ b/src/zvt/recorders/exchange/exchange_index_recorder.py @@ -47,5 +47,6 @@ def record_cn_index(self, index_type): # init_log('china_stock_category.log') ExchangeIndexRecorder().run() + # the __all__ is generated __all__ = ["ExchangeIndexRecorder"] diff --git a/src/zvt/recorders/exchange/exchange_index_stock_recorder.py b/src/zvt/recorders/exchange/exchange_index_stock_recorder.py index 70d90b50..141bfb0c 100644 --- a/src/zvt/recorders/exchange/exchange_index_stock_recorder.py +++ b/src/zvt/recorders/exchange/exchange_index_stock_recorder.py @@ -77,5 +77,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": # ExchangeIndexMetaRecorder().run() ExchangeIndexStockRecorder(codes=["399370"]).run() + + # the __all__ is generated __all__ = ["ExchangeIndexStockRecorder"] diff --git a/src/zvt/recorders/exchange/exchange_stock_meta_recorder.py b/src/zvt/recorders/exchange/exchange_stock_meta_recorder.py index 0d8ecf73..db50ffd1 100644 --- a/src/zvt/recorders/exchange/exchange_stock_meta_recorder.py +++ b/src/zvt/recorders/exchange/exchange_stock_meta_recorder.py @@ -83,5 +83,7 @@ def download_stock_list(self, response, exchange): if __name__ == "__main__": recorder = ExchangeStockMetaRecorder() recorder.run() + + # the __all__ is generated __all__ = ["ExchangeStockMetaRecorder"] diff --git a/src/zvt/recorders/exchange/exchange_stock_summary_recorder.py b/src/zvt/recorders/exchange/exchange_stock_summary_recorder.py index 957e7376..2d115783 100644 --- a/src/zvt/recorders/exchange/exchange_stock_summary_recorder.py +++ b/src/zvt/recorders/exchange/exchange_stock_summary_recorder.py @@ -94,5 +94,7 @@ def get_data_map(self): if __name__ == "__main__": ExchangeStockSummaryRecorder().run() + + # the __all__ is generated __all__ = ["ExchangeStockSummaryRecorder"] diff --git a/src/zvt/recorders/joinquant/__init__.py b/src/zvt/recorders/joinquant/__init__.py index 62c6d34f..636a6661 100644 --- a/src/zvt/recorders/joinquant/__init__.py +++ b/src/zvt/recorders/joinquant/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/joinquant/fundamental/__init__.py b/src/zvt/recorders/joinquant/fundamental/__init__.py index e313e96f..042135c4 100644 --- a/src/zvt/recorders/joinquant/fundamental/__init__.py +++ b/src/zvt/recorders/joinquant/fundamental/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/joinquant/fundamental/jq_etf_valuation_recorder.py b/src/zvt/recorders/joinquant/fundamental/jq_etf_valuation_recorder.py index c0545cec..8e9ebcb4 100644 --- a/src/zvt/recorders/joinquant/fundamental/jq_etf_valuation_recorder.py +++ b/src/zvt/recorders/joinquant/fundamental/jq_etf_valuation_recorder.py @@ -115,5 +115,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": # 上证50 JqChinaEtfValuationRecorder(codes=["512290"]).run() + + # the __all__ is generated __all__ = ["JqChinaEtfValuationRecorder"] diff --git a/src/zvt/recorders/joinquant/fundamental/jq_margin_trading_recorder.py b/src/zvt/recorders/joinquant/fundamental/jq_margin_trading_recorder.py index cdd17897..40f41a5f 100644 --- a/src/zvt/recorders/joinquant/fundamental/jq_margin_trading_recorder.py +++ b/src/zvt/recorders/joinquant/fundamental/jq_margin_trading_recorder.py @@ -40,5 +40,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": MarginTradingRecorder(codes=["000004"]).run() + + # the __all__ is generated __all__ = ["MarginTradingRecorder"] diff --git a/src/zvt/recorders/joinquant/fundamental/jq_stock_valuation_recorder.py b/src/zvt/recorders/joinquant/fundamental/jq_stock_valuation_recorder.py index 940668be..7c5a8212 100644 --- a/src/zvt/recorders/joinquant/fundamental/jq_stock_valuation_recorder.py +++ b/src/zvt/recorders/joinquant/fundamental/jq_stock_valuation_recorder.py @@ -58,5 +58,7 @@ def record(self, entity, start, end, size, timestamps): print(len(stocks)) JqChinaStockValuationRecorder(entity_ids=["stock_sz_300999"], force_update=True).run() + + # the __all__ is generated __all__ = ["JqChinaStockValuationRecorder"] diff --git a/src/zvt/recorders/joinquant/meta/__init__.py b/src/zvt/recorders/joinquant/meta/__init__.py index e73daddf..bd923948 100644 --- a/src/zvt/recorders/joinquant/meta/__init__.py +++ b/src/zvt/recorders/joinquant/meta/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/joinquant/meta/jq_fund_meta_recorder.py b/src/zvt/recorders/joinquant/meta/jq_fund_meta_recorder.py index 58dc8070..f88844f0 100644 --- a/src/zvt/recorders/joinquant/meta/jq_fund_meta_recorder.py +++ b/src/zvt/recorders/joinquant/meta/jq_fund_meta_recorder.py @@ -146,5 +146,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": # JqChinaFundRecorder().run() JqChinaFundStockRecorder(codes=["000053"]).run() + + # the __all__ is generated __all__ = ["JqChinaFundRecorder", "JqChinaFundStockRecorder"] diff --git a/src/zvt/recorders/joinquant/meta/jq_stock_meta_recorder.py b/src/zvt/recorders/joinquant/meta/jq_stock_meta_recorder.py index e3300733..e9a5f1ec 100644 --- a/src/zvt/recorders/joinquant/meta/jq_stock_meta_recorder.py +++ b/src/zvt/recorders/joinquant/meta/jq_stock_meta_recorder.py @@ -111,5 +111,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": # JqChinaEtfRecorder().run() JqChinaStockEtfPortfolioRecorder(codes=["510050"]).run() + + # the __all__ is generated __all__ = ["BaseJqChinaMetaRecorder", "JqChinaStockRecorder", "JqChinaEtfRecorder", "JqChinaStockEtfPortfolioRecorder"] diff --git a/src/zvt/recorders/joinquant/meta/jq_trade_day_recorder.py b/src/zvt/recorders/joinquant/meta/jq_trade_day_recorder.py index 5fbd0183..c6c528be 100644 --- a/src/zvt/recorders/joinquant/meta/jq_trade_day_recorder.py +++ b/src/zvt/recorders/joinquant/meta/jq_trade_day_recorder.py @@ -60,5 +60,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": r = StockTradeDayRecorder() r.run() + + # the __all__ is generated __all__ = ["StockTradeDayRecorder"] diff --git a/src/zvt/recorders/joinquant/misc/__init__.py b/src/zvt/recorders/joinquant/misc/__init__.py index 7cc0442d..afdf746c 100644 --- a/src/zvt/recorders/joinquant/misc/__init__.py +++ b/src/zvt/recorders/joinquant/misc/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/joinquant/misc/jq_hk_holder_recorder.py b/src/zvt/recorders/joinquant/misc/jq_hk_holder_recorder.py index 7922e67a..536d95ec 100644 --- a/src/zvt/recorders/joinquant/misc/jq_hk_holder_recorder.py +++ b/src/zvt/recorders/joinquant/misc/jq_hk_holder_recorder.py @@ -104,5 +104,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": JoinquantHkHolderRecorder(sleeping_time=10).run() + + # the __all__ is generated __all__ = ["JoinquantHkHolderRecorder"] diff --git a/src/zvt/recorders/joinquant/misc/jq_index_money_flow_recorder.py b/src/zvt/recorders/joinquant/misc/jq_index_money_flow_recorder.py index 7deec9f5..1483b1ff 100644 --- a/src/zvt/recorders/joinquant/misc/jq_index_money_flow_recorder.py +++ b/src/zvt/recorders/joinquant/misc/jq_index_money_flow_recorder.py @@ -129,5 +129,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": JoinquantIndexMoneyFlowRecorder(start_timestamp="2020-12-01").run() + + # the __all__ is generated __all__ = ["JoinquantIndexMoneyFlowRecorder"] diff --git a/src/zvt/recorders/joinquant/misc/jq_stock_money_flow_recorder.py b/src/zvt/recorders/joinquant/misc/jq_stock_money_flow_recorder.py index c530dd0f..e1ed96bb 100644 --- a/src/zvt/recorders/joinquant/misc/jq_stock_money_flow_recorder.py +++ b/src/zvt/recorders/joinquant/misc/jq_stock_money_flow_recorder.py @@ -160,5 +160,7 @@ def generate_kdata_id(se): if __name__ == "__main__": JoinquantStockMoneyFlowRecorder(codes=["000578"]).run() + + # the __all__ is generated __all__ = ["JoinquantStockMoneyFlowRecorder"] diff --git a/src/zvt/recorders/joinquant/overall/__init__.py b/src/zvt/recorders/joinquant/overall/__init__.py index e2654821..3867d810 100644 --- a/src/zvt/recorders/joinquant/overall/__init__.py +++ b/src/zvt/recorders/joinquant/overall/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/joinquant/overall/jq_cross_market_recorder.py b/src/zvt/recorders/joinquant/overall/jq_cross_market_recorder.py index dde98f36..a3720561 100644 --- a/src/zvt/recorders/joinquant/overall/jq_cross_market_recorder.py +++ b/src/zvt/recorders/joinquant/overall/jq_cross_market_recorder.py @@ -69,5 +69,7 @@ def get_data_map(self): if __name__ == "__main__": CrossMarketSummaryRecorder().run() + + # the __all__ is generated __all__ = ["CrossMarketSummaryRecorder"] diff --git a/src/zvt/recorders/joinquant/overall/jq_margin_trading_recorder.py b/src/zvt/recorders/joinquant/overall/jq_margin_trading_recorder.py index 199b4572..7eb6de74 100644 --- a/src/zvt/recorders/joinquant/overall/jq_margin_trading_recorder.py +++ b/src/zvt/recorders/joinquant/overall/jq_margin_trading_recorder.py @@ -88,5 +88,7 @@ def get_data_map(self): if __name__ == "__main__": MarginTradingSummaryRecorder().run() + + # the __all__ is generated __all__ = ["MarginTradingSummaryRecorder"] diff --git a/src/zvt/recorders/joinquant/overall/jq_stock_summary_recorder.py b/src/zvt/recorders/joinquant/overall/jq_stock_summary_recorder.py index cfa6cbeb..2fc8127a 100644 --- a/src/zvt/recorders/joinquant/overall/jq_stock_summary_recorder.py +++ b/src/zvt/recorders/joinquant/overall/jq_stock_summary_recorder.py @@ -96,5 +96,7 @@ def get_data_map(self): if __name__ == "__main__": StockSummaryRecorder().run() + + # the __all__ is generated __all__ = ["StockSummaryRecorder"] diff --git a/src/zvt/recorders/joinquant/quotes/__init__.py b/src/zvt/recorders/joinquant/quotes/__init__.py index a7796dcc..2b8e9086 100644 --- a/src/zvt/recorders/joinquant/quotes/__init__.py +++ b/src/zvt/recorders/joinquant/quotes/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/joinquant/quotes/jq_index_kdata_recorder.py b/src/zvt/recorders/joinquant/quotes/jq_index_kdata_recorder.py index 3f689a5c..1bef8475 100644 --- a/src/zvt/recorders/joinquant/quotes/jq_index_kdata_recorder.py +++ b/src/zvt/recorders/joinquant/quotes/jq_index_kdata_recorder.py @@ -137,5 +137,7 @@ def generate_kdata_id(se): JqChinaIndexKdataRecorder(level=level, sleeping_time=0, codes=codes, real_time=False).run() print(get_kdata(entity_id="index_sh_000001", limit=10)) + + # the __all__ is generated __all__ = ["JqChinaIndexKdataRecorder"] diff --git a/src/zvt/recorders/joinquant/quotes/jq_stock_kdata_recorder.py b/src/zvt/recorders/joinquant/quotes/jq_stock_kdata_recorder.py index 902ed0a9..b461e099 100644 --- a/src/zvt/recorders/joinquant/quotes/jq_stock_kdata_recorder.py +++ b/src/zvt/recorders/joinquant/quotes/jq_stock_kdata_recorder.py @@ -182,5 +182,6 @@ def generate_kdata_id(se): if __name__ == "__main__": Stock1wkHfqKdata.record_data(codes=["300999"]) + # the __all__ is generated __all__ = ["JqChinaStockKdataRecorder"] diff --git a/src/zvt/recorders/jqka/__init__.py b/src/zvt/recorders/jqka/__init__.py index 48d5641b..ae5addc1 100644 --- a/src/zvt/recorders/jqka/__init__.py +++ b/src/zvt/recorders/jqka/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/jqka/emotion/JqkaEmotionRecorder.py b/src/zvt/recorders/jqka/emotion/JqkaEmotionRecorder.py index a6b84a98..ec41e80b 100644 --- a/src/zvt/recorders/jqka/emotion/JqkaEmotionRecorder.py +++ b/src/zvt/recorders/jqka/emotion/JqkaEmotionRecorder.py @@ -207,5 +207,6 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": JqkaLimitUpRecorder().run() + # the __all__ is generated __all__ = ["JqkaLimitUpRecorder", "JqkaLimitDownRecorder", "JqkaEmotionRecorder"] diff --git a/src/zvt/recorders/jqka/emotion/__init__.py b/src/zvt/recorders/jqka/emotion/__init__.py index d8285f22..f23c1747 100644 --- a/src/zvt/recorders/jqka/emotion/__init__.py +++ b/src/zvt/recorders/jqka/emotion/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/jqka/jqka_api.py b/src/zvt/recorders/jqka/jqka_api.py index c494adee..b75168a3 100644 --- a/src/zvt/recorders/jqka/jqka_api.py +++ b/src/zvt/recorders/jqka/jqka_api.py @@ -98,5 +98,7 @@ def get_jkqa_data(url, pn=1, ps=200, fetch_all=True, headers=_JKQA_HEADER): # print(result) result = get_continuous_limit_up(date="20210716") print(result) + + # the __all__ is generated __all__ = ["get_continuous_limit_up", "get_limit_stats", "get_limit_up", "get_limit_down", "get_jkqa_data"] diff --git a/src/zvt/recorders/qmt/__init__.py b/src/zvt/recorders/qmt/__init__.py index b91808e1..2686fff0 100644 --- a/src/zvt/recorders/qmt/__init__.py +++ b/src/zvt/recorders/qmt/__init__.py @@ -1,13 +1,5 @@ # -*- coding: utf-8 -*- -# the __all__ is generated -__all__ = [] -# __init__.py structure: -# common code of the package -# export interface in __all__ which contains __all__ of its sub modules -# import all from submodule quotes -# from .quotes import * -# from .quotes import __all__ as _quotes_all -# -# __all__ += _quotes_all +# the __all__ is generated +__all__ = [] diff --git a/src/zvt/recorders/qmt/meta/__init__.py b/src/zvt/recorders/qmt/meta/__init__.py index 40a96afc..30915aab 100644 --- a/src/zvt/recorders/qmt/meta/__init__.py +++ b/src/zvt/recorders/qmt/meta/__init__.py @@ -1 +1,15 @@ # -*- coding: utf-8 -*- + + +# the __all__ is generated +__all__ = [] + +# __init__.py structure: +# common code of the package +# export interface in __all__ which contains __all__ of its sub modules + +# import all from submodule qmt_stock_meta_recorder +from .qmt_stock_meta_recorder import * +from .qmt_stock_meta_recorder import __all__ as _qmt_stock_meta_recorder_all + +__all__ += _qmt_stock_meta_recorder_all diff --git a/src/zvt/recorders/qmt/meta/qmt_stock_meta_recorder.py b/src/zvt/recorders/qmt/meta/qmt_stock_meta_recorder.py index 54635226..b30a0760 100644 --- a/src/zvt/recorders/qmt/meta/qmt_stock_meta_recorder.py +++ b/src/zvt/recorders/qmt/meta/qmt_stock_meta_recorder.py @@ -19,5 +19,7 @@ def run(self): if __name__ == "__main__": recorder = QMTStockRecorder() recorder.run() + + # the __all__ is generated __all__ = ["QMTStockRecorder"] diff --git a/src/zvt/recorders/qmt/quotes/__init__.py b/src/zvt/recorders/qmt/quotes/__init__.py index 663a15a9..614197a3 100644 --- a/src/zvt/recorders/qmt/quotes/__init__.py +++ b/src/zvt/recorders/qmt/quotes/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/qmt/quotes/qmt_kdata_recorder.py b/src/zvt/recorders/qmt/quotes/qmt_kdata_recorder.py index c3e92985..df31cb7c 100644 --- a/src/zvt/recorders/qmt/quotes/qmt_kdata_recorder.py +++ b/src/zvt/recorders/qmt/quotes/qmt_kdata_recorder.py @@ -104,5 +104,7 @@ class EMStockKdataRecorder(BaseQmtKdataRecorder): if __name__ == "__main__": # Stock.record_data(provider="exchange") EMStockKdataRecorder(entity_id="stock_sz_000338", adjust_type=AdjustType.hfq).run() + + # the __all__ is generated __all__ = ["BaseQmtKdataRecorder", "EMStockKdataRecorder"] diff --git a/src/zvt/recorders/sina/__init__.py b/src/zvt/recorders/sina/__init__.py index c2d6788f..99cd0ac0 100644 --- a/src/zvt/recorders/sina/__init__.py +++ b/src/zvt/recorders/sina/__init__.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*-# + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/sina/meta/__init__.py b/src/zvt/recorders/sina/meta/__init__.py index e3d5eebd..150c19a3 100644 --- a/src/zvt/recorders/sina/meta/__init__.py +++ b/src/zvt/recorders/sina/meta/__init__.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*-# + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/sina/meta/sina_block_recorder.py b/src/zvt/recorders/sina/meta/sina_block_recorder.py index b8c9bdc6..eb0681ad 100644 --- a/src/zvt/recorders/sina/meta/sina_block_recorder.py +++ b/src/zvt/recorders/sina/meta/sina_block_recorder.py @@ -108,5 +108,7 @@ def record(self, entity, start, end, size, timestamps): SinaBlockRecorder().run() recorder = SinaChinaBlockStockRecorder(codes=["new_cbzz"]) recorder.run() + + # the __all__ is generated __all__ = ["SinaBlockRecorder", "SinaChinaBlockStockRecorder"] diff --git a/src/zvt/recorders/sina/money_flow/__init__.py b/src/zvt/recorders/sina/money_flow/__init__.py index f0b357c7..34390444 100644 --- a/src/zvt/recorders/sina/money_flow/__init__.py +++ b/src/zvt/recorders/sina/money_flow/__init__.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*-# + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/sina/money_flow/sina_block_money_flow_recorder.py b/src/zvt/recorders/sina/money_flow/sina_block_money_flow_recorder.py index dad21e20..39680c56 100644 --- a/src/zvt/recorders/sina/money_flow/sina_block_money_flow_recorder.py +++ b/src/zvt/recorders/sina/money_flow/sina_block_money_flow_recorder.py @@ -84,5 +84,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": SinaBlockMoneyFlowRecorder(codes=["new_fjzz"]).run() # SinaIndexMoneyFlowRecorder().run() + + # the __all__ is generated __all__ = ["SinaBlockMoneyFlowRecorder"] diff --git a/src/zvt/recorders/sina/money_flow/sina_stock_money_flow_recorder.py b/src/zvt/recorders/sina/money_flow/sina_stock_money_flow_recorder.py index 9a6684f5..39c267f4 100644 --- a/src/zvt/recorders/sina/money_flow/sina_stock_money_flow_recorder.py +++ b/src/zvt/recorders/sina/money_flow/sina_stock_money_flow_recorder.py @@ -125,5 +125,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": SinaStockMoneyFlowRecorder(codes=["000406"]).run() # SinaStockMoneyFlowRecorder().run() + + # the __all__ is generated __all__ = ["SinaStockMoneyFlowRecorder"] diff --git a/src/zvt/recorders/sina/quotes/__init__.py b/src/zvt/recorders/sina/quotes/__init__.py index 461ad64e..7b3781f8 100644 --- a/src/zvt/recorders/sina/quotes/__init__.py +++ b/src/zvt/recorders/sina/quotes/__init__.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*-# + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/sina/quotes/sina_etf_kdata_recorder.py b/src/zvt/recorders/sina/quotes/sina_etf_kdata_recorder.py index 1ea9f7ea..7b7f0cb4 100644 --- a/src/zvt/recorders/sina/quotes/sina_etf_kdata_recorder.py +++ b/src/zvt/recorders/sina/quotes/sina_etf_kdata_recorder.py @@ -119,5 +119,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": init_log("sina_china_etf_day_kdata.log") ChinaETFDayKdataRecorder(level=IntervalLevel.LEVEL_1DAY).run() + + # the __all__ is generated __all__ = ["ChinaETFDayKdataRecorder"] diff --git a/src/zvt/recorders/sina/quotes/sina_index_kdata_recorder.py b/src/zvt/recorders/sina/quotes/sina_index_kdata_recorder.py index e7cf2f0e..2704325e 100644 --- a/src/zvt/recorders/sina/quotes/sina_index_kdata_recorder.py +++ b/src/zvt/recorders/sina/quotes/sina_index_kdata_recorder.py @@ -75,5 +75,7 @@ def record(self, entity, start, end, size, timestamps): if __name__ == "__main__": ChinaIndexDayKdataRecorder().run() + + # the __all__ is generated __all__ = ["ChinaIndexDayKdataRecorder"] diff --git a/src/zvt/recorders/wb/__init__.py b/src/zvt/recorders/wb/__init__.py index 1beecddb..f82a1365 100644 --- a/src/zvt/recorders/wb/__init__.py +++ b/src/zvt/recorders/wb/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- + + # the __all__ is generated __all__ = [] diff --git a/src/zvt/recorders/wb/wb_api.py b/src/zvt/recorders/wb/wb_api.py index 701c3488..a37349fd 100644 --- a/src/zvt/recorders/wb/wb_api.py +++ b/src/zvt/recorders/wb/wb_api.py @@ -249,6 +249,8 @@ def get_economy_data(entity_id, indicators=None, date=None): print(df) # df = get_sources() # print(df) + + # the __all__ is generated __all__ = [ "get_countries", diff --git a/src/zvt/recorders/wb/wb_country_recorder.py b/src/zvt/recorders/wb/wb_country_recorder.py index b68827f9..87ba7335 100644 --- a/src/zvt/recorders/wb/wb_country_recorder.py +++ b/src/zvt/recorders/wb/wb_country_recorder.py @@ -18,5 +18,7 @@ def run(self): if __name__ == "__main__": recorder = WBCountryRecorder() recorder.run() + + # the __all__ is generated __all__ = ["WBCountryRecorder"] diff --git a/src/zvt/recorders/wb/wb_economy_recorder.py b/src/zvt/recorders/wb/wb_economy_recorder.py index 8047da94..4a72d44b 100644 --- a/src/zvt/recorders/wb/wb_economy_recorder.py +++ b/src/zvt/recorders/wb/wb_economy_recorder.py @@ -26,5 +26,7 @@ def record(self, entity, start, end, size, timestamps): entity_ids = ["country_galaxy_CN", "country_galaxy_US"] r = WBEconomyRecorder(entity_ids=entity_ids) r.run() + + # the __all__ is generated __all__ = ["WBEconomyRecorder"] diff --git a/src/zvt/rest/trading.py b/src/zvt/rest/trading.py index 5c76eef2..4c68e456 100644 --- a/src/zvt/rest/trading.py +++ b/src/zvt/rest/trading.py @@ -19,7 +19,6 @@ TagQuoteStatsModel, ) from zvt.trading.trading_schemas import QueryStockQuoteSetting -from zvt.utils.time_utils import current_date trading_router = APIRouter( prefix="/api/trading", @@ -41,9 +40,7 @@ def get_query_stock_quote_setting(): @trading_router.post("/build_query_stock_quote_setting", response_model=QueryStockQuoteSettingModel) def build_query_stock_quote_setting(build_query_stock_quote_setting_model: BuildQueryStockQuoteSettingModel): - return trading_service.build_query_stock_quote_setting( - build_query_stock_quote_setting_model, timestamp=current_date() - ) + return trading_service.build_query_stock_quote_setting(build_query_stock_quote_setting_model) @trading_router.post("/query_tag_quotes", response_model=List[TagQuoteStatsModel]) diff --git a/src/zvt/rest/work.py b/src/zvt/rest/work.py index 1da98d35..e2ab4b5e 100644 --- a/src/zvt/rest/work.py +++ b/src/zvt/rest/work.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- from typing import List, Optional -from fastapi import APIRouter, HTTPException +from fastapi import APIRouter import zvt.contract.api as contract_api import zvt.tag.tag_service as tag_service from zvt.domain import Stock +from zvt.tag.common import TagType from zvt.tag.tag_models import ( TagInfoModel, CreateTagInfoModel, @@ -25,7 +26,7 @@ BatchSetStockTagsModel, ) from zvt.tag.tag_schemas import StockTags, MainTagInfo, SubTagInfo, HiddenTagInfo, StockPoolInfo, StockPools -from zvt.utils.time_utils import current_date, to_time_str +from zvt.utils.time_utils import current_date work_router = APIRouter( prefix="/api/work", @@ -96,53 +97,19 @@ def get_hidden_tag_info(): return tags_info -def _create_tag_info(tags_info: CreateTagInfoModel, tags_info_type="main_tag"): - """ - Create tags info - """ - if tags_info_type == "main_tag": - data_schema = MainTagInfo - elif tags_info_type == "sub_tag": - data_schema = SubTagInfo - elif tags_info_type == "hidden_tag": - data_schema = HiddenTagInfo - else: - assert False - - with contract_api.DBSession(provider="zvt", data_schema=data_schema)() as session: - current_tags_info = data_schema.query_data( - session=session, filters=[data_schema.tag == tags_info.tag], return_type="domain" - ) - if current_tags_info: - raise HTTPException(status_code=409, detail=f"This tag has been registered in {tags_info_type}") - timestamp = current_date() - entity_id = "admin" - tags_info_db = data_schema( - id=f"admin_{to_time_str(timestamp)}_{tags_info.tag}", - entity_id=entity_id, - timestamp=timestamp, - tag=tags_info.tag, - tag_reason=tags_info.tag_reason, - ) - session.add(tags_info_db) - session.commit() - session.refresh(tags_info_db) - return tags_info_db - - @work_router.post("/create_main_tag_info", response_model=TagInfoModel) def create_main_tag_info(tag_info: CreateTagInfoModel): - return _create_tag_info(tag_info, tags_info_type="main_tag") + return tag_service.build_tag_info(tag_info, tag_type=TagType.main_tag) @work_router.post("/create_sub_tag_info", response_model=TagInfoModel) def create_sub_tag_info(tag_info: CreateTagInfoModel): - return _create_tag_info(tag_info, tags_info_type="sub_tag") + return tag_service.build_tag_info(tag_info, TagType.sub_tag) @work_router.post("/create_hidden_tag_info", response_model=TagInfoModel) def create_hidden_tag_info(tag_info: CreateTagInfoModel): - return _create_tag_info(tag_info, tags_info_type="hidden_tag") + return tag_service.build_tag_info(tag_info, TagType.hidden_tag) @work_router.post("/query_stock_tags", response_model=List[StockTagsModel]) diff --git a/src/zvt/tag/__init__.py b/src/zvt/tag/__init__.py index 938e1239..562245ee 100644 --- a/src/zvt/tag/__init__.py +++ b/src/zvt/tag/__init__.py @@ -1,2 +1,4 @@ +# -*- coding: utf-8 -*-# + # the __all__ is generated __all__ = [] diff --git a/src/zvt/tag/common.py b/src/zvt/tag/common.py index 83d0a33e..a984c9ca 100644 --- a/src/zvt/tag/common.py +++ b/src/zvt/tag/common.py @@ -11,8 +11,12 @@ class TagType(Enum): main_tag = "main_tag" sub_tag = "sub_tag" hidden_tag = "hidden_tag" - undefined = "undefined" + + +class TagStatsQueryType(Enum): + simple = "simple" + details = "details" # the __all__ is generated -__all__ = ["StockPoolType", "TagType"] +__all__ = ["StockPoolType", "TagType", "TagStatsQueryType"] diff --git a/src/zvt/tag/tag_models.py b/src/zvt/tag/tag_models.py index 8d831352..03006675 100644 --- a/src/zvt/tag/tag_models.py +++ b/src/zvt/tag/tag_models.py @@ -5,7 +5,7 @@ from pydantic_core.core_schema import ValidationInfo from zvt.contract.model import MixinModel, CustomModel -from zvt.tag.common import StockPoolType, TagType +from zvt.tag.common import StockPoolType, TagType, TagStatsQueryType from zvt.tag.tag_utils import get_main_tags, get_sub_tags, get_hidden_tags, get_stock_pool_names @@ -142,6 +142,7 @@ def stock_pool_name_must_be_in(cls, v: str) -> str: class QueryStockTagStatsModel(CustomModel): stock_pool_name: Optional[str] = None entity_ids: Optional[List[str]] = None + query_type: Optional[TagStatsQueryType] = Field(default=TagStatsQueryType.details) @field_validator("stock_pool_name", "entity_ids") @classmethod @@ -205,13 +206,13 @@ class StockTagDetailsModel(CustomModel): class StockTagStatsModel(MixinModel): main_tag: str - turnover: float - entity_count: int - position: int - is_main_line: bool - main_line_continuous_days: int - entity_ids: List[str] - stock_details: List[StockTagDetailsModel] + turnover: Optional[float] = Field(default=None) + entity_count: Optional[int] = Field(default=None) + position: Optional[int] = Field(default=None) + is_main_line: Optional[bool] = Field(default=None) + main_line_continuous_days: Optional[int] = Field(default=None) + entity_ids: Optional[List[str]] = Field(default=None) + stock_details: Optional[List[StockTagDetailsModel]] = Field(default=None) class ActivateSubTagsModel(CustomModel): @@ -230,6 +231,8 @@ class ActivateSubTagsResultModel(CustomModel): "SimpleStockTagsModel", "QueryStockTagsModel", "QuerySimpleStockTagsModel", + "BatchSetStockTagsModel", + "TagParameter", "SetStockTagsModel", "StockPoolModel", "StockPoolInfoModel", diff --git a/src/zvt/tag/tag_service.py b/src/zvt/tag/tag_service.py index 91acba6b..b37c1383 100644 --- a/src/zvt/tag/tag_service.py +++ b/src/zvt/tag/tag_service.py @@ -3,12 +3,13 @@ from typing import List import pandas as pd +from fastapi import HTTPException from sqlalchemy import func import zvt.contract.api as contract_api from zvt.api.selector import get_entity_ids_by_filter from zvt.domain import BlockStock, Block, Stock -from zvt.tag.common import TagType +from zvt.tag.common import TagType, TagStatsQueryType from zvt.tag.tag_models import ( SetStockTagsModel, CreateStockPoolInfoModel, @@ -17,8 +18,18 @@ ActivateSubTagsModel, BatchSetStockTagsModel, TagParameter, + CreateTagInfoModel, +) +from zvt.tag.tag_schemas import ( + StockTags, + StockPools, + StockPoolInfo, + TagStats, + StockSystemTags, + MainTagInfo, + SubTagInfo, + HiddenTagInfo, ) -from zvt.tag.tag_schemas import StockTags, StockPools, StockPoolInfo, TagStats, StockSystemTags from zvt.tag.tag_utils import ( industry_to_main_tag, get_sub_tags, @@ -136,6 +147,11 @@ def build_tag_parameter(tag_type: TagType, tag, tag_reason, stock_tag: StockTags def batch_set_stock_tags(batch_set_stock_tags_model: BatchSetStockTagsModel): if not batch_set_stock_tags_model.entity_ids: return [] + + tag_info = CreateTagInfoModel(tag=batch_set_stock_tags_model.tag, tag_reason=batch_set_stock_tags_model.tag_reason) + if not is_tag_info_existed(tag_info=tag_info, tag_type=batch_set_stock_tags_model.tag_type): + build_tag_info(tag_info=tag_info, tag_type=batch_set_stock_tags_model.tag_type) + with contract_api.DBSession(provider="zvt", data_schema=StockTags)() as session: tag_type = batch_set_stock_tags_model.tag_type if tag_type == TagType.main_tag: @@ -313,6 +329,54 @@ def tag(self): self.build_sub_tags() +def get_tag_info_schema(tag_type: TagType): + if tag_type == TagType.main_tag: + data_schema = MainTagInfo + elif tag_type == TagType.sub_tag: + data_schema = SubTagInfo + elif tag_type == TagType.hidden_tag: + data_schema = HiddenTagInfo + else: + assert False + + return data_schema + + +def is_tag_info_existed(tag_info: CreateTagInfoModel, tag_type: TagType): + data_schema = get_tag_info_schema(tag_type=tag_type) + with contract_api.DBSession(provider="zvt", data_schema=data_schema)() as session: + current_tags_info = data_schema.query_data( + session=session, filters=[data_schema.tag == tag_info.tag], return_type="domain" + ) + if current_tags_info: + return True + return False + + +def build_tag_info(tag_info: CreateTagInfoModel, tag_type: TagType): + """ + Create tags info + """ + if is_tag_info_existed(tag_info=tag_info, tag_type=tag_type): + raise HTTPException(status_code=409, detail=f"This tag has been registered in {tag_type}") + + data_schema = get_tag_info_schema(tag_type=tag_type) + with contract_api.DBSession(provider="zvt", data_schema=data_schema)() as session: + timestamp = current_date() + entity_id = "admin" + tag_info_db = data_schema( + id=f"admin_{to_time_str(timestamp)}_{tag_info.tag}", + entity_id=entity_id, + timestamp=timestamp, + tag=tag_info.tag, + tag_reason=tag_info.tag_reason, + ) + session.add(tag_info_db) + session.commit() + session.refresh(tag_info_db) + return tag_info_db + + def build_stock_pool_info(create_stock_pool_info_model: CreateStockPoolInfoModel, timestamp): with contract_api.DBSession(provider="zvt", data_schema=StockPoolInfo)() as session: stock_pool_info = StockPoolInfo( @@ -379,6 +443,10 @@ def query_stock_tag_stats(query_stock_tag_stats_model: QueryStockTagStatsModel): return_type="dict", order=TagStats.position.asc(), ) + + if query_stock_tag_stats_model.query_type == TagStatsQueryType.simple: + return tag_stats_list + entity_ids = flatten_list([tag_stats["entity_ids"] for tag_stats in tag_stats_list]) # get stocks meta @@ -568,7 +636,12 @@ def activate_main_tag_by_sub_tags(activate_sub_tags_model: ActivateSubTagsModel) __all__ = [ "stock_tags_need_update", "build_stock_tags", + "build_tag_parameter", + "batch_set_stock_tags", "StockAutoTagger", + "get_tag_info_schema", + "is_tag_info_existed", + "build_tag_info", "build_stock_pool_info", "build_stock_pool", "query_stock_tag_stats", diff --git a/src/zvt/tag/tag_stats.py b/src/zvt/tag/tag_stats.py index 92f343b3..2a6bc0a3 100644 --- a/src/zvt/tag/tag_stats.py +++ b/src/zvt/tag/tag_stats.py @@ -18,7 +18,7 @@ def build_system_stock_pools(): - for stock_pool_name in ["main_line", "vol_up"]: + for stock_pool_name in ["main_line", "vol_up", "大局"]: datas = StockPools.query_data( limit=1, filters=[StockPools.stock_pool_name == stock_pool_name], @@ -32,7 +32,7 @@ def build_system_stock_pools(): df = TopStocks.query_data(start_timestamp=start, columns=[TopStocks.timestamp], order=TopStocks.timestamp.asc()) if not pd_is_not_null(df): logger.info(f"no data for top_stocks {start}") - return + continue dates = df["timestamp"].tolist() for target_date in dates: logger.info(f"build_system_stock_pools {stock_pool_name} to {target_date}") @@ -44,6 +44,8 @@ def build_system_stock_pools(): small_stocks = get_top_stocks(target_date=target_date, return_type="small_vol_up") big_stocks = get_top_stocks(target_date=target_date, return_type="big_vol_up") entity_ids = list(set(small_stocks + big_stocks)) + elif stock_pool_name == "大局": + entity_ids = get_top_stocks(target_date=target_date, return_type="all") else: assert False diff --git a/src/zvt/tag/tag_utils.py b/src/zvt/tag/tag_utils.py index 5bdb36be..d7ace143 100644 --- a/src/zvt/tag/tag_utils.py +++ b/src/zvt/tag/tag_utils.py @@ -127,7 +127,7 @@ def get_initial_stock_pool_info(): "stock_pool_type": StockPoolType.system.value, "stock_pool_name": stock_pool_name, } - for stock_pool_name in ["main_line", "vol_up", "all"] + for stock_pool_name in ["main_line", "vol_up", "大局", "all"] ] @@ -287,5 +287,6 @@ def match_tag(alias): "build_initial_hidden_tag_info", "get_hidden_tags", "get_stock_pool_names", + "match_tag_by_type", "match_tag", ] diff --git a/src/zvt/trading/trading_models.py b/src/zvt/trading/trading_models.py index 1d48bb9a..bc0e2cfd 100644 --- a/src/zvt/trading/trading_models.py +++ b/src/zvt/trading/trading_models.py @@ -40,7 +40,7 @@ class QueryStockQuoteModel(CustomModel): entity_ids: Optional[List[str]] = Field(default=None) stock_pool_name: Optional[str] = Field(default=None) # the amount is not huge, just ignore now - # limit: int = Field(default=200) + limit: int = Field(default=100) order_by_type: Optional[OrderByType] = Field(default=OrderByType.desc) order_by_field: Optional[str] = Field(default="change_pct") diff --git a/src/zvt/trading/trading_service.py b/src/zvt/trading/trading_service.py index 7179da48..64233d53 100644 --- a/src/zvt/trading/trading_service.py +++ b/src/zvt/trading/trading_service.py @@ -147,8 +147,9 @@ def query_tag_quotes(query_tag_quote_model: QueryTagQuoteModel): ) .reset_index(drop=False) ) + sorted_df = grouped_df.sort_values(by=["turnover", "total_count"], ascending=[False, False]) - return grouped_df.to_dict(orient="records") + return sorted_df.to_dict(orient="records") def query_stock_quotes(query_stock_quote_model: QueryStockQuoteModel): @@ -209,7 +210,7 @@ def set_tags(quote): "change_pct": change_pct, "limit_up_count": limit_up_count, "limit_down_count": limit_down_count, - "quotes": quotes, + "quotes": quotes[: query_stock_quote_model.limit], } return result @@ -222,7 +223,7 @@ def sell_stocks(): pass -def build_query_stock_quote_setting(build_query_stock_quote_setting_model: BuildQueryStockQuoteSettingModel, timestamp): +def build_query_stock_quote_setting(build_query_stock_quote_setting_model: BuildQueryStockQuoteSettingModel): with contract_api.DBSession(provider="zvt", data_schema=QueryStockQuoteSetting)() as session: the_id = "admin_setting" datas = QueryStockQuoteSetting.query_data(ids=[the_id], session=session, return_type="domain") @@ -230,7 +231,7 @@ def build_query_stock_quote_setting(build_query_stock_quote_setting_model: Build stock_pool_info = datas[0] else: stock_pool_info = QueryStockQuoteSetting(entity_id="admin", id=the_id) - stock_pool_info.timestamp = to_pd_timestamp(timestamp) + stock_pool_info.timestamp = current_date() stock_pool_info.stock_pool_name = build_query_stock_quote_setting_model.stock_pool_name stock_pool_info.main_tags = build_query_stock_quote_setting_model.main_tags session.add(stock_pool_info)