docstr: download data from Internet
  
  Parameters
  ----------
  max_collector_count: int
      default 2
  delay: float
      time.sleep(delay), default 0
  interval: str
      freq, value from [1min, 1d], default 1d
  start: str
      start datetime, default "2000-01-01"
  end: str
      end datetime, default ``pd.Timestamp(datetime.datetime.now() + pd.Timedelta(days=1))``
  check_data_length: int # if this param useful?
      check data length, if not None and greater than 0, each symbol will be considered complete if its data length is greater than or equal to this value, otherwise it will be fetched again, the maximum number of fetches being (max_collector_count). By default None.
  limit_nums: int
      using for debug, by default None
  
  Examples
  ---------
      # get daily data
      $ python collector.py download_data --source_dir ~/.qlib/fund_data/source/cn_data --region CN --start 2020-11-01 --end 2020-11-10 --delay 0.1 --interval 1d
docstr_tok: ["download","data","from","Internet","Parameters","--","--","--","--","--","max_collector_count",":","int","default","2","delay",":","float","time.sleep","(","delay",")",",","default","0","interval",":","str","freq",",","value","from","[","1min",",","1d","]",",","default","1d","start",":","str","start","datetime",",","default","``","2000-01-01","''","end",":","str","end","datetime",",","default","``","pd.Timestamp","(","datetime.datetime.now","(",")","+","pd.Timedelta","(","days=1",")",")","``","check_data_length",":","int","#","if","this","param","useful","?","check","data","length",",","if","not","None","and","greater","than","0",",","each","symbol","will","be","considered","complete","if","its","data","length","is","greater","than","or","equal","to","this","value",",","otherwise","it","will","be","fetched","again",",","the","maximum","number","of","fetches","being","(","max_collector_count",")",".","By","default","None",".","limit_nums",":","int","using","for","debug",",","by","default","None","Examples","--","--","--","--","-","#","get","daily","data","$","python","collector.py","download_data","--","source_dir","~\/.qlib\/fund_data\/source\/cn_data","--","region","CN","--","start","2020-11-01","--","end","2020-11-10","--","delay","0.1","--","interval","1d"]
code: def download_data(
      self,
      max_collector_count=2,
      delay=0,
      start=None,
      end=None,
      check_data_length: int = None,
      limit_nums=None,
  ):
      """download data from Internet
  
      Parameters
      ----------
      max_collector_count: int
          default 2
      delay: float
          time.sleep(delay), default 0
      interval: str
          freq, value from [1min, 1d], default 1d
      start: str
          start datetime, default "2000-01-01"
      end: str
          end datetime, default ``pd.Timestamp(datetime.datetime.now() + pd.Timedelta(days=1))``
      check_data_length: int # if this param useful?
          check data length, if not None and greater than 0, each symbol will be considered complete if its data length is greater than or equal to this value, otherwise it will be fetched again, the maximum number of fetches being (max_collector_count). By default None.
      limit_nums: int
          using for debug, by default None
  
      Examples
      ---------
          # get daily data
          $ python collector.py download_data --source_dir ~/.qlib/fund_data/source/cn_data --region CN --start 2020-11-01 --end 2020-11-10 --delay 0.1 --interval 1d
      """
  
      super(Run, self).download_data(
          max_collector_count,
          delay,
          start,
          end,
          check_data_length,
          limit_nums,
      )
  
imports: import abc
  import sys
  import datetime
  import json
  from abc import ABC
  from pathlib import Path
  import fire
  import requests
  import pandas
  from loguru import logger
  from dateutil.tz import tzlocal
  from qlib.constant import REG_CN
  from data_collector.base import BaseCollector, BaseNormalize, BaseRun
  from data_collector.utils import get_calendar_list, get_en_fund_symbols
label_desc: Use image node_id 5 for calling the Run obj's underlying member method code with example usage: obj.download_data(max_collector_count, delay, start, end, check_data_length, limit_nums) without return types