테스트 커버리지 리포트: 92%

Files Functions Classes

coverage.py v7.13.5, created at 2026-04-04 15:08 +0000

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
brokers / broker_api_wrapper.py BrokerAPIWrapper.__init__   100% 14 0 0   100% 4 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.stop   0% 2 2 0   0% 2 0   0%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_name_by_code   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_code_by_name   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_all_stock_codes   100% 4 0 0   100% 2 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_all_stock_code_list   100% 4 0 0   100% 2 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_all_stock_name_list   100% 4 0 0   100% 2 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_stock_info_by_code   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_current_price   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_stock_conclusion   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_price_summary   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_market_cap   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_top_market_cap_stocks_code   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.inquire_daily_itemchartprice   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.inquire_time_itemchartprice   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.inquire_time_dailychartprice   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_asking_price   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_time_concluded_prices   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_top_rise_fall_stocks   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_top_volume_stocks   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_investor_trade_by_stock_daily   0% 1 1 0   100% 0 0   0%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_investor_trade_by_stock_daily_multi   0% 1 1 0   100% 0 0   0%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_program_trade_by_stock_daily   0% 1 1 0   100% 0 0   0%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_multi_price   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_etf_info   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_financial_ratio   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.check_holiday   0% 1 1 0   100% 0 0   0%
brokers / broker_api_wrapper.py BrokerAPIWrapper.get_account_balance   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.place_stock_order   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.is_websocket_receive_alive   0% 1 1 0   100% 0 0   0%
brokers / broker_api_wrapper.py BrokerAPIWrapper.connect_websocket   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.disconnect_websocket   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.subscribe_realtime_price   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.unsubscribe_realtime_price   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.subscribe_unified_price   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.unsubscribe_unified_price   0% 1 1 0   100% 0 0   0%
brokers / broker_api_wrapper.py BrokerAPIWrapper.subscribe_realtime_quote   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.unsubscribe_realtime_quote   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.subscribe_program_trading   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py BrokerAPIWrapper.unsubscribe_program_trading   100% 1 0 0   100% 0 0   100%
brokers / broker_api_wrapper.py (no function)   100% 48 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_account_api.py KoreaInvestApiAccount.__init__   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_account_api.py KoreaInvestApiAccount.get_account_balance   100% 15 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_account_api.py (no function)   100% 13 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_api_base.py _dumps   100% 1 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_api_base.py ApiRetryError.__init__   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_api_base.py ApiFatalError.__init__   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_api_base.py KoreaInvestApiBase.__init__   100% 14 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_api_base.py KoreaInvestApiBase.url   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_api_base.py KoreaInvestApiBase.call_api   100% 28 0 0   100% 8 0   100%
brokers / korea_investment / korea_invest_api_base.py KoreaInvestApiBase.close_session   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_api_base.py KoreaInvestApiBase._log_headers   78% 9 2 0   100% 2 0   82%
brokers / korea_investment / korea_invest_api_base.py KoreaInvestApiBase._log_request_exception   93% 15 1 0   93% 14 1   93%
brokers / korea_investment / korea_invest_api_base.py KoreaInvestApiBase._execute_request   100% 25 0 0   83% 6 1   97%
brokers / korea_investment / korea_invest_api_base.py KoreaInvestApiBase._execute_request.make_request   100% 23 0 0   100% 8 0   100%
brokers / korea_investment / korea_invest_api_base.py KoreaInvestApiBase._handle_response   90% 30 3 0   100% 12 0   93%
brokers / korea_investment / korea_invest_api_base.py (no function)   90% 31 3 0   100% 0 0   90%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.__init__   100% 16 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_account_balance   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.place_stock_order   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_stock_info_by_code   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_current_price   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_stock_conclusion   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_price_summary   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_market_cap   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_top_market_cap_stocks_code   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.inquire_daily_itemchartprice   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.inquire_time_itemchartprice   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.inquire_time_dailychartprice   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_asking_price   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_time_concluded_prices   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_top_rise_fall_stocks   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_top_volume_stocks   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_investor_trade_by_stock_daily   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_investor_trade_by_stock_daily_multi   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_program_trade_by_stock_daily   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_multi_price   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_etf_info   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.get_financial_ratio   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.check_holiday   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.connect_websocket   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.disconnect_websocket   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.subscribe_realtime_price   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.unsubscribe_realtime_price   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.subscribe_unified_price   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.unsubscribe_unified_price   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.subscribe_realtime_quote   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.unsubscribe_realtime_quote   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.is_websocket_receive_alive   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.subscribe_program_trading   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py KoreaInvestApiClient.unsubscribe_program_trading   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_client.py (no function)   100% 51 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv.__init__   100% 13 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv._load_config   100% 10 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv._set_base_urls   100% 7 0 0   100% 4 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv.set_trading_mode   100% 9 0 0   100% 4 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv.get_base_headers   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv.get_full_config   100% 7 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv.get_access_token   100% 3 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv.save_access_token   100% 3 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv.invalidate_token   100% 2 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv.refresh_token   100% 2 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv.get_base_url   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv.get_real_base_url   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv.get_real_config   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv.get_real_access_token   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_env.py KoreaInvestApiEnv.get_websocket_url   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_env.py (no function)   100% 25 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_header_provider.py KoreaInvestHeaderProvider.__post_init__   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_header_provider.py KoreaInvestHeaderProvider.set_auth_bearer   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_header_provider.py KoreaInvestHeaderProvider.set_app_keys   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_header_provider.py KoreaInvestHeaderProvider.set_tr_id   100% 3 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_header_provider.py KoreaInvestHeaderProvider.set_custtype   100% 3 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_header_provider.py KoreaInvestHeaderProvider.set_hashkey   100% 3 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_header_provider.py KoreaInvestHeaderProvider.set_gt_uid   100% 3 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_header_provider.py KoreaInvestHeaderProvider.clear_order_headers   100% 2 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_header_provider.py KoreaInvestHeaderProvider.sync_from_env   100% 3 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_header_provider.py KoreaInvestHeaderProvider.build   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_header_provider.py KoreaInvestHeaderProvider.temp   92% 12 1 0   75% 8 2   85%
brokers / korea_investment / korea_invest_header_provider.py KoreaInvestHeaderProvider.fork   100% 4 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_header_provider.py build_header_provider_from_env   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_header_provider.py (no function)   100% 27 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py SearchInfoParams.of   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py SearchInfoParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py InquirePriceParams.of   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py InquirePriceParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py AskingPriceParams.of   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py AskingPriceParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py TimeConcludeParams.of   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py TimeConcludeParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py DailyItemChartPriceParams.daily_itemchartprice   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py DailyItemChartPriceParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py TimeItemChartPriceParams.time_itemchartprice   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py TimeItemChartPriceParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py TimeDailyItemChartPriceParams.time_daily_itemchartprice   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py TimeDailyItemChartPriceParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py VolumeRankParams.default   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py VolumeRankParams.trading_value   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_params_provider.py VolumeRankParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py MarketCapScreenParams.top_market_cap   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py MarketCapScreenParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py SearchStockParams.of   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_params_provider.py SearchStockParams.to_dict   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_params_provider.py ItemNewsParams.of   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_params_provider.py ItemNewsParams.to_dict   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_params_provider.py FinancialRatioParams.of   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py FinancialRatioParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py ETFInfoParams.of   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py ETFInfoParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py CheckHolidayParams.of   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py CheckHolidayParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py FluctuationParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py FluctuationParams._base   80% 5 1 0   50% 4 2   67%
brokers / korea_investment / korea_invest_params_provider.py FluctuationParams.rising   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py FluctuationParams.falling   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py FluctuationParams.since_open_rise   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_params_provider.py FluctuationParams.since_open_fall   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_params_provider.py FluctuationParams.volatility   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_params_provider.py InvestorTradeByStockDailyParams.of   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py InvestorTradeByStockDailyParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py ProgramTradeByStockDailyParams.of   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py ProgramTradeByStockDailyParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py MultiPriceParams.of   78% 9 2 0   67% 6 2   73%
brokers / korea_investment / korea_invest_params_provider.py MultiPriceParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py AccountBalanceParams.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py AccountBalanceParams.create   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py OrderCashBody.to_dict   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.search_info   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.inquire_price   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.inquire_conclusion   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.asking_price   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.time_conclude   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.daily_itemchartprice   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.time_itemchartprice   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.time_daily_itemchartprice   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.volume_rank   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.trading_value_rank   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_params_provider.py Params.top_market_cap   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.search_stock   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_params_provider.py Params.item_news   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_params_provider.py Params.financial_ratio   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.check_holiday   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.etf_info   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.fluctuation_rise   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.fluctuation_fall   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.investor_trade_by_stock_daily   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.program_trade_by_stock_daily   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.multi_price   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.account_balance   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py Params.order_cash_body   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_params_provider.py (no function)   100% 320 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_quotations_api.py _exchange_to_market_code   60% 5 2 0   50% 4 2   56%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.__init__   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_stock_info_by_code   100% 20 0 0   100% 4 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_current_price   100% 21 0 0   100% 4 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_stock_conclusion   100% 8 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_price_summary   89% 35 4 0   83% 12 2   87%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_market_cap   100% 15 0 0   100% 6 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_top_market_cap_stocks_code   100% 39 0 0   100% 16 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_top_market_cap_stocks_code._to_int_safe   100% 4 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.inquire_daily_itemchartprice   97% 37 1 0   94% 16 1   96%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.inquire_time_itemchartprice   100% 16 0 0   100% 4 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.inquire_time_dailychartprice   100% 13 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_asking_price   100% 12 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_time_concluded_prices   100% 12 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_top_rise_fall_stocks   100% 26 0 0   100% 10 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_top_volume_stocks   100% 21 0 0   100% 6 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_investor_trade_by_stock_daily   96% 28 1 0   79% 14 3   90%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_investor_trade_by_stock_daily_multi   95% 21 1 0   88% 8 1   93%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_program_trade_by_stock_daily   100% 21 0 0   100% 8 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_multi_price   97% 31 1 0   94% 16 1   96%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_etf_info   100% 11 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.get_financial_ratio   100% 11 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_quotations_api.py KoreaInvestApiQuotations.check_holiday   100% 6 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_quotations_api.py (no function)   100% 36 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_token_provider.py TokenProvider.__init__   100% 4 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_token_provider.py TokenProvider.get_access_token   100% 14 0 0   100% 6 0   100%
brokers / korea_investment / korea_invest_token_provider.py TokenProvider._is_token_valid   100% 4 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_token_provider.py TokenProvider._load_token_from_file   100% 11 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_token_provider.py TokenProvider._get_token_base_url_from_file   100% 8 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_token_provider.py TokenProvider._save_token_to_file   100% 5 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_token_provider.py TokenProvider._issue_new_token   100% 16 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_token_provider.py TokenProvider.invalidate_token   100% 5 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_token_provider.py TokenProvider.refresh_token   80% 10 2 0   50% 4 2   71%
brokers / korea_investment / korea_invest_token_provider.py (no function)   100% 17 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_trading_api.py KoreaInvestApiTrading.__init__   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_trading_api.py KoreaInvestApiTrading._get_hashkey   92% 26 2 0   100% 4 0   93%
brokers / korea_investment / korea_invest_trading_api.py KoreaInvestApiTrading.place_stock_order   92% 13 1 0   75% 4 1   88%
brokers / korea_investment / korea_invest_trading_api.py (no function)   100% 18 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_trid_keys.py (no function)   100% 37 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_trid_provider.py KoreaInvestTrIdProvider.__init__   100% 4 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_trid_provider.py KoreaInvestTrIdProvider.from_config_loader   100% 5 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_trid_provider.py KoreaInvestTrIdProvider._get_leaf_value   100% 5 0 0   100% 4 0   100%
brokers / korea_investment / korea_invest_trid_provider.py KoreaInvestTrIdProvider.get_by_leaf   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_trid_provider.py KoreaInvestTrIdProvider.get   85% 13 2 0   75% 8 2   81%
brokers / korea_investment / korea_invest_trid_provider.py KoreaInvestTrIdProvider.quotations   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_trid_provider.py KoreaInvestTrIdProvider.account_inquire_balance   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_trid_provider.py KoreaInvestTrIdProvider.trading_order_cash   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_trid_provider.py KoreaInvestTrIdProvider.daily_itemchartprice   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_trid_provider.py KoreaInvestTrIdProvider.time_itemchartprice   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_trid_provider.py KoreaInvestTrIdProvider.time_daily_itemchartprice   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_trid_provider.py (no function)   100% 20 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_url_keys.py (no function)   100% 23 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_url_provider.py KoreaInvestUrlProvider.__init__   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_url_provider.py KoreaInvestUrlProvider.from_env_and_kis_config   100% 6 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_url_provider.py KoreaInvestUrlProvider.has   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_url_provider.py KoreaInvestUrlProvider.keys   100% 1 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_url_provider.py KoreaInvestUrlProvider.path   100% 3 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_url_provider.py KoreaInvestUrlProvider.url   100% 6 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_url_provider.py (no function)   100% 14 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py _loads   100% 1 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_websocket_api.py _dumps   100% 1 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI.__init__   100% 17 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._aes_cbc_base64_dec   100% 6 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._get_approval_key   100% 29 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._establish_connection   100% 17 0 0   100% 4 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._receive_messages   84% 44 7 0   69% 16 1   80%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._handle_websocket_message   95% 92 5 0   90% 50 3   93%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_stock_quote_data   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_stock_contract_data   100% 4 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_futs_optn_quote_data   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_futs_optn_contract_data   100% 4 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_product_futs_quote_data   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_product_futs_contract_data   100% 4 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_stock_futs_optn_quote_data   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_stock_futs_optn_contract_data   100% 4 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_stock_futs_optn_exp_contract_data   100% 4 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_cmefuts_quote_data   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_cmefuts_contract_data   100% 4 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_eurex_optn_quote_data   100% 2 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_eurex_optn_contract_data   100% 4 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_eurex_optn_exp_contract_data   100% 4 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._parse_program_trading_data   0% 4 4 0   100% 0 0   0%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI.subscribe_program_trading   0% 3 3 0   100% 0 0   0%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI.unsubscribe_program_trading   0% 3 3 0   100% 0 0   0%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._resubscribe_all   100% 3 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI.is_receive_alive   0% 1 1 0   100% 0 0   0%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI.connect   69% 16 5 0   83% 6 1   73%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI.disconnect   93% 27 2 0   100% 6 0   94%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI.send_realtime_request   93% 27 2 0   62% 8 1   86%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI.subscribe_realtime_price   100% 3 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI.unsubscribe_realtime_price   100% 3 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI.subscribe_unified_price   33% 3 2 0   100% 0 0   33%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI.unsubscribe_unified_price   0% 3 3 0   100% 0 0   0%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI.subscribe_realtime_quote   100% 3 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI.unsubscribe_realtime_quote   100% 3 0 0   100% 0 0   100%
brokers / korea_investment / korea_invest_websocket_api.py KoreaInvestWebSocketAPI._on_receive   100% 7 0 0   100% 2 0   100%
brokers / korea_investment / korea_invest_websocket_api.py (no function)   93% 56 4 0   100% 0 0   93%
common / types.py ErrorCode.is_retriable   100% 1 0 0   100% 0 0   100%
common / types.py TradeSignal.to_dict   100% 1 0 0   100% 0 0   100%
common / types.py ResPriceSummary.to_dict   100% 1 0 0   100% 0 0   100%
common / types.py ResPriceSummary.from_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResMomentumStock.to_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResMomentumStock.from_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResMarketCapStockItem.to_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResMarketCapStockItem.from_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResStockFullInfoApiOutput.is_new_high   100% 1 0 0   100% 0 0   100%
common / types.py ResStockFullInfoApiOutput.is_new_low   100% 1 0 0   100% 0 0   100%
common / types.py ResStockFullInfoApiOutput.new_high_low_status   100% 5 0 0   100% 4 0   100%
common / types.py ResStockFullInfoApiOutput.to_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResStockFullInfoApiOutput.from_dict   100% 1 0 0   100% 0 0   100%
common / types.py ResTopMarketCapApiItem.sync_aliases   100% 7 0 0   100% 6 0   100%
common / types.py ResTopMarketCapApiItem.to_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResTopMarketCapApiItem.from_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResTopMarketCapApiItem.from_api   100% 6 0 0   50% 4 2   80%
common / types.py ResDailyChartApiItem.to_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResDailyChartApiItem.from_dict   100% 1 0 0   100% 0 0   100%
common / types.py ResAccountBalanceApiOutput.to_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResAccountBalanceApiOutput.from_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResStockOrderApiOutput.to_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResStockOrderApiOutput.from_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResBasicStockInfo.to_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResBasicStockInfo.from_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResFluctuation.to_dict   100% 1 0 0   100% 0 0   100%
common / types.py ResFluctuation.from_dict   100% 1 0 0   100% 0 0   100%
common / types.py ResBollingerBand.to_dict   100% 1 0 0   100% 0 0   100%
common / types.py ResBollingerBand.from_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResRSI.to_dict   100% 1 0 0   100% 0 0   100%
common / types.py ResRSI.from_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResMovingAverage.to_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResMovingAverage.from_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResRelativeStrength.to_dict   0% 1 1 0   100% 0 0   0%
common / types.py ResCommonResponse.to_dict   89% 27 3 0   88% 24 3   88%
common / types.py ResCommonResponse.from_dict   0% 1 1 0   100% 0 0   0%
common / types.py (no function)   100% 268 0 0   100% 0 0   100%
config / DynamicConfig.py (no function)   100% 5 0 0   100% 0 0   100%
config / config_loader.py AppConfig.validate_base_url   100% 3 0 0   100% 2 0   100%
config / config_loader.py AppConfig.__getitem__   100% 1 0 0   100% 0 0   100%
config / config_loader.py AppConfig.get   100% 1 0 0   100% 0 0   100%
config / config_loader.py load_configs   100% 11 0 0   100% 0 0   100%
config / config_loader.py load_config   100% 11 0 0   100% 0 0   100%
config / config_loader.py (no function)   100% 41 0 0   100% 0 0   100%
core / cache / cache_config.py load_cache_config   100% 5 0 0   50% 2 1   86%
core / cache / cache_config.py (no function)   100% 5 0 0   100% 0 0   100%
core / cache / cache_store.py CacheStore.__init__   89% 9 1 0   75% 4 1   85%
core / cache / cache_store.py CacheStore.set_logger   75% 12 3 0   67% 6 0   72%
core / cache / cache_store.py CacheStore.get_raw   88% 33 4 0   92% 24 0   89%
core / cache / cache_store.py CacheStore.get   0% 1 1 0   100% 0 0   0%
core / cache / cache_store.py CacheStore.set   100% 4 0 0   100% 4 0   100%
core / cache / cache_store.py CacheStore.delete   100% 4 0 0   100% 4 0   100%
core / cache / cache_store.py CacheStore.clear   100% 4 0 0   100% 4 0   100%
core / cache / cache_store.py (no function)   100% 14 0 0   100% 0 0   100%
core / cache / cache_wrapper.py ClientWithCache.__init__   100% 16 0 0   100% 2 0   100%
core / cache / cache_wrapper.py ClientWithCache.__getattr__   100% 9 0 0   100% 4 0   100%
core / cache / cache_wrapper.py ClientWithCache.__getattr__._build_cache_key   100% 4 0 0   100% 0 0   100%
core / cache / cache_wrapper.py ClientWithCache.__getattr__.wrapped   84% 76 12 0   73% 48 7   80%
core / cache / cache_wrapper.py ClientWithCache.__dir__   100% 1 0 0   100% 0 0   100%
core / cache / cache_wrapper.py ClientWithCache._parse_timestamp   91% 11 1 0   67% 6 2   82%
core / cache / cache_wrapper.py cache_wrap_client   100% 1 0 0   100% 0 0   100%
core / cache / cache_wrapper.py (no function)   100% 13 0 0   100% 0 0   100%
core / cache / db_cache.py DBCache.__init__   100% 10 0 0   100% 2 0   100%
core / cache / db_cache.py DBCache._init_db   100% 8 0 0   50% 2 1   90%
core / cache / db_cache.py DBCache._get_connection   100% 7 0 0   100% 0 0   100%
core / cache / db_cache.py DBCache.__del__   100% 2 0 0   50% 2 1   75%
core / cache / db_cache.py DBCache.set_logger   100% 1 0 0   100% 0 0   100%
core / cache / db_cache.py DBCache._serialize   100% 9 0 0   100% 8 0   100%
core / cache / db_cache.py DBCache._deserialize   90% 39 4 0   85% 26 4   88%
core / cache / db_cache.py DBCache.set   100% 12 0 0   83% 6 1   94%
core / cache / db_cache.py DBCache.delete   88% 8 1 0   50% 4 2   75%
core / cache / db_cache.py DBCache.clear   88% 8 1 0   50% 4 2   75%
core / cache / db_cache.py DBCache.cleanup_old_files   97% 32 1 0   72% 18 5   88%
core / cache / db_cache.py DBCache.get_raw   100% 13 0 0   50% 4 2   88%
core / cache / db_cache.py DBCache.exists   100% 6 0 0   100% 0 0   100%
core / cache / db_cache.py (no function)   100% 26 0 0   100% 0 0   100%
core / cache / file_cache.py load_deserializable_classes   100% 10 0 0   100% 2 0   100%
core / cache / file_cache.py FileCache.__init__   100% 7 0 0   100% 4 0   100%
core / cache / file_cache.py FileCache.set_logger   100% 1 0 0   100% 0 0   100%
core / cache / file_cache.py FileCache._serialize   100% 9 0 0   100% 8 0   100%
core / cache / file_cache.py FileCache._deserialize   92% 39 3 0   88% 26 3   91%
core / cache / file_cache.py FileCache._get_path   100% 1 0 0   100% 0 0   100%
core / cache / file_cache.py FileCache.set   100% 13 0 0   83% 6 1   95%
core / cache / file_cache.py FileCache.delete   100% 9 0 0   83% 6 1   93%
core / cache / file_cache.py FileCache.clear   94% 17 1 0   79% 14 3   87%
core / cache / file_cache.py FileCache.cleanup_old_files   92% 26 2 0   82% 22 4   88%
core / cache / file_cache.py FileCache.get_raw   100% 13 0 0   75% 4 1   94%
core / cache / file_cache.py FileCache.exists   100% 1 0 0   100% 0 0   100%
core / cache / file_cache.py (no function)   100% 22 0 0   100% 0 0   100%
core / cache / memory_cache.py MemoryCache.__init__   100% 2 0 0   100% 0 0   100%
core / cache / memory_cache.py MemoryCache.set_logger   100% 1 0 0   100% 0 0   100%
core / cache / memory_cache.py MemoryCache.get   100% 1 0 0   100% 0 0   100%
core / cache / memory_cache.py MemoryCache.set   100% 1 0 0   100% 0 0   100%
core / cache / memory_cache.py MemoryCache.has   100% 1 0 0   100% 0 0   100%
core / cache / memory_cache.py MemoryCache.delete   100% 1 0 0   100% 0 0   100%
core / cache / memory_cache.py MemoryCache.clear   100% 1 0 0   100% 0 0   100%
core / cache / memory_cache.py (no function)   100% 9 0 0   100% 0 0   100%
core / logger.py get_log_timestamp   100% 3 0 0   100% 2 0   100%
core / logger.py reset_log_timestamp_for_test   100% 1 0 0   100% 0 0   100%
core / logger.py SizeTimeRotatingFileHandler.__init__   88% 16 2 0   83% 6 1   86%
core / logger.py SizeTimeRotatingFileHandler.doRollover   85% 26 4 0   71% 14 4   80%
core / logger.py JsonFormatter.format   100% 7 0 0   100% 4 0   100%
core / logger.py get_streaming_logger   100% 13 0 0   100% 2 0   100%
core / logger.py StreamingEventLogger.__init__   100% 1 0 0   100% 0 0   100%
core / logger.py StreamingEventLogger.log_subscribe   100% 1 0 0   100% 0 0   100%
core / logger.py StreamingEventLogger.log_unsubscribe   100% 1 0 0   100% 0 0   100%
core / logger.py StreamingEventLogger.log_summary   100% 1 0 0   100% 0 0   100%
core / logger.py StreamingEventLogger.log_connect   100% 1 0 0   100% 0 0   100%
core / logger.py StreamingEventLogger.log_disconnect   100% 1 0 0   100% 0 0   100%
core / logger.py StreamingEventLogger.log_reconnect   100% 1 0 0   100% 0 0   100%
core / logger.py StreamingEventLogger.log_restore   100% 1 0 0   100% 0 0   100%
core / logger.py StreamingEventLogger.log_pt_subscribe   100% 1 0 0   100% 0 0   100%
core / logger.py StreamingEventLogger.log_pt_unsubscribe   100% 1 0 0   100% 0 0   100%
core / logger.py StreamingEventLogger.log_price_subscribe   100% 1 0 0   100% 0 0   100%
core / logger.py StreamingEventLogger.log_price_unsubscribe   100% 1 0 0   100% 0 0   100%
core / logger.py get_cache_event_logger   100% 13 0 0   100% 2 0   100%
core / logger.py CacheEventLogger.__init__   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_price_set   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_price_update_tick   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_price_hit   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_price_miss   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_price_evicted   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_streaming_mark   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_streaming_unmark   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_ohlcv_loaded   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_ohlcv_hit   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_ohlcv_miss   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_ohlcv_evicted   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_ohlcv_invalidated   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_ohlcv_upsert   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_today_candle   100% 1 0 0   100% 0 0   100%
core / logger.py CacheEventLogger.log_stats   100% 4 0 0   100% 0 0   100%
core / logger.py get_strategy_logger   100% 18 0 0   100% 8 0   100%
core / logger.py get_performance_logger   100% 14 0 0   100% 4 0   100%
core / logger.py StrategyInfoFilter.filter   100% 3 0 0   100% 2 0   100%
core / logger.py Logger.__init__   100% 28 0 0   100% 12 0   100%
core / logger.py Logger._cleanup_old_logs   82% 11 2 0   100% 8 0   89%
core / logger.py Logger._setup_logger   100% 10 0 0   100% 2 0   100%
core / logger.py Logger.info   100% 2 0 0   100% 0 0   100%
core / logger.py Logger.debug   100% 1 0 0   100% 0 0   100%
core / logger.py Logger.warning   100% 2 0 0   100% 0 0   100%
core / logger.py Logger.error   100% 2 0 0   100% 0 0   100%
core / logger.py Logger.critical   100% 2 0 0   100% 0 0   100%
core / logger.py Logger.exception   100% 1 0 0   100% 0 0   100%
core / logger.py (no function)   100% 64 0 0   100% 0 0   100%
core / market_clock.py MarketClock.__init__   100% 14 0 0   100% 0 0   100%
core / market_clock.py MarketClock.get_current_kst_time   100% 1 0 0   100% 0 0   100%
core / market_clock.py MarketClock.get_current_kst_date_str   100% 1 0 0   100% 0 0   100%
core / market_clock.py MarketClock.is_market_operating_hours   100% 4 0 0   100% 2 0   100%
core / market_clock.py MarketClock.get_market_open_time   100% 2 0 0   100% 0 0   100%
core / market_clock.py MarketClock.get_market_close_time   100% 2 0 0   100% 0 0   100%
core / market_clock.py MarketClock.get_seconds_until_market_close   100% 4 0 0   100% 0 0   100%
core / market_clock.py MarketClock.get_sleep_seconds_until_market_close   100% 2 0 0   100% 0 0   100%
core / market_clock.py MarketClock.sleep   100% 3 0 0   100% 2 0   100%
core / market_clock.py MarketClock.async_sleep   100% 3 0 0   100% 2 0   100%
core / market_clock.py MarketClock.to_yyyymmdd   100% 9 0 0   100% 8 0   100%
core / market_clock.py MarketClock.to_hhmmss   100% 10 0 0   100% 8 0   100%
core / market_clock.py MarketClock.dec_minute   100% 5 0 0   100% 0 0   100%
core / market_clock.py (no function)   100% 20 0 0   100% 0 0   100%
core / performance_profiler.py PerformanceProfiler.__init__   100% 3 0 0   100% 0 0   100%
core / performance_profiler.py PerformanceProfiler.start_timer   100% 1 0 0   100% 0 0   100%
core / performance_profiler.py PerformanceProfiler.log_timer   100% 10 0 0   100% 6 0   100%
core / performance_profiler.py PerformanceProfiler._check_pyinstrument   100% 4 0 0   100% 2 0   100%
core / performance_profiler.py PerformanceProfiler._save_profile_result   100% 11 0 0   100% 2 0   100%
core / performance_profiler.py PerformanceProfiler.profile   100% 9 0 0   100% 2 0   100%
core / performance_profiler.py PerformanceProfiler.profile_async   100% 9 0 0   100% 2 0   100%
core / performance_profiler.py (no function)   91% 22 2 0   100% 0 0   91%
core / retry_queue / api_request_queue.py ApiRequestQueue.__init__   100% 4 0 0   100% 0 0   100%
core / retry_queue / api_request_queue.py ApiRequestQueue.submit   100% 5 0 0   100% 0 0   100%
core / retry_queue / api_request_queue.py ApiRequestQueue.stop   100% 6 0 0   100% 4 0   100%
core / retry_queue / api_request_queue.py ApiRequestQueue._spawn   100% 4 0 0   100% 0 0   100%
core / retry_queue / api_request_queue.py ApiRequestQueue._execute   100% 25 0 0   100% 6 0   100%
core / retry_queue / api_request_queue.py ApiRequestQueue._delay_and_execute   100% 2 0 0   100% 0 0   100%
core / retry_queue / api_request_queue.py ApiRequestQueue._resolve   100% 2 0 0   50% 2 1   75%
core / retry_queue / api_request_queue.py ApiRequestQueue.done_queue   100% 1 0 0   100% 0 0   100%
core / retry_queue / api_request_queue.py ApiRequestQueue.fail_queue   100% 1 0 0   100% 0 0   100%
core / retry_queue / api_request_queue.py ApiRequestQueue.pending_count   100% 1 0 0   100% 0 0   100%
core / retry_queue / api_request_queue.py (no function)   100% 30 0 0   100% 0 0   100%
core / retry_queue / client_with_retry_queue.py ClientWithRetryQueue.__init__   100% 2 0 0   100% 0 0   100%
core / retry_queue / client_with_retry_queue.py ClientWithRetryQueue.__getattr__   100% 5 0 0   100% 2 0   100%
core / retry_queue / client_with_retry_queue.py ClientWithRetryQueue.__getattr__.queued   100% 2 0 0   100% 0 0   100%
core / retry_queue / client_with_retry_queue.py retry_queue_wrap_client   100% 1 0 0   100% 0 0   100%
core / retry_queue / client_with_retry_queue.py (no function)   100% 7 0 0   100% 0 0   100%
core / retry_queue / retry_classifier.py classify   100% 13 0 0   100% 8 0   100%
core / retry_queue / retry_classifier.py _classify_by_msg   100% 7 0 0   100% 6 0   100%
core / retry_queue / retry_classifier.py (no function)   100% 11 0 0   100% 0 0   100%
interfaces / live_strategy.py LiveStrategy.name   100% 1 0 0   100% 0 0   100%
interfaces / live_strategy.py LiveStrategy.scan   100% 1 0 0   100% 0 0   100%
interfaces / live_strategy.py LiveStrategy.check_exits   100% 1 0 0   100% 0 0   100%
interfaces / live_strategy.py (no function)   100% 11 0 0   100% 0 0   100%
interfaces / schedulable_task.py SchedulableTask.task_name   100% 1 0 0   100% 0 0   100%
interfaces / schedulable_task.py SchedulableTask.priority   100% 1 0 0   100% 0 0   100%
interfaces / schedulable_task.py SchedulableTask.start   100% 1 0 0   100% 0 0   100%
interfaces / schedulable_task.py SchedulableTask.stop   100% 1 0 0   100% 0 0   100%
interfaces / schedulable_task.py SchedulableTask.suspend   100% 1 0 0   100% 0 0   100%
interfaces / schedulable_task.py SchedulableTask.resume   100% 1 0 0   100% 0 0   100%
interfaces / schedulable_task.py SchedulableTask.state   100% 1 0 0   100% 0 0   100%
interfaces / schedulable_task.py SchedulableTask.get_progress   100% 1 0 0   100% 0 0   100%
interfaces / schedulable_task.py (no function)   100% 33 0 0   100% 0 0   100%
interfaces / strategy.py Strategy.run   100% 1 0 0   100% 0 0   100%
interfaces / strategy.py (no function)   100% 3 0 0   100% 0 0   100%
repositories / cache.py _LRUCache.__init__   100% 7 0 0   100% 0 0   100%
repositories / cache.py _LRUCache.get   100% 14 0 0   100% 8 0   100%
repositories / cache.py _LRUCache.put   82% 11 2 0   100% 6 0   88%
repositories / cache.py _LRUCache.delete   100% 4 0 0   75% 4 1   88%
repositories / cache.py _LRUCache.get_stats   100% 17 0 0   100% 10 0   100%
repositories / cache.py _LFUCache.__init__   100% 7 0 0   100% 0 0   100%
repositories / cache.py _LFUCache.get   100% 13 0 0   100% 6 0   100%
repositories / cache.py _LFUCache.put   100% 18 0 0   100% 6 0   100%
repositories / cache.py _LFUCache.delete   100% 4 0 0   75% 4 1   88%
repositories / cache.py _LFUCache.get_stats   100% 25 0 0   100% 12 0   100%
repositories / cache.py (no function)   100% 14 0 0   100% 0 0   100%
repositories / stock_code_repository.py _write_minimal_db   100% 10 0 0   100% 2 0   100%
repositories / stock_code_repository.py StockCodeRepository.__init__   100% 17 0 0   90% 10 1   96%
repositories / stock_code_repository.py StockCodeRepository._load_data   95% 44 2 0   56% 18 8   84%
repositories / stock_code_repository.py StockCodeRepository.get_name_by_code   100% 4 0 0   100% 2 0   100%
repositories / stock_code_repository.py StockCodeRepository.get_code_by_name   100% 4 0 0   100% 2 0   100%
repositories / stock_code_repository.py StockCodeRepository.search_by_name   100% 8 0 0   100% 6 0   100%
repositories / stock_code_repository.py StockCodeRepository.get_kosdaq_codes   100% 3 0 0   100% 2 0   100%
repositories / stock_code_repository.py StockCodeRepository.is_kosdaq   100% 4 0 0   100% 2 0   100%
repositories / stock_code_repository.py (no function)   100% 14 0 0   100% 0 0   100%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.__init__   100% 10 0 0   100% 0 0   100%
repositories / stock_ohlcv_repository.py StockOhlcvRepository._on_ohlcv_evicted   100% 2 0 0   50% 2 1   75%
repositories / stock_ohlcv_repository.py StockOhlcvRepository._init_db_sync   100% 10 0 0   100% 0 0   100%
repositories / stock_ohlcv_repository.py StockOhlcvRepository._get_write_connection   100% 12 0 0   100% 4 0   100%
repositories / stock_ohlcv_repository.py StockOhlcvRepository._get_read_connection   100% 7 0 0   75% 4 1   91%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.get_stock_data   90% 29 3 0   71% 14 4   84%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.update_today_candle   95% 19 1 0   79% 14 3   88%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.upsert_ohlcv   100% 14 0 0   75% 8 2   91%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.get_ohlcv_summary   100% 9 0 0   50% 2 1   91%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.get_ohlcv_max_trading_days   100% 8 0 0   100% 0 0   100%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.upsert_daily_snapshot   100% 9 0 0   100% 2 0   100%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.get_prices_by_date   62% 8 3 0   100% 0 0   62%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.get_price_history   62% 8 3 0   100% 0 0   62%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.get_latest_trade_date   62% 8 3 0   100% 0 0   62%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.get_count_by_date   62% 8 3 0   100% 0 0   62%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.cleanup_old_data   80% 10 2 0   50% 2 1   75%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.get_latest_daily_snapshot   75% 12 3 0   100% 2 0   79%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.get_cache_stats   100% 1 0 0   100% 0 0   100%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.close   100% 6 0 0   100% 4 0   100%
repositories / stock_ohlcv_repository.py StockOhlcvRepository.__del__   100% 2 0 0   100% 2 0   100%
repositories / stock_ohlcv_repository.py (no function)   97% 35 1 0   50% 2 1   95%
repositories / stock_price_repository.py StockPriceRepository.__init__   100% 4 0 0   100% 0 0   100%
repositories / stock_price_repository.py StockPriceRepository._on_price_evicted   100% 2 0 0   50% 2 1   75%
repositories / stock_price_repository.py StockPriceRepository.set_current_price   100% 19 0 0   70% 10 3   90%
repositories / stock_price_repository.py StockPriceRepository.get_current_price   100% 15 0 0   70% 10 3   88%
repositories / stock_price_repository.py StockPriceRepository.update_current_price   92% 24 2 0   86% 14 2   89%
repositories / stock_price_repository.py StockPriceRepository.mark_streaming   100% 3 0 0   50% 2 1   80%
repositories / stock_price_repository.py StockPriceRepository.unmark_streaming   100% 3 0 0   50% 2 1   80%
repositories / stock_price_repository.py StockPriceRepository.is_streaming   0% 1 1 0   100% 0 0   0%
repositories / stock_price_repository.py StockPriceRepository.get_cache_stats   100% 1 0 0   100% 0 0   100%
repositories / stock_price_repository.py (no function)   94% 17 1 0   50% 2 1   89%
repositories / stock_repository.py StockRepository.__init__   100% 4 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository._db_path   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository._conn   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository._conn   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository._get_connection   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.set_current_price   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.get_current_price   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.get_stock_data   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.upsert_ohlcv   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.get_ohlcv_summary   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.get_ohlcv_max_trading_days   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.update_realtime_data   100% 2 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.upsert_daily_snapshot   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.get_prices_by_date   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.get_price_history   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.get_latest_trade_date   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.get_count_by_date   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.cleanup_old_data   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.get_latest_daily_snapshot   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.mark_streaming   0% 1 1 0   100% 0 0   0%
repositories / stock_repository.py StockRepository.unmark_streaming   0% 1 1 0   100% 0 0   0%
repositories / stock_repository.py StockRepository.is_streaming   0% 1 1 0   100% 0 0   0%
repositories / stock_repository.py StockRepository.get_cache_stats   92% 12 1 0   50% 4 2   81%
repositories / stock_repository.py StockRepository.close   100% 1 0 0   100% 0 0   100%
repositories / stock_repository.py StockRepository.__del__   50% 2 1 0   50% 2 1   50%
repositories / stock_repository.py (no function)   100% 35 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py _is_weekday   100% 1 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py _strategy_values   100% 1 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py _get_trading_dates   88% 8 1 0   83% 6 1   86%
repositories / virtual_trade_repository.py VirtualTradeRepository.__init__   100% 7 0 0   100% 2 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository._read   100% 5 0 0   100% 2 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository._write   100% 1 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository.log_buy   85% 13 2 0   100% 2 0   87%
repositories / virtual_trade_repository.py VirtualTradeRepository.log_buy_async   100% 1 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository.log_sell   100% 15 0 0   100% 2 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository.log_sell_async   100% 1 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository.log_sell_by_strategy   100% 16 0 0   100% 2 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository.log_sell_by_strategy_async   100% 1 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository._to_json_records   100% 6 0 0   100% 6 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository.calculate_return   100% 1 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository.get_trade_amount   100% 5 0 0   100% 2 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository.get_all_trades   100% 7 0 0   83% 6 1   92%
repositories / virtual_trade_repository.py VirtualTradeRepository.get_solds   100% 2 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository.get_holds   100% 2 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository.get_holds_by_strategy   100% 3 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository.is_holding   100% 3 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository.fix_sell_price   85% 13 2 0   67% 6 2   79%
repositories / virtual_trade_repository.py VirtualTradeRepository.get_summary   92% 12 1 0   75% 4 1   88%
repositories / virtual_trade_repository.py VirtualTradeRepository._price_cache_path   100% 1 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository._load_price_cache   100% 8 0 0   100% 2 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository._save_price_cache   100% 3 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository._fetch_close_prices   100% 28 0 0   86% 14 2   95%
repositories / virtual_trade_repository.py VirtualTradeRepository.backfill_snapshots   91% 123 11 0   70% 46 14   85%
repositories / virtual_trade_repository.py VirtualTradeRepository._find_prev_close   80% 5 1 0   50% 2 1   71%
repositories / virtual_trade_repository.py VirtualTradeRepository._snapshot_path   100% 1 0 0   100% 0 0   100%
repositories / virtual_trade_repository.py VirtualTradeRepository._load_data   100% 16 0 0   83% 6 1   95%
repositories / virtual_trade_repository.py VirtualTradeRepository._save_data   71% 7 2 0   100% 0 0   71%
repositories / virtual_trade_repository.py VirtualTradeRepository.save_daily_snapshot   100% 20 0 0   80% 10 2   93%
repositories / virtual_trade_repository.py VirtualTradeRepository.get_daily_change   93% 15 1 0   67% 6 2   86%
repositories / virtual_trade_repository.py VirtualTradeRepository.get_weekly_change   86% 14 2 0   50% 6 3   75%
repositories / virtual_trade_repository.py VirtualTradeRepository.get_strategy_return_history   100% 7 0 0   75% 4 1   91%
repositories / virtual_trade_repository.py VirtualTradeRepository.get_all_strategies   100% 9 0 0   75% 4 1   92%
repositories / virtual_trade_repository.py (no function)   100% 56 0 0   100% 0 0   100%
scheduler / after_market_loop.py run_after_market_loop   97% 29 1 0   92% 12 1   95%
scheduler / after_market_loop.py _smart_sleep   100% 6 0 0   100% 2 0   100%
scheduler / after_market_loop.py (no function)   100% 7 0 0   100% 0 0   100%
scheduler / background_scheduler.py BackgroundScheduler.__init__   100% 3 0 0   100% 0 0   100%
scheduler / background_scheduler.py BackgroundScheduler.register   100% 4 0 0   100% 2 0   100%
scheduler / background_scheduler.py BackgroundScheduler.unregister   100% 3 0 0   50% 2 1   80%
scheduler / background_scheduler.py BackgroundScheduler.start_all   100% 10 0 0   100% 4 0   100%
scheduler / background_scheduler.py BackgroundScheduler.shutdown   80% 10 2 0   100% 4 0   86%
scheduler / background_scheduler.py BackgroundScheduler.suspend_all   71% 7 2 0   100% 4 0   82%
scheduler / background_scheduler.py BackgroundScheduler.resume_all   71% 7 2 0   100% 4 0   82%
scheduler / background_scheduler.py BackgroundScheduler.get_task   100% 1 0 0   100% 0 0   100%
scheduler / background_scheduler.py BackgroundScheduler.get_all_status   100% 1 0 0   100% 0 0   100%
scheduler / background_scheduler.py (no function)   100% 14 0 0   100% 0 0   100%
scheduler / foreground_scheduler.py ForegroundScheduler.__init__   100% 5 0 0   100% 0 0   100%
scheduler / foreground_scheduler.py ForegroundScheduler.context   100% 12 0 0   100% 4 0   100%
scheduler / foreground_scheduler.py ForegroundScheduler.execute   100% 2 0 0   100% 0 0   100%
scheduler / foreground_scheduler.py ForegroundScheduler.active_count   100% 1 0 0   100% 0 0   100%
scheduler / foreground_scheduler.py ForegroundScheduler.is_active   100% 1 0 0   100% 0 0   100%
scheduler / foreground_scheduler.py (no function)   100% 15 0 0   100% 0 0   100%
scheduler / strategy_scheduler.py StrategyScheduler.__init__   100% 20 0 0   100% 0 0   100%
scheduler / strategy_scheduler.py StrategyScheduler.register   100% 2 0 0   100% 0 0   100%
scheduler / strategy_scheduler.py StrategyScheduler.start   82% 11 2 0   83% 6 1   82%
scheduler / strategy_scheduler.py StrategyScheduler.stop   95% 19 1 0   90% 10 1   93%
scheduler / strategy_scheduler.py StrategyScheduler._loop   74% 62 16 0   63% 30 7   71%
scheduler / strategy_scheduler.py StrategyScheduler._run_strategy   95% 44 2 0   91% 22 2   94%
scheduler / strategy_scheduler.py StrategyScheduler._execute_signal   81% 53 10 0   79% 24 3   81%
scheduler / strategy_scheduler.py StrategyScheduler._force_liquidate_strategy   100% 15 0 0   100% 8 0   100%
scheduler / strategy_scheduler.py StrategyScheduler.start_strategy   100% 10 0 0   83% 6 1   94%
scheduler / strategy_scheduler.py StrategyScheduler.stop_strategy   100% 8 0 0   100% 6 0   100%
scheduler / strategy_scheduler.py StrategyScheduler.update_max_positions   100% 9 0 0   83% 6 1   93%
scheduler / strategy_scheduler.py StrategyScheduler.get_status   100% 7 0 0   100% 2 0   100%
scheduler / strategy_scheduler.py StrategyScheduler.close   100% 1 0 0   100% 0 0   100%
scheduler / strategy_scheduler.py StrategyScheduler._load_signal_history   100% 8 0 0   100% 0 0   100%
scheduler / strategy_scheduler.py StrategyScheduler._save_scheduler_state   100% 8 0 0   100% 0 0   100%
scheduler / strategy_scheduler.py StrategyScheduler.clear_saved_state   100% 5 0 0   100% 0 0   100%
scheduler / strategy_scheduler.py StrategyScheduler.restore_state   88% 26 3 0   83% 12 2   87%
scheduler / strategy_scheduler.py StrategyScheduler._append_signal_db   100% 4 0 0   100% 0 0   100%
scheduler / strategy_scheduler.py StrategyScheduler.get_signal_history   100% 4 0 0   100% 2 0   100%
scheduler / strategy_scheduler.py StrategyScheduler.create_subscriber_queue   100% 3 0 0   100% 0 0   100%
scheduler / strategy_scheduler.py StrategyScheduler.remove_subscriber_queue   100% 2 0 0   100% 2 0   100%
scheduler / strategy_scheduler.py StrategyScheduler._notify_subscribers   80% 10 2 0   100% 2 0   83%
scheduler / strategy_scheduler.py (no function)   100% 66 0 0   100% 0 0   100%
scheduler / strategy_scheduler_store.py StrategySchedulerStore.__init__   100% 6 0 0   100% 0 0   100%
scheduler / strategy_scheduler_store.py StrategySchedulerStore._init_db   100% 7 0 0   100% 0 0   100%
scheduler / strategy_scheduler_store.py StrategySchedulerStore.close   100% 4 0 0   100% 2 0   100%
scheduler / strategy_scheduler_store.py StrategySchedulerStore.append_signal   100% 3 0 0   100% 0 0   100%
scheduler / strategy_scheduler_store.py StrategySchedulerStore.load_signal_history   100% 4 0 0   100% 0 0   100%
scheduler / strategy_scheduler_store.py StrategySchedulerStore.save_state   100% 3 0 0   100% 0 0   100%
scheduler / strategy_scheduler_store.py StrategySchedulerStore.load_state   100% 9 0 0   100% 2 0   100%
scheduler / strategy_scheduler_store.py StrategySchedulerStore.clear_state   100% 3 0 0   100% 0 0   100%
scheduler / strategy_scheduler_store.py StrategySchedulerStore._migrate_legacy_files   100% 2 0 0   100% 0 0   100%
scheduler / strategy_scheduler_store.py StrategySchedulerStore._migrate_csv   84% 25 4 0   100% 6 0   87%
scheduler / strategy_scheduler_store.py StrategySchedulerStore._migrate_json   75% 16 4 0   75% 4 1   75%
scheduler / strategy_scheduler_store.py (no function)   100% 25 0 0   100% 0 0   100%
services / indicator_service.py IndicatorService.__init__   100% 3 0 0   100% 0 0   100%
services / indicator_service.py IndicatorService._safe_float   100% 9 0 0   100% 4 0   100%
services / indicator_service.py IndicatorService._get_ohlcv_data   100% 8 0 0   100% 6 0   100%
services / indicator_service.py IndicatorService._get_with_incremental_cache   87% 31 4 0   75% 16 4   83%
services / indicator_service.py IndicatorService.get_bollinger_bands   100% 3 0 0   100% 2 0   100%
services / indicator_service.py IndicatorService.get_rsi   100% 3 0 0   100% 2 0   100%
services / indicator_service.py IndicatorService.get_moving_average   100% 3 0 0   50% 2 1   80%
services / indicator_service.py IndicatorService.get_relative_strength   95% 21 1 0   75% 8 2   90%
services / indicator_service.py IndicatorService.get_chart_indicators   92% 51 4 0   75% 24 6   87%
services / indicator_service.py IndicatorService._to_dataframe   80% 10 2 0   100% 4 0   86%
services / indicator_service.py IndicatorService._compute_ma   100% 4 0 0   100% 2 0   100%
services / indicator_service.py IndicatorService._compute_bb   100% 6 0 0   100% 0 0   100%
services / indicator_service.py IndicatorService._compute_rsi   100% 8 0 0   100% 0 0   100%
services / indicator_service.py IndicatorService.calc_bb_widths_sync   100% 10 0 0   100% 6 0   100%
services / indicator_service.py IndicatorService.calc_rs_sync   100% 10 0 0   100% 4 0   100%
services / indicator_service.py IndicatorService._calculate_bollinger_bands_full   100% 10 0 0   100% 0 0   100%
services / indicator_service.py IndicatorService._calculate_rsi_series   100% 7 0 0   100% 0 0   100%
services / indicator_service.py IndicatorService._calculate_moving_average_full   100% 7 0 0   100% 0 0   100%
services / indicator_service.py IndicatorService._calculate_indicators_full   100% 23 0 0   100% 6 0   100%
services / indicator_service.py (no function)   97% 36 1 0   50% 2 1   95%
services / market_calendar_service.py MarketCalendarService.__init__   100% 8 0 0   100% 0 0   100%
services / market_calendar_service.py MarketCalendarService.set_broker   100% 1 0 0   100% 0 0   100%
services / market_calendar_service.py MarketCalendarService.get_latest_trading_date   100% 18 0 0   100% 6 0   100%
services / market_calendar_service.py MarketCalendarService._fetch_from_api   85% 20 3 0   75% 8 2   82%
services / market_calendar_service.py MarketCalendarService._sync_calendar_if_needed   89% 19 2 0   90% 10 1   90%
services / market_calendar_service.py MarketCalendarService.is_business_day   71% 7 2 0   50% 4 2   64%
services / market_calendar_service.py MarketCalendarService.is_market_open_now   100% 3 0 0   100% 2 0   100%
services / market_calendar_service.py MarketCalendarService.get_next_open_day   100% 13 0 0   100% 8 0   100%
services / market_calendar_service.py MarketCalendarService.get_next_open_time   100% 9 0 0   100% 2 0   100%
services / market_calendar_service.py MarketCalendarService.wait_until_next_open   67% 6 2 0   50% 2 1   62%
services / market_calendar_service.py MarketCalendarService.get_latest_market_close_time   100% 17 0 0   100% 6 0   100%
services / market_calendar_service.py (no function)   100% 18 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.__init__   100% 9 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_name_by_code   100% 1 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_price_summary   100% 2 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_stock_info_by_code   100% 2 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_current_price   100% 21 0 0   86% 14 2   94%
services / market_data_service.py MarketDataService.get_stock_conclusion   100% 2 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_multi_price   100% 2 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_top_market_cap_stocks_code   62% 8 3 0   50% 4 2   58%
services / market_data_service.py MarketDataService.get_current_upper_limit_stocks   100% 22 0 0   88% 8 1   97%
services / market_data_service.py MarketDataService.get_all_stocks_code   100% 12 0 0   100% 2 0   100%
services / market_data_service.py MarketDataService.get_asking_price   100% 2 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_time_concluded_prices   100% 2 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.inquire_daily_itemchartprice   100% 2 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_top_rise_fall_stocks   100% 3 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_top_volume_stocks   100% 2 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_top_trading_value_stocks   100% 38 0 0   93% 14 1   98%
services / market_data_service.py MarketDataService.get_top_trading_value_stocks._to_dict   100% 1 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_top_trading_value_stocks._get_code   100% 1 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_top_trading_value_stocks._compute_tr_val   78% 9 2 0   100% 2 0   82%
services / market_data_service.py MarketDataService._wrap_snapshot_output   86% 7 1 0   50% 2 1   78%
services / market_data_service.py MarketDataService._is_etf   100% 2 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_etf_info   100% 2 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_financial_ratio   100% 2 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService._normalize_ohlcv_rows   100% 10 0 0   100% 4 0   100%
services / market_data_service.py MarketDataService._normalize_ohlcv_rows._get   100% 3 0 0   75% 4 1   86%
services / market_data_service.py MarketDataService._normalize_ohlcv_rows._to_float   100% 2 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService._normalize_ohlcv_rows._to_int   100% 2 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService._calc_range_by_period   100% 7 0 0   100% 6 0   100%
services / market_data_service.py MarketDataService._fetch_past_daily_ohlcv   100% 20 0 0   100% 8 0   100%
services / market_data_service.py MarketDataService._fetch_today_ohlcv   81% 16 3 0   50% 6 3   73%
services / market_data_service.py MarketDataService._fetch_today_ohlcv._get_val   100% 1 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_ohlcv   88% 52 6 0   71% 34 8   81%
services / market_data_service.py MarketDataService.get_ohlcv_range   100% 5 0 0   100% 2 0   100%
services / market_data_service.py MarketDataService.get_recent_daily_ohlcv   97% 34 1 0   94% 18 1   96%
services / market_data_service.py MarketDataService.get_intraday_minutes_today   100% 1 0 0   100% 0 0   100%
services / market_data_service.py MarketDataService.get_intraday_minutes_by_date   100% 2 0 0   100% 2 0   100%
services / market_data_service.py MarketDataService.get_latest_trading_date   100% 2 0 0   100% 2 0   100%
services / market_data_service.py MarketDataService.get_next_open_day   0% 16 16 0   0% 10 0   0%
services / market_data_service.py (no function)   98% 46 1 0   50% 2 1   96%
services / naver_finance_scraper_service.py NaverFinanceScraperService.__init__   100% 2 0 0   100% 0 0   100%
services / naver_finance_scraper_service.py NaverFinanceScraperService.fetch_yoy_profit_growth   100% 42 0 0   77% 22 5   92%
services / naver_finance_scraper_service.py (no function)   100% 7 0 0   100% 0 0   100%
services / notification_service.py NotificationEvent.to_dict   100% 1 0 0   100% 0 0   100%
services / notification_service.py NotificationService.__init__   100% 5 0 0   100% 0 0   100%
services / notification_service.py NotificationService.emit   83% 24 4 0   100% 6 0   87%
services / notification_service.py NotificationService.create_subscriber_queue   100% 3 0 0   100% 0 0   100%
services / notification_service.py NotificationService.remove_subscriber_queue   100% 2 0 0   100% 2 0   100%
services / notification_service.py NotificationService.get_recent   100% 4 0 0   100% 2 0   100%
services / notification_service.py NotificationService.register_external_handler   100% 1 0 0   100% 0 0   100%
services / notification_service.py NotificationService.external_handler_queue   100% 1 0 0   100% 0 0   100%
services / notification_service.py NotificationService.external_handlers   100% 1 0 0   100% 0 0   100%
services / notification_service.py (no function)   100% 43 0 0   100% 0 0   100%
services / oneil_universe_service.py _chunked   100% 2 0 0   100% 2 0   100%
services / oneil_universe_service.py OneilUniverseService.__init__   100% 17 0 0   100% 0 0   100%
services / oneil_universe_service.py OneilUniverseService.generation_progress   0% 1 1 0   100% 0 0   0%
services / oneil_universe_service.py OneilUniverseService.get_watchlist   93% 15 1 0   83% 6 1   90%
services / oneil_universe_service.py OneilUniverseService.is_market_timing_ok   100% 6 0 0   100% 2 0   100%
services / oneil_universe_service.py OneilUniverseService._build_watchlist   100% 18 0 0   100% 6 0   100%
services / oneil_universe_service.py OneilUniverseService._build_daily_surge_pool   100% 33 0 0   94% 16 1   98%
services / oneil_universe_service.py OneilUniverseService._analyze_candidate   97% 67 2 0   96% 26 1   97%
services / oneil_universe_service.py OneilUniverseService.generate_premium_watchlist   98% 90 2 0   77% 30 7   92%
services / oneil_universe_service.py OneilUniverseService._should_refresh_watchlist   100% 9 0 0   100% 4 0   100%
services / oneil_universe_service.py OneilUniverseService._update_market_timing   100% 3 0 0   100% 2 0   100%
services / oneil_universe_service.py OneilUniverseService._check_etf_ma_rising   100% 24 0 0   100% 10 0   100%
services / oneil_universe_service.py OneilUniverseService._compute_rs_scores   100% 13 0 0   100% 6 0   100%
services / oneil_universe_service.py OneilUniverseService._compute_profit_growth_scores   100% 16 0 0   90% 10 1   96%
services / oneil_universe_service.py OneilUniverseService._compute_smart_money_scores   43% 30 17 0   50% 14 3   45%
services / oneil_universe_service.py OneilUniverseService._compute_total_scores   100% 8 0 0   83% 6 1   93%
services / oneil_universe_service.py OneilUniverseService._save_premium_stocks   88% 8 1 0   100% 0 0   88%
services / oneil_universe_service.py OneilUniverseService._load_premium_stocks   95% 20 1 0   88% 8 1   93%
services / oneil_universe_service.py OneilUniverseService.get_premium_stocks_meta   0% 8 8 0   0% 2 0   0%
services / oneil_universe_service.py OneilUniverseService._calc_turnover_ratio   100% 1 0 0   100% 0 0   100%
services / oneil_universe_service.py OneilUniverseService._extract_op_profit_growth   90% 10 1 0   100% 8 0   94%
services / oneil_universe_service.py (no function)   100% 43 0 0   100% 0 0   100%
services / order_execution_service.py OrderExecutionService.__init__   100% 7 0 0   100% 0 0   100%
services / order_execution_service.py OrderExecutionService._retry_order   100% 18 0 0   75% 8 2   92%
services / order_execution_service.py OrderExecutionService._execute_order_via_broker   57% 7 3 0   100% 0 0   57%
services / order_execution_service.py OrderExecutionService.handle_place_buy_order   90% 20 2 0   83% 12 2   88%
services / order_execution_service.py OrderExecutionService.handle_place_sell_order   95% 20 1 0   92% 12 1   94%
services / order_execution_service.py OrderExecutionService.handle_buy_stock   100% 8 0 0   100% 0 0   100%
services / order_execution_service.py OrderExecutionService.handle_sell_stock   100% 8 0 0   100% 0 0   100%
services / order_execution_service.py OrderExecutionService.handle_realtime_price_quote_stream   100% 14 0 0   100% 2 0   100%
services / order_execution_service.py OrderExecutionService.handle_realtime_price_quote_stream.realtime_data_display_callback   100% 25 0 0   100% 8 0   100%
services / order_execution_service.py (no function)   100% 19 0 0   100% 0 0   100%
services / price_subscription_service.py PriceSubscriptionService.__init__   100% 8 0 0   100% 0 0   100%
services / price_subscription_service.py PriceSubscriptionService.add_subscription   100% 2 0 0   100% 0 0   100%
services / price_subscription_service.py PriceSubscriptionService.remove_subscription   100% 5 0 0   100% 4 0   100%
services / price_subscription_service.py PriceSubscriptionService.remove_category   100% 6 0 0   75% 4 1   90%
services / price_subscription_service.py PriceSubscriptionService.sync_subscriptions   100% 9 0 0   83% 6 1   93%
services / price_subscription_service.py PriceSubscriptionService.is_streaming   100% 1 0 0   100% 0 0   100%
services / price_subscription_service.py PriceSubscriptionService.get_status   100% 5 0 0   100% 2 0   100%
services / price_subscription_service.py PriceSubscriptionService._rebalance   100% 18 0 0   90% 10 1   96%
services / price_subscription_service.py PriceSubscriptionService._rebalance._best_priority   100% 1 0 0   100% 0 0   100%
services / price_subscription_service.py PriceSubscriptionService._do_subscribe   83% 12 2 0   75% 4 1   81%
services / price_subscription_service.py PriceSubscriptionService._do_unsubscribe   67% 9 3 0   50% 2 1   64%
services / price_subscription_service.py (no function)   88% 25 3 0   50% 2 1   85%
services / program_trading_stream_service.py ProgramTradingStreamService.__init__   100% 16 0 0   100% 0 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService._get_base_dir   100% 1 0 0   100% 0 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService._init_db   100% 20 0 0   100% 0 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService._get_connection   100% 7 0 0   100% 0 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService._load_pt_history   100% 15 0 0   100% 4 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService._load_subscribed_codes   100% 9 0 0   100% 2 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService._safe_int   50% 4 2 0   100% 0 0   50%
services / program_trading_stream_service.py ProgramTradingStreamService._safe_float   50% 4 2 0   100% 0 0   50%
services / program_trading_stream_service.py ProgramTradingStreamService.on_data_received   94% 36 2 0   100% 6 0   95%
services / program_trading_stream_service.py ProgramTradingStreamService._bulk_insert_to_db   80% 10 2 0   100% 0 0   80%
services / program_trading_stream_service.py ProgramTradingStreamService._flush_write_buffer   86% 7 1 0   50% 2 1   78%
services / program_trading_stream_service.py ProgramTradingStreamService.flush_write_buffer_sync   100% 6 0 0   100% 2 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService._flush_loop   0% 6 6 0   100% 0 0   0%
services / program_trading_stream_service.py ProgramTradingStreamService.create_subscriber_queue   100% 3 0 0   100% 0 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService.remove_subscriber_queue   100% 2 0 0   100% 2 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService.get_history_data   100% 1 0 0   100% 0 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService.add_subscribed_code   100% 6 0 0   100% 0 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService.remove_subscribed_code   100% 6 0 0   100% 0 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService.clear_subscribed_codes   100% 6 0 0   100% 0 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService.is_subscribed   100% 1 0 0   100% 0 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService.get_subscribed_codes   100% 1 0 0   100% 0 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService.save_snapshot   100% 9 0 0   100% 0 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService.load_snapshot   100% 11 0 0   100% 2 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService._cleanup_old_data   80% 10 2 0   100% 2 0   83%
services / program_trading_stream_service.py ProgramTradingStreamService._cleanup_old_files   78% 9 2 0   100% 4 0   85%
services / program_trading_stream_service.py ProgramTradingStreamService.start_background_tasks   100% 4 0 0   100% 0 0   100%
services / program_trading_stream_service.py ProgramTradingStreamService.shutdown   53% 15 7 0   75% 4 1   58%
services / program_trading_stream_service.py ProgramTradingStreamService.inspect_db_status   100% 23 0 0   62% 8 3   90%
services / program_trading_stream_service.py (no function)   100% 45 0 0   100% 0 0   100%
services / stock_query_service.py StockQueryService.__init__   100% 8 0 0   100% 0 0   100%
services / stock_query_service.py StockQueryService._get_sign_from_code   100% 5 0 0   100% 4 0   100%
services / stock_query_service.py StockQueryService.get_current_price   100% 1 0 0   100% 0 0   100%
services / stock_query_service.py StockQueryService.get_multi_price   100% 1 0 0   100% 0 0   100%
services / stock_query_service.py StockQueryService.get_top_trading_value_stocks   100% 1 0 0   100% 0 0   100%
services / stock_query_service.py StockQueryService.get_top_rise_fall_stocks   100% 1 0 0   100% 0 0   100%
services / stock_query_service.py StockQueryService.get_top_volume_stocks   100% 1 0 0   100% 0 0   100%
services / stock_query_service.py StockQueryService.get_financial_ratio   100% 1 0 0   100% 0 0   100%
services / stock_query_service.py StockQueryService.get_stock_conclusion   100% 1 0 0   100% 0 0   100%
services / stock_query_service.py StockQueryService.handle_get_current_stock_price   100% 32 0 0   100% 10 0   100%
services / stock_query_service.py StockQueryService.handle_get_account_balance   100% 7 0 0   100% 4 0   100%
services / stock_query_service.py StockQueryService.handle_get_top_market_cap_stocks_code   100% 34 0 0   100% 12 0   100%
services / stock_query_service.py StockQueryService.get_stock_change_rate   100% 22 0 0   83% 6 1   96%
services / stock_query_service.py StockQueryService.get_open_vs_current   100% 24 0 0   100% 6 0   100%
services / stock_query_service.py StockQueryService.handle_upper_limit_stocks   100% 10 0 0   100% 2 0   100%
services / stock_query_service.py StockQueryService.handle_current_upper_limit_stocks   100% 13 0 0   100% 4 0   100%
services / stock_query_service.py StockQueryService.handle_get_asking_price   93% 15 1 0   83% 6 1   90%
services / stock_query_service.py StockQueryService.handle_get_time_concluded_prices   100% 15 0 0   100% 6 0   100%
services / stock_query_service.py StockQueryService.handle_get_top_stocks   95% 37 2 0   88% 16 2   92%
services / stock_query_service.py StockQueryService.handle_get_etf_info   100% 10 0 0   100% 2 0   100%
services / stock_query_service.py StockQueryService.get_ohlcv   100% 2 0 0   100% 0 0   100%
services / stock_query_service.py StockQueryService.get_ohlcv_range   100% 1 0 0   100% 0 0   100%
services / stock_query_service.py StockQueryService.get_ohlcv_with_indicators   88% 25 3 0   100% 6 0   90%
services / stock_query_service.py StockQueryService.get_recent_daily_ohlcv   100% 8 0 0   100% 2 0   100%
services / stock_query_service.py StockQueryService.get_investor_trade_daily_multi   0% 3 3 0   0% 2 0   0%
services / stock_query_service.py StockQueryService.get_intraday_minutes_today   100% 1 0 0   100% 0 0   100%
services / stock_query_service.py StockQueryService.get_intraday_minutes_by_date   100% 1 0 0   100% 0 0   100%
services / stock_query_service.py StockQueryService.get_day_intraday_minutes_list   97% 60 2 0   87% 30 4   93%
services / stock_query_service.py StockQueryService.get_day_intraday_minutes_list._fetch_batch   100% 4 0 0   100% 2 0   100%
services / stock_query_service.py StockQueryService.get_day_intraday_minutes_list._extract_rows   86% 7 1 0   75% 4 1   82%
services / stock_query_service.py (no function)   100% 36 0 0   100% 0 0   100%
services / stock_sync_service.py _save_metadata   100% 3 0 0   100% 0 0   100%
services / stock_sync_service.py _load_metadata   100% 4 0 0   100% 2 0   100%
services / stock_sync_service.py _needs_update   100% 5 0 0   100% 2 0   100%
services / stock_sync_service.py save_stock_code_list   100% 1 0 0   100% 0 0   100%
services / stock_sync_service.py save_stock_code_list_fdr   88% 25 3 0   100% 2 0   89%
services / stock_sync_service.py load_stock_code_list   100% 4 0 0   100% 0 0   100%
services / stock_sync_service.py (no function)   100% 19 0 0   100% 0 0   100%
services / streaming_service.py StreamingService.__init__   100% 9 0 0   100% 0 0   100%
services / streaming_service.py StreamingService.connect_websocket   83% 6 1 0   75% 4 1   80%
services / streaming_service.py StreamingService.disconnect_websocket   75% 4 1 0   50% 2 1   67%
services / streaming_service.py StreamingService.subscribe_program_trading   100% 1 0 0   100% 0 0   100%
services / streaming_service.py StreamingService.unsubscribe_program_trading   100% 1 0 0   100% 0 0   100%
services / streaming_service.py StreamingService.subscribe_realtime_price   100% 1 0 0   100% 0 0   100%
services / streaming_service.py StreamingService.unsubscribe_realtime_price   100% 1 0 0   100% 0 0   100%
services / streaming_service.py StreamingService.subscribe_unified_price   100% 1 0 0   100% 0 0   100%
services / streaming_service.py StreamingService.unsubscribe_unified_price   0% 1 1 0   100% 0 0   0%
services / streaming_service.py StreamingService.handle_program_trading_stream   100% 6 0 0   100% 0 0   100%
services / streaming_service.py StreamingService.handle_realtime_stream   95% 21 1 0   71% 14 4   86%
services / streaming_service.py StreamingService.dispatch_realtime_message   69% 52 16 0   56% 18 6   66%
services / streaming_service.py StreamingService.get_cached_realtime_price   100% 1 0 0   100% 0 0   100%
services / streaming_service.py StreamingService.handle_get_program_trading_history   100% 6 0 0   100% 0 0   100%
services / streaming_service.py (no function)   87% 23 3 0   50% 2 1   84%
services / telegram_notifier.py TelegramNotifier.__init__   100% 4 0 0   100% 0 0   100%
services / telegram_notifier.py TelegramNotifier.handle_event   100% 25 0 0   93% 14 1   97%
services / telegram_notifier.py TelegramReporter.__init__   100% 3 0 0   100% 0 0   100%
services / telegram_notifier.py TelegramReporter._send_message   100% 14 0 0   100% 4 0   100%
services / telegram_notifier.py TelegramReporter._format_ranking_table   94% 53 3 0   89% 18 2   93%
services / telegram_notifier.py TelegramReporter.send_ranking_report   93% 46 3 0   86% 14 2   92%
services / telegram_notifier.py (no function)   100% 14 0 0   100% 0 0   100%
services / virtual_trade_service.py _is_weekday   100% 1 0 0   100% 0 0   100%
services / virtual_trade_service.py _strategy_values   100% 1 0 0   100% 0 0   100%
services / virtual_trade_service.py _get_trading_dates   100% 7 0 0   67% 6 2   85%
services / virtual_trade_service.py VirtualTradeService.__init__   100% 2 0 0   100% 0 0   100%
services / virtual_trade_service.py VirtualTradeService.calculate_return   100% 1 0 0   100% 0 0   100%
services / virtual_trade_service.py VirtualTradeService.get_trade_amount   100% 4 0 0   100% 2 0   100%
services / virtual_trade_service.py VirtualTradeService.get_all_trades   100% 7 0 0   83% 6 1   92%
services / virtual_trade_service.py VirtualTradeService.get_summary   100% 12 0 0   100% 4 0   100%
services / virtual_trade_service.py VirtualTradeService.get_daily_change   100% 13 0 0   67% 6 2   89%
services / virtual_trade_service.py VirtualTradeService.get_weekly_change   100% 12 0 0   50% 6 3   83%
services / virtual_trade_service.py VirtualTradeService.get_strategy_return_history   100% 7 0 0   50% 4 2   82%
services / virtual_trade_service.py VirtualTradeService.get_all_strategies   100% 8 0 0   50% 2 1   90%
services / virtual_trade_service.py VirtualTradeService.log_buy   100% 1 0 0   100% 2 0   100%
services / virtual_trade_service.py VirtualTradeService.log_buy_async   100% 1 0 0   100% 2 0   100%
services / virtual_trade_service.py VirtualTradeService.log_sell   100% 1 0 0   100% 2 0   100%
services / virtual_trade_service.py VirtualTradeService.log_sell_async   100% 1 0 0   100% 2 0   100%
services / virtual_trade_service.py VirtualTradeService.log_sell_by_strategy   100% 1 0 0   50% 2 1   67%
services / virtual_trade_service.py VirtualTradeService.log_sell_by_strategy_async   100% 1 0 0   50% 2 1   67%
services / virtual_trade_service.py VirtualTradeService.get_holds   100% 1 0 0   100% 2 0   100%
services / virtual_trade_service.py VirtualTradeService.get_solds   100% 1 0 0   50% 2 1   67%
services / virtual_trade_service.py VirtualTradeService.get_holds_by_strategy   100% 1 0 0   100% 2 0   100%
services / virtual_trade_service.py VirtualTradeService.is_holding   100% 1 0 0   50% 2 1   67%
services / virtual_trade_service.py VirtualTradeService.fix_sell_price   100% 1 0 0   50% 2 1   67%
services / virtual_trade_service.py VirtualTradeService.backfill_snapshots   100% 1 0 0   100% 2 0   100%
services / virtual_trade_service.py VirtualTradeService.save_daily_snapshot   100% 1 0 0   50% 2 1   67%
services / virtual_trade_service.py VirtualTradeService._load_data   100% 1 0 0   50% 2 1   67%
services / virtual_trade_service.py VirtualTradeService._save_data   100% 1 0 0   50% 2 1   67%
services / virtual_trade_service.py (no function)   100% 24 0 0   100% 0 0   100%
strategies / GapUpPullback_strategy.py GapUpPullbackStrategy.__init__   100% 8 0 0   100% 2 0   100%
strategies / GapUpPullback_strategy.py GapUpPullbackStrategy.run   100% 23 0 0   100% 6 0   100%
strategies / GapUpPullback_strategy.py (no function)   100% 7 0 0   100% 0 0   100%
strategies / backtest_data_provider.py BacktestDataProvider.__init__   100% 3 0 0   100% 0 0   100%
strategies / backtest_data_provider.py BacktestDataProvider.mock_price_lookup   90% 10 1 0   50% 2 1   83%
strategies / backtest_data_provider.py BacktestDataProvider.realistic_price_lookup   100% 26 0 0   100% 12 0   100%
strategies / backtest_data_provider.py (no function)   100% 7 0 0   100% 0 0   100%
strategies / base_strategy_config.py (no function)   100% 4 0 0   100% 0 0   100%
strategies / first_pullback_strategy.py FirstPullbackStrategy.__init__   89% 9 1 0   50% 2 1   82%
strategies / first_pullback_strategy.py FirstPullbackStrategy.name   100% 1 0 0   100% 0 0   100%
strategies / first_pullback_strategy.py FirstPullbackStrategy.scan   100% 26 0 0   100% 14 0   100%
strategies / first_pullback_strategy.py FirstPullbackStrategy._check_entry   85% 81 12 0   72% 32 9   81%
strategies / first_pullback_strategy.py FirstPullbackStrategy._check_surge_history   100% 22 0 0   86% 14 2   94%
strategies / first_pullback_strategy.py FirstPullbackStrategy._check_ma_uptrend   94% 18 1 0   90% 10 1   93%
strategies / first_pullback_strategy.py FirstPullbackStrategy._check_pullback_to_ma   100% 3 0 0   100% 0 0   100%
strategies / first_pullback_strategy.py FirstPullbackStrategy._check_volume_dryup   88% 8 1 0   75% 4 1   83%
strategies / first_pullback_strategy.py FirstPullbackStrategy._check_bullish_reversal   100% 5 0 0   100% 4 0   100%
strategies / first_pullback_strategy.py FirstPullbackStrategy.check_exits   95% 58 3 0   87% 30 4   92%
strategies / first_pullback_strategy.py FirstPullbackStrategy._calculate_qty   100% 4 0 0   100% 2 0   100%
strategies / first_pullback_strategy.py FirstPullbackStrategy._get_market_progress_ratio   100% 6 0 0   100% 0 0   100%
strategies / first_pullback_strategy.py FirstPullbackStrategy._load_state   100% 8 0 0   100% 4 0   100%
strategies / first_pullback_strategy.py FirstPullbackStrategy._save_state   100% 7 0 0   100% 0 0   100%
strategies / first_pullback_strategy.py (no function)   100% 32 0 0   100% 0 0   100%
strategies / first_pullback_types.py (no function)   100% 31 0 0   100% 0 0   100%
strategies / high_tight_flag_strategy.py HighTightFlagStrategy.__init__   89% 9 1 0   50% 2 1   82%
strategies / high_tight_flag_strategy.py HighTightFlagStrategy.name   100% 1 0 0   100% 0 0   100%
strategies / high_tight_flag_strategy.py HighTightFlagStrategy.scan   96% 26 1 0   93% 14 1   95%
strategies / high_tight_flag_strategy.py HighTightFlagStrategy._check_htf_setup   100% 9 0 0   100% 4 0   100%
strategies / high_tight_flag_strategy.py HighTightFlagStrategy._detect_pole_and_flag   92% 36 3 0   81% 16 3   88%
strategies / high_tight_flag_strategy.py HighTightFlagStrategy._check_breakout   96% 49 2 0   90% 20 2   94%
strategies / high_tight_flag_strategy.py HighTightFlagStrategy.check_exits   98% 41 1 0   96% 26 1   97%
strategies / high_tight_flag_strategy.py HighTightFlagStrategy._check_trailing_ma_stop   92% 12 1 0   83% 6 1   89%
strategies / high_tight_flag_strategy.py HighTightFlagStrategy._calculate_qty   100% 4 0 0   100% 2 0   100%
strategies / high_tight_flag_strategy.py HighTightFlagStrategy._get_market_progress_ratio   100% 6 0 0   100% 0 0   100%
strategies / high_tight_flag_strategy.py HighTightFlagStrategy._load_state   75% 8 2 0   100% 4 0   83%
strategies / high_tight_flag_strategy.py HighTightFlagStrategy._save_state   71% 7 2 0   100% 0 0   71%
strategies / high_tight_flag_strategy.py (no function)   100% 29 0 0   100% 0 0   100%
strategies / momentum_strategy.py MomentumStrategy.__init__   100% 7 0 0   100% 0 0   100%
strategies / momentum_strategy.py MomentumStrategy.run   89% 53 6 0   85% 20 3   88%
strategies / momentum_strategy.py (no function)   100% 8 0 0   100% 0 0   100%
strategies / oneil_common_types.py (no function)   100% 125 0 0   100% 0 0   100%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy.__init__   100% 9 0 0   100% 2 0   100%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy.name   100% 1 0 0   100% 0 0   100%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy.scan   100% 26 0 0   100% 14 0   100%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy._check_entry   88% 85 10 0   88% 32 4   88%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy._check_pocket_pivot   98% 41 1 0   95% 20 1   97%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy._check_bgu   96% 23 1 0   92% 12 1   94%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy._check_smart_money   88% 16 2 0   90% 10 1   88%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy.check_exits   98% 66 1 0   95% 42 2   97%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy._check_hard_stop   100% 7 0 0   83% 6 1   92%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy._check_pp_stop_loss   100% 11 0 0   100% 6 0   100%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy._check_bgu_stop_loss   100% 3 0 0   100% 2 0   100%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy._check_partial_profit   100% 11 0 0   100% 4 0   100%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy._check_7week_hold   93% 14 1 0   88% 8 1   91%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy._calculate_qty   100% 4 0 0   100% 2 0   100%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy._get_market_progress_ratio   100% 6 0 0   100% 0 0   100%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy._load_state   100% 8 0 0   100% 4 0   100%
strategies / oneil_pocket_pivot_strategy.py OneilPocketPivotStrategy._save_state   100% 7 0 0   100% 0 0   100%
strategies / oneil_pocket_pivot_strategy.py (no function)   100% 35 0 0   100% 0 0   100%
strategies / oneil_squeeze_breakout_strategy.py OneilSqueezeBreakoutStrategy.__init__   100% 9 0 0   100% 2 0   100%
strategies / oneil_squeeze_breakout_strategy.py OneilSqueezeBreakoutStrategy.name   100% 1 0 0   100% 0 0   100%
strategies / oneil_squeeze_breakout_strategy.py OneilSqueezeBreakoutStrategy.scan   100% 26 0 0   100% 14 0   100%
strategies / oneil_squeeze_breakout_strategy.py OneilSqueezeBreakoutStrategy._check_breakout   95% 60 3 0   82% 28 5   91%
strategies / oneil_squeeze_breakout_strategy.py OneilSqueezeBreakoutStrategy._check_trend_break   88% 17 2 0   67% 6 2   83%
strategies / oneil_squeeze_breakout_strategy.py OneilSqueezeBreakoutStrategy.check_exits   90% 49 5 0   79% 34 7   86%
strategies / oneil_squeeze_breakout_strategy.py OneilSqueezeBreakoutStrategy._check_time_stop   96% 23 1 0   94% 16 1   95%
strategies / oneil_squeeze_breakout_strategy.py OneilSqueezeBreakoutStrategy._calculate_qty   100% 3 0 0   100% 2 0   100%
strategies / oneil_squeeze_breakout_strategy.py OneilSqueezeBreakoutStrategy._get_market_progress_ratio   100% 6 0 0   100% 0 0   100%
strategies / oneil_squeeze_breakout_strategy.py OneilSqueezeBreakoutStrategy._load_state   86% 7 1 0   100% 4 0   91%
strategies / oneil_squeeze_breakout_strategy.py OneilSqueezeBreakoutStrategy._save_state   83% 6 1 0   100% 0 0   83%
strategies / oneil_squeeze_breakout_strategy.py (no function)   100% 28 0 0   100% 0 0   100%
strategies / program_buy_follow_strategy.py ProgramBuyFollowStrategy.__init__   100% 8 0 0   100% 2 0   100%
strategies / program_buy_follow_strategy.py ProgramBuyFollowStrategy.name   100% 1 0 0   100% 0 0   100%
strategies / program_buy_follow_strategy.py ProgramBuyFollowStrategy.scan   95% 60 3 0   95% 20 1   95%
strategies / program_buy_follow_strategy.py ProgramBuyFollowStrategy.check_exits   91% 53 5 0   75% 20 5   86%
strategies / program_buy_follow_strategy.py ProgramBuyFollowStrategy._extract_output   100% 4 0 0   100% 2 0   100%
strategies / program_buy_follow_strategy.py ProgramBuyFollowStrategy._get_int_field   100% 7 0 0   100% 2 0   100%
strategies / program_buy_follow_strategy.py ProgramBuyFollowStrategy._get_str_field   100% 3 0 0   100% 2 0   100%
strategies / program_buy_follow_strategy.py (no function)   100% 29 0 0   100% 0 0   100%
strategies / strategy_executor.py StrategyExecutor.__init__   100% 1 0 0   100% 0 0   100%
strategies / strategy_executor.py StrategyExecutor.execute   100% 1 0 0   100% 0 0   100%
strategies / strategy_executor.py (no function)   100% 5 0 0   100% 0 0   100%
strategies / traditional_volume_breakout_strategy.py TraditionalVolumeBreakoutStrategy.__init__   100% 11 0 0   100% 2 0   100%
strategies / traditional_volume_breakout_strategy.py TraditionalVolumeBreakoutStrategy.name   100% 1 0 0   100% 0 0   100%
strategies / traditional_volume_breakout_strategy.py TraditionalVolumeBreakoutStrategy.scan   96% 24 1 0   93% 14 1   95%
strategies / traditional_volume_breakout_strategy.py TraditionalVolumeBreakoutStrategy._check_breakout_for_code   100% 31 0 0   100% 8 0   100%
strategies / traditional_volume_breakout_strategy.py TraditionalVolumeBreakoutStrategy.check_exits   100% 66 0 0   97% 30 1   99%
strategies / traditional_volume_breakout_strategy.py TraditionalVolumeBreakoutStrategy._build_watchlist   100% 26 0 0   100% 10 0   100%
strategies / traditional_volume_breakout_strategy.py TraditionalVolumeBreakoutStrategy._analyze_ohlcv   93% 29 2 0   83% 12 2   90%
strategies / traditional_volume_breakout_strategy.py TraditionalVolumeBreakoutStrategy._load_state   100% 11 0 0   100% 6 0   100%
strategies / traditional_volume_breakout_strategy.py TraditionalVolumeBreakoutStrategy._save_state   100% 7 0 0   100% 0 0   100%
strategies / traditional_volume_breakout_strategy.py TraditionalVolumeBreakoutStrategy._calculate_qty   100% 7 0 0   100% 4 0   100%
strategies / traditional_volume_breakout_strategy.py TraditionalVolumeBreakoutStrategy._get_market_progress_ratio   100% 8 0 0   100% 2 0   100%
strategies / traditional_volume_breakout_strategy.py TraditionalVolumeBreakoutStrategy._get_current_ma   100% 11 0 0   100% 4 0   100%
strategies / traditional_volume_breakout_strategy.py (no function)   100% 54 0 0   100% 0 0   100%
strategies / volume_breakout_live_strategy.py VolumeBreakoutLiveStrategy.__init__   100% 8 0 0   100% 2 0   100%
strategies / volume_breakout_live_strategy.py VolumeBreakoutLiveStrategy.name   100% 1 0 0   100% 0 0   100%
strategies / volume_breakout_live_strategy.py VolumeBreakoutLiveStrategy.scan   82% 49 9 0   81% 16 3   82%
strategies / volume_breakout_live_strategy.py VolumeBreakoutLiveStrategy.check_exits   98% 45 1 0   94% 16 1   97%
strategies / volume_breakout_live_strategy.py (no function)   100% 15 0 0   100% 0 0   100%
strategies / volume_breakout_strategy.py VolumeBreakoutStrategy.__init__   100% 4 0 0   100% 0 0   100%
strategies / volume_breakout_strategy.py VolumeBreakoutStrategy._get_first_available   80% 5 1 0   50% 4 2   67%
strategies / volume_breakout_strategy.py VolumeBreakoutStrategy._sort_key   100% 3 0 0   100% 0 0   100%
strategies / volume_breakout_strategy.py VolumeBreakoutStrategy.backtest_open_threshold_intraday   94% 54 3 0   86% 22 3   92%
strategies / volume_breakout_strategy.py VolumeBreakoutStrategy.backtest_open_threshold_intraday.default_price_getter   100% 2 0 0   100% 0 0   100%
strategies / volume_breakout_strategy.py VolumeBreakoutStrategy.backtest_open_threshold_intraday.fmt_ts   100% 3 0 0   100% 0 0   100%
strategies / volume_breakout_strategy.py (no function)   100% 20 0 0   100% 0 0   100%
task / background / after_market / after_market_task_base.py _load_after_market_delays   100% 10 0 0   100% 2 0   100%
task / background / after_market / after_market_task_base.py AfterMarketTask.__init__   100% 5 0 0   100% 0 0   100%
task / background / after_market / after_market_task_base.py AfterMarketTask.state   100% 1 0 0   100% 0 0   100%
task / background / after_market / after_market_task_base.py AfterMarketTask.priority   100% 1 0 0   100% 0 0   100%
task / background / after_market / after_market_task_base.py AfterMarketTask.stop   100% 9 0 0   83% 6 1   93%
task / background / after_market / after_market_task_base.py AfterMarketTask.suspend   100% 2 0 0   100% 2 0   100%
task / background / after_market / after_market_task_base.py AfterMarketTask.resume   100% 2 0 0   100% 2 0   100%
task / background / after_market / after_market_task_base.py AfterMarketTask._scheduler_label   100% 0 0 0   100% 0 0   100%
task / background / after_market / after_market_task_base.py AfterMarketTask._after_market_scheduler   100% 2 0 0   100% 0 0   100%
task / background / after_market / after_market_task_base.py AfterMarketTask._on_market_closed   100% 0 0 0   100% 0 0   100%
task / background / after_market / after_market_task_base.py (no function)   94% 35 2 0   50% 2 1   92%
task / background / after_market / cache_warmup_task.py _chunked   100% 2 0 0   100% 2 0   100%
task / background / after_market / cache_warmup_task.py CacheWarmupTask.__init__   100% 10 0 0   100% 0 0   100%
task / background / after_market / cache_warmup_task.py CacheWarmupTask.task_name   100% 1 0 0   100% 0 0   100%
task / background / after_market / cache_warmup_task.py CacheWarmupTask._scheduler_label   0% 1 1 0   100% 0 0   0%
task / background / after_market / cache_warmup_task.py CacheWarmupTask.start   100% 6 0 0   100% 2 0   100%
task / background / after_market / cache_warmup_task.py CacheWarmupTask.suspend   100% 4 0 0   100% 2 0   100%
task / background / after_market / cache_warmup_task.py CacheWarmupTask.resume   100% 4 0 0   100% 2 0   100%
task / background / after_market / cache_warmup_task.py CacheWarmupTask.get_progress   100% 1 0 0   100% 0 0   100%
task / background / after_market / cache_warmup_task.py CacheWarmupTask._on_market_closed   100% 4 0 0   100% 2 0   100%
task / background / after_market / cache_warmup_task.py CacheWarmupTask.force_warmup   100% 8 0 0   100% 4 0   100%
task / background / after_market / cache_warmup_task.py CacheWarmupTask._run_warmup   93% 44 3 0   81% 16 3   90%
task / background / after_market / cache_warmup_task.py CacheWarmupTask._warmup_code   100% 10 0 0   100% 2 0   100%
task / background / after_market / cache_warmup_task.py CacheWarmupTask._collect_target_codes   100% 7 0 0   100% 0 0   100%
task / background / after_market / cache_warmup_task.py CacheWarmupTask._get_watchlist_codes   100% 8 0 0   100% 2 0   100%
task / background / after_market / cache_warmup_task.py CacheWarmupTask._get_holdings_codes   100% 14 0 0   100% 6 0   100%
task / background / after_market / cache_warmup_task.py (no function)   87% 38 5 0   50% 2 1   85%
task / background / after_market / daily_price_collector_task.py _chunked   100% 2 0 0   100% 2 0   100%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask.__init__   100% 12 0 0   100% 0 0   100%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask.task_name   100% 1 0 0   100% 0 0   100%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._scheduler_label   0% 1 1 0   100% 0 0   0%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask.start   0% 6 6 0   0% 2 0   0%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask.suspend   0% 4 4 0   0% 2 0   0%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask.resume   0% 4 4 0   0% 2 0   0%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._on_market_closed   0% 2 2 0   0% 2 0   0%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._collect_all_prices   80% 30 6 0   75% 12 3   79%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._verify_crawler_data   77% 43 10 0   71% 14 2   75%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._verify_crawler_data._get_api_val   100% 2 0 0   100% 0 0   100%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._verify_crawler_data._get_crawled_val   75% 4 1 0   50% 4 2   62%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._try_collect_via_fdr   67% 12 4 0   50% 2 1   64%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._try_collect_via_fdr._fetch_fdr_sync   0% 5 5 0   0% 2 0   0%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._collect_via_broker_api   94% 33 2 0   61% 18 7   82%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._finish_collection   100% 5 0 0   50% 2 1   86%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._fetch_with_retry   0% 15 15 0   0% 6 0   0%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._extract_broker_api_record   67% 15 5 0   50% 6 3   62%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._extract_broker_api_record._safe_int   50% 4 2 0   100% 0 0   50%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._extract_broker_api_record._safe_float   50% 4 2 0   100% 0 0   50%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._load_all_stocks   100% 6 0 0   100% 0 0   100%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask.get_progress   0% 1 1 0   100% 0 0   0%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask.force_collect   0% 2 2 0   100% 0 0   0%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._format_dataframe_to_records   88% 40 5 0   83% 12 2   87%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._format_dataframe_to_records._get_val   100% 4 0 0   100% 4 0   100%
task / background / after_market / daily_price_collector_task.py DailyPriceCollectorTask._save_bulk_to_db_with_progress   92% 12 1 0   75% 4 1   88%
task / background / after_market / daily_price_collector_task.py (no function)   98% 46 1 0   50% 2 1   96%
task / background / after_market / ohlcv_update_task.py _chunked   100% 2 0 0   100% 2 0   100%
task / background / after_market / ohlcv_update_task.py OhlcvUpdateTask.__init__   100% 11 0 0   100% 0 0   100%
task / background / after_market / ohlcv_update_task.py OhlcvUpdateTask.task_name   100% 1 0 0   100% 0 0   100%
task / background / after_market / ohlcv_update_task.py OhlcvUpdateTask._scheduler_label   0% 1 1 0   100% 0 0   0%
task / background / after_market / ohlcv_update_task.py OhlcvUpdateTask.start   100% 6 0 0   100% 2 0   100%
task / background / after_market / ohlcv_update_task.py OhlcvUpdateTask.suspend   100% 4 0 0   100% 2 0   100%
task / background / after_market / ohlcv_update_task.py OhlcvUpdateTask.resume   100% 4 0 0   100% 2 0   100%
task / background / after_market / ohlcv_update_task.py OhlcvUpdateTask._on_market_closed   100% 2 0 0   100% 2 0   100%
task / background / after_market / ohlcv_update_task.py OhlcvUpdateTask.force_collect   100% 2 0 0   100% 0 0   100%
task / background / after_market / ohlcv_update_task.py OhlcvUpdateTask._collect_all_ohlcv   98% 59 1 0   92% 26 2   96%
task / background / after_market / ohlcv_update_task.py OhlcvUpdateTask._update_stock_ohlcv   93% 15 1 0   100% 6 0   95%
task / background / after_market / ohlcv_update_task.py OhlcvUpdateTask._load_all_stocks   94% 16 1 0   92% 12 1   93%
task / background / after_market / ohlcv_update_task.py OhlcvUpdateTask.get_progress   100% 1 0 0   100% 0 0   100%
task / background / after_market / ohlcv_update_task.py (no function)   97% 35 1 0   50% 2 1   95%
task / background / after_market / premium_watchlist_generator_task.py PremiumWatchlistGeneratorTask.__init__   100% 6 0 0   100% 0 0   100%
task / background / after_market / premium_watchlist_generator_task.py PremiumWatchlistGeneratorTask.task_name   100% 1 0 0   100% 0 0   100%
task / background / after_market / premium_watchlist_generator_task.py PremiumWatchlistGeneratorTask._scheduler_label   100% 1 0 0   100% 0 0   100%
task / background / after_market / premium_watchlist_generator_task.py PremiumWatchlistGeneratorTask.start   100% 5 0 0   100% 2 0   100%
task / background / after_market / premium_watchlist_generator_task.py PremiumWatchlistGeneratorTask.get_progress   100% 4 0 0   100% 0 0   100%
task / background / after_market / premium_watchlist_generator_task.py PremiumWatchlistGeneratorTask._on_market_closed   100% 13 0 0   100% 8 0   100%
task / background / after_market / premium_watchlist_generator_task.py PremiumWatchlistGeneratorTask._run_generation   100% 22 0 0   100% 6 0   100%
task / background / after_market / premium_watchlist_generator_task.py PremiumWatchlistGeneratorTask.force_generate   100% 8 0 0   100% 4 0   100%
task / background / after_market / premium_watchlist_generator_task.py (no function)   86% 22 3 0   50% 2 1   83%
task / background / after_market / ranking_task.py _chunked   100% 2 0 0   100% 2 0   100%
task / background / after_market / ranking_task.py RankingTask.__init__   100% 26 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask.task_name   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask._scheduler_label   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask.start   0% 6 6 0   0% 2 0   0%
task / background / after_market / ranking_task.py RankingTask.suspend   0% 4 4 0   0% 2 0   0%
task / background / after_market / ranking_task.py RankingTask.resume   0% 4 4 0   0% 2 0   0%
task / background / after_market / ranking_task.py RankingTask.start_after_market_scheduler   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask._on_market_closed   100% 8 0 0   50% 4 2   83%
task / background / after_market / ranking_task.py RankingTask.refresh_basic_ranking   100% 20 0 0   90% 10 1   97%
task / background / after_market / ranking_task.py RankingTask.get_progress   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask.get_investor_ranking_progress   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask.get_basic_ranking_cache   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask._fetch_with_retry   100% 19 0 0   100% 6 0   100%
task / background / after_market / ranking_task.py RankingTask.refresh_investor_ranking   91% 112 10 0   77% 52 10   87%
task / background / after_market / ranking_task.py RankingTask._build_ranking   100% 9 0 0   100% 4 0   100%
task / background / after_market / ranking_task.py RankingTask._build_trading_value_ranking   100% 5 0 0   100% 2 0   100%
task / background / after_market / ranking_task.py RankingTask.get_trading_value_ranking   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask._check_and_trigger_refresh   100% 10 0 0   100% 4 0   100%
task / background / after_market / ranking_task.py RankingTask.get_foreign_net_buy_ranking   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask.get_foreign_net_sell_ranking   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask.get_inst_net_buy_ranking   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask.get_inst_net_sell_ranking   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask.get_prsn_net_buy_ranking   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask.get_prsn_net_sell_ranking   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask.get_program_net_buy_ranking   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask.get_program_net_sell_ranking   100% 1 0 0   100% 0 0   100%
task / background / after_market / ranking_task.py RankingTask._get_ranking_from_cache   83% 6 1 0   75% 4 1   80%
task / background / after_market / ranking_task.py RankingTask._load_all_stocks   88% 16 2 0   75% 12 3   82%
task / background / after_market / ranking_task.py RankingTask.force_collect   0% 2 2 0   100% 0 0   0%
task / background / after_market / ranking_task.py (no function)   100% 54 0 0   100% 0 0   100%
task / background / always_on / notification_queue_task.py NotificationQueueTask.__init__   100% 6 0 0   100% 0 0   100%
task / background / always_on / notification_queue_task.py NotificationQueueTask.task_name   100% 1 0 0   100% 0 0   100%
task / background / always_on / notification_queue_task.py NotificationQueueTask.priority   100% 1 0 0   100% 0 0   100%
task / background / always_on / notification_queue_task.py NotificationQueueTask.state   100% 1 0 0   100% 0 0   100%
task / background / always_on / notification_queue_task.py NotificationQueueTask.start   100% 7 0 0   100% 2 0   100%
task / background / always_on / notification_queue_task.py NotificationQueueTask.stop   100% 11 0 0   62% 8 3   84%
task / background / always_on / notification_queue_task.py NotificationQueueTask.suspend   100% 5 0 0   75% 4 1   89%
task / background / always_on / notification_queue_task.py NotificationQueueTask.resume   100% 5 0 0   75% 4 1   89%
task / background / always_on / notification_queue_task.py NotificationQueueTask.get_progress   100% 1 0 0   100% 0 0   100%
task / background / always_on / notification_queue_task.py NotificationQueueTask._drain_loop   81% 21 4 0   100% 2 0   83%
task / background / always_on / notification_queue_task.py (no function)   95% 21 1 0   50% 2 1   91%
task / background / intraday / strategy_scheduler_task_adapter.py StrategySchedulerTaskAdapter.__init__   100% 2 0 0   100% 0 0   100%
task / background / intraday / strategy_scheduler_task_adapter.py StrategySchedulerTaskAdapter.task_name   100% 1 0 0   100% 0 0   100%
task / background / intraday / strategy_scheduler_task_adapter.py StrategySchedulerTaskAdapter.priority   100% 1 0 0   100% 0 0   100%
task / background / intraday / strategy_scheduler_task_adapter.py StrategySchedulerTaskAdapter.state   100% 1 0 0   100% 0 0   100%
task / background / intraday / strategy_scheduler_task_adapter.py StrategySchedulerTaskAdapter.start   100% 4 0 0   100% 2 0   100%
task / background / intraday / strategy_scheduler_task_adapter.py StrategySchedulerTaskAdapter.stop   100% 3 0 0   100% 2 0   100%
task / background / intraday / strategy_scheduler_task_adapter.py StrategySchedulerTaskAdapter.suspend   100% 2 0 0   100% 2 0   100%
task / background / intraday / strategy_scheduler_task_adapter.py StrategySchedulerTaskAdapter.resume   100% 2 0 0   100% 2 0   100%
task / background / intraday / strategy_scheduler_task_adapter.py StrategySchedulerTaskAdapter.get_progress   100% 10 0 0   100% 0 0   100%
task / background / intraday / strategy_scheduler_task_adapter.py (no function)   100% 16 0 0   100% 0 0   100%
task / background / intraday / websocket_watchdog_task.py WebSocketWatchdogTask.__init__   100% 11 0 0   100% 0 0   100%
task / background / intraday / websocket_watchdog_task.py WebSocketWatchdogTask.task_name   100% 1 0 0   100% 0 0   100%
task / background / intraday / websocket_watchdog_task.py WebSocketWatchdogTask.priority   100% 1 0 0   100% 0 0   100%
task / background / intraday / websocket_watchdog_task.py WebSocketWatchdogTask.state   100% 1 0 0   100% 0 0   100%
task / background / intraday / websocket_watchdog_task.py WebSocketWatchdogTask.start   100% 11 0 0   62% 8 3   84%
task / background / intraday / websocket_watchdog_task.py WebSocketWatchdogTask.stop   100% 11 0 0   75% 8 2   89%
task / background / intraday / websocket_watchdog_task.py WebSocketWatchdogTask.suspend   100% 3 0 0   100% 2 0   100%
task / background / intraday / websocket_watchdog_task.py WebSocketWatchdogTask.resume   100% 3 0 0   100% 2 0   100%
task / background / intraday / websocket_watchdog_task.py WebSocketWatchdogTask._restore_program_trading   84% 31 5 0   75% 16 4   81%
task / background / intraday / websocket_watchdog_task.py WebSocketWatchdogTask._program_trading_watchdog   75% 40 10 0   67% 18 4   72%
task / background / intraday / websocket_watchdog_task.py WebSocketWatchdogTask.get_progress   100% 11 0 0   67% 6 2   88%
task / background / intraday / websocket_watchdog_task.py WebSocketWatchdogTask.force_reconnect_program_trading   88% 42 5 0   80% 20 4   85%
task / background / intraday / websocket_watchdog_task.py (no function)   86% 29 4 0   50% 2 1   84%
utils / kr_stock_data.py StockCodeNameResolver.__init__   100% 3 0 0   100% 0 0   100%
utils / kr_stock_data.py StockCodeNameResolver.get_name   100% 1 0 0   100% 0 0   100%
utils / kr_stock_data.py StockCodeNameResolver.get_code   100% 1 0 0   100% 0 0   100%
utils / kr_stock_data.py (no function)   100% 5 0 0   100% 0 0   100%
utils / transaction_cost_utils.py TransactionCostUtils.calculate_cost   100% 4 0 0   100% 0 0   100%
utils / transaction_cost_utils.py TransactionCostUtils.get_return_rate   100% 9 0 0   100% 4 0   100%
utils / transaction_cost_utils.py (no function)   100% 7 0 0   100% 0 0   100%
view / web / api_common.py set_ctx   100% 1 0 0   100% 0 0   100%
view / web / api_common.py _get_ctx   100% 3 0 0   100% 2 0   100%
view / web / api_common.py check_auth   100% 6 0 0   100% 2 0   100%
view / web / api_common.py _serialize_response   100% 5 0 0   100% 4 0   100%
view / web / api_common.py _serialize_list_items   100% 8 0 0   100% 6 0   100%
view / web / api_common.py (no function)   100% 28 0 0   100% 0 0   100%
view / web / routes / auth.py login   100% 11 0 0   100% 2 0   100%
view / web / routes / auth.py (no function)   100% 6 0 0   100% 0 0   100%
view / web / routes / balance.py get_balance   92% 26 2 0   100% 8 0   94%
view / web / routes / balance.py (no function)   100% 6 0 0   100% 0 0   100%
view / web / routes / notification.py get_recent_notifications   100% 3 0 0   100% 0 0   100%
view / web / routes / notification.py stream_notifications   100% 4 0 0   100% 0 0   100%
view / web / routes / notification.py stream_notifications.event_generator   100% 14 0 0   100% 4 0   100%
view / web / routes / notification.py (no function)   100% 11 0 0   100% 0 0   100%
view / web / routes / ohlcv.py get_ohlcv_progress   100% 5 0 0   100% 2 0   100%
view / web / routes / ohlcv.py force_ohlcv_update   100% 9 0 0   100% 4 0   100%
view / web / routes / ohlcv.py (no function)   100% 8 0 0   100% 0 0   100%
view / web / routes / order.py place_order   100% 27 0 0   88% 16 2   95%
view / web / routes / order.py (no function)   100% 5 0 0   100% 0 0   100%
view / web / routes / program.py subscribe_program_trading   100% 8 0 0   100% 2 0   100%
view / web / routes / program.py get_program_trading_history   100% 10 0 0   50% 2 1   92%
view / web / routes / program.py unsubscribe_program_trading   100% 5 0 0   100% 2 0   100%
view / web / routes / program.py get_program_trading_status   100% 4 0 0   100% 0 0   100%
view / web / routes / program.py stream_program_trading   100% 4 0 0   100% 0 0   100%
view / web / routes / program.py stream_program_trading.event_generator   75% 20 5 0   50% 8 2   68%
view / web / routes / program.py save_pt_data   100% 9 0 0   100% 0 0   100%
view / web / routes / program.py load_pt_data   100% 7 0 0   100% 2 0   100%
view / web / routes / program.py get_db_status   0% 2 2 0   100% 0 0   0%
view / web / routes / program.py websocket_endpoint   100% 7 0 0   100% 0 0   100%
view / web / routes / program.py (no function)   100% 24 0 0   100% 0 0   100%
view / web / routes / ranking.py get_ranking_progress   100% 4 0 0   100% 2 0   100%
view / web / routes / ranking.py get_ranking   100% 10 0 0   100% 4 0   100%
view / web / routes / ranking.py get_top_market_cap   100% 14 0 0   100% 6 0   100%
view / web / routes / ranking.py (no function)   100% 10 0 0   100% 0 0   100%
view / web / routes / scheduler.py get_scheduler_status   100% 14 0 0   75% 12 3   88%
view / web / routes / scheduler.py start_scheduler   100% 6 0 0   100% 2 0   100%
view / web / routes / scheduler.py stop_scheduler   100% 6 0 0   100% 2 0   100%
view / web / routes / scheduler.py start_strategy   100% 7 0 0   100% 4 0   100%
view / web / routes / scheduler.py stop_strategy   100% 7 0 0   100% 4 0   100%
view / web / routes / scheduler.py update_strategy_max_positions   100% 7 0 0   100% 4 0   100%
view / web / routes / scheduler.py get_scheduler_history   100% 7 0 0   100% 2 0   100%
view / web / routes / scheduler.py stream_scheduler_signals   100% 6 0 0   100% 2 0   100%
view / web / routes / scheduler.py stream_scheduler_signals.event_generator   57% 14 6 0   50% 4 0   56%
view / web / routes / scheduler.py (no function)   100% 24 0 0   100% 0 0   100%
view / web / routes / stock.py get_status   100% 11 0 0   100% 4 0   100%
view / web / routes / stock.py get_stocks_list   100% 3 0 0   100% 0 0   100%
view / web / routes / stock.py search_stock_by_name   100% 5 0 0   100% 2 0   100%
view / web / routes / stock.py get_stock_price   82% 17 3 0   75% 4 1   81%
view / web / routes / stock.py get_stock_price._preload_ohlcv   100% 4 0 0   100% 0 0   100%
view / web / routes / stock.py get_stock_chart   83% 12 2 0   100% 2 0   86%
view / web / routes / stock.py get_bollinger_bands   100% 6 0 0   100% 0 0   100%
view / web / routes / stock.py get_rsi   100% 6 0 0   100% 0 0   100%
view / web / routes / stock.py get_moving_average   100% 6 0 0   100% 0 0   100%
view / web / routes / stock.py change_environment   100% 10 0 0   100% 4 0   100%
view / web / routes / stock.py (no function)   100% 28 0 0   100% 0 0   100%
view / web / routes / streaming.py subscribe_stock   100% 7 0 0   100% 2 0   100%
view / web / routes / streaming.py unsubscribe_stock   100% 7 0 0   100% 2 0   100%
view / web / routes / streaming.py get_streaming_status   100% 5 0 0   100% 2 0   100%
view / web / routes / streaming.py (no function)   100% 14 0 0   100% 0 0   100%
view / web / routes / system.py get_cache_status   100% 13 0 0   100% 8 0   100%
view / web / routes / system.py get_active_requests   100% 9 0 0   100% 0 0   100%
view / web / routes / system.py get_background_status   100% 24 0 0   100% 14 0   100%
view / web / routes / system.py force_ranking_update   100% 9 0 0   100% 4 0   100%
view / web / routes / system.py force_daily_price_update   100% 9 0 0   100% 4 0   100%
view / web / routes / system.py get_subscription_status   100% 10 0 0   100% 2 0   100%
view / web / routes / system.py get_subscription_status._enrich   100% 9 0 0   100% 4 0   100%
view / web / routes / system.py force_watchlist_update   100% 9 0 0   100% 4 0   100%
view / web / routes / system.py force_cache_warmup   100% 9 0 0   100% 4 0   100%
view / web / routes / system.py (no function)   100% 24 0 0   100% 0 0   100%
view / web / routes / virtual.py get_virtual_summary   100% 7 0 0   100% 2 0   100%
view / web / routes / virtual.py get_strategies   100% 2 0 0   100% 0 0   100%
view / web / routes / virtual.py _calculate_benchmark   91% 22 2 0   100% 8 0   93%
view / web / routes / virtual.py get_strategy_chart   100% 24 0 0   90% 10 1   97%
view / web / routes / virtual.py _sanitize_for_json   100% 7 0 0   100% 6 0   100%
view / web / routes / virtual.py _aggregate_virtual_data   88% 77 9 0   96% 28 1   90%
view / web / routes / virtual.py _aggregate_virtual_data.calc_metrics   100% 13 0 0   100% 2 0   100%
view / web / routes / virtual.py get_virtual_history   100% 3 0 0   100% 0 0   100%
view / web / routes / virtual.py _get_virtual_history_impl   100% 79 0 0   88% 42 5   96%
view / web / routes / virtual.py (no function)   100% 21 0 0   100% 0 0   100%
view / web / web_api.py __getattr__   100% 3 0 0   100% 2 0   100%
view / web / web_api.py (no function)   100% 5 0 0   100% 0 0   100%
view / web / web_app_initializer.py WebAppContext.__init__   100% 33 0 0   100% 0 0   100%
view / web / web_app_initializer.py WebAppContext.load_config_and_env   95% 21 1 0   83% 6 1   93%
view / web / web_app_initializer.py WebAppContext.initialize_services   98% 57 1 0   64% 22 8   89%
view / web / web_app_initializer.py WebAppContext._initialize_price_subscriptions   42% 24 14 0   25% 12 3   36%
view / web / web_app_initializer.py WebAppContext.get_env_type   100% 3 0 0   100% 2 0   100%
view / web / web_app_initializer.py WebAppContext.is_market_open_now   100% 3 0 0   100% 2 0   100%
view / web / web_app_initializer.py WebAppContext.get_current_time_str   100% 3 0 0   100% 2 0   100%
view / web / web_app_initializer.py WebAppContext.get_cache_stats   0% 3 3 0   0% 2 0   0%
view / web / web_app_initializer.py WebAppContext.initialize_scheduler   100% 21 0 0   100% 2 0   100%
view / web / web_app_initializer.py WebAppContext.start_background_tasks   75% 4 1 0   50% 4 2   62%
view / web / web_app_initializer.py WebAppContext.shutdown   80% 5 1 0   50% 4 2   67%
view / web / web_app_initializer.py WebAppContext._web_realtime_callback   93% 15 1 0   60% 10 4   80%
view / web / web_app_initializer.py WebAppContext.start_program_trading   82% 34 6 0   79% 14 3   81%
view / web / web_app_initializer.py WebAppContext.stop_program_trading   100% 4 0 0   50% 2 1   83%
view / web / web_app_initializer.py WebAppContext.stop_all_program_trading   100% 4 0 0   100% 2 0   100%
view / web / web_app_initializer.py (no function)   100% 60 0 0   100% 0 0   100%
view / web / web_main.py _DebugHandler.do_GET   0% 13 13 0   0% 2 0   0%
view / web / web_main.py _DebugHandler.log_message   0% 1 1 0   100% 0 0   0%
view / web / web_main.py _start_debug_server   100% 7 0 0   100% 0 0   100%
view / web / web_main.py lifespan   100% 13 0 0   100% 4 0   100%
view / web / web_main.py _debugpy_activate_middleware   0% 5 5 0   0% 2 0   0%
view / web / web_main.py request_tracker_middleware   93% 14 1 0   100% 2 0   94%
view / web / web_main.py _needs_foreground   100% 3 0 0   100% 2 0   100%
view / web / web_main.py foreground_priority_middleware   100% 7 0 0   100% 2 0   100%
view / web / web_main.py render_page   93% 15 1 0   83% 6 1   90%
view / web / web_main.py index   100% 1 0 0   100% 0 0   100%
view / web / web_main.py stock   100% 1 0 0   100% 0 0   100%
view / web / web_main.py balance   100% 1 0 0   100% 0 0   100%
view / web / web_main.py order   100% 1 0 0   100% 0 0   100%
view / web / web_main.py ranking   100% 1 0 0   100% 0 0   100%
view / web / web_main.py marketcap   100% 1 0 0   100% 0 0   100%
view / web / web_main.py virtual   100% 1 0 0   100% 0 0   100%
view / web / web_main.py scheduler   100% 1 0 0   100% 0 0   100%
view / web / web_main.py program   100% 1 0 0   100% 0 0   100%
view / web / web_main.py system   100% 1 0 0   100% 0 0   100%
view / web / web_main.py logout   100% 4 0 0   100% 0 0   100%
view / web / web_main.py (no function)   95% 63 3 0   50% 2 1   94%
Total     94% 13183 780 0   85% 3820 494   92%

No items found using the specified filter.