docs: def download_file(self, url, target, cwd=None):
          """
          (internal) Download an ``url`` to a ``target``.
          """
          if not url:
              return
          info('Downloading {} from {}'.format(self.name, url))
  
          if cwd:
              target = join(cwd, target)
  
          parsed_url = urlparse(url)
          if parsed_url.scheme in ('http', 'https'):
              def report_hook(index, blksize, size):
                  if size <= 0:
                      progression = '{0} bytes'.format(index * blksize)
                  else:
                      progression = '{0:.2f}%'.format(
                          index * blksize * 100. / float(size))
                  if "CI" not in environ:
                      stdout.write('- Download {}\r'.format(progression))
                      stdout.flush()
  
              if exists(target):
                  unlink(target)
  
              # Download item with multiple attempts (for bad connections):
              attempts = 0
              while True:
                  try:
                      urlretrieve(url, target, report_hook)
                  except OSError as e:
                      attempts += 1
                      if attempts >= 5:
                          raise e
                      stdout.write('Download failed retrying in a second...')
                      time.sleep(1)
                      continue
                  break
              return target
          elif parsed_url.scheme in ('git', 'git+file', 'git+ssh', 'git+http', 'git+https'):
              if isdir(target):
                  with current_directory(target):
                      shprint(sh.git, 'fetch', '--tags')
                      if self.version:
                          shprint(sh.git, 'checkout', self.version)
                      shprint(sh.git, 'pull')
                      shprint(sh.git, 'pull', '--recurse-submodules')
                      shprint(sh.git, 'submodule', 'update', '--recursive')
              else:
                  if url.startswith('git+'):
                      url = url[4:]
                  shprint(sh.git, 'clone', '--recursive', url, target)
                  if self.version:
                      with current_directory(target):
                          shprint(sh.git, 'checkout', self.version)
                          shprint(sh.git, 'submodule', 'update', '--recursive')
              return target