code: def _fetch_losc_data_file(url, *args, **kwargs):
      
      cls = kwargs.pop('cls', TimeSeries)
      cache = kwargs.pop('cache', None)
      verbose = kwargs.pop('verbose', False)
  
      # match file format
      if url.endswith('.gz'):
          ext = os.path.splitext(url[:-3])[-1]
      else:
          ext = os.path.splitext(url)[-1]
      if ext == '.hdf5':
          kwargs.setdefault('format', 'hdf5.losc')
      elif ext == '.txt':
          kwargs.setdefault('format', 'ascii.losc')
      elif ext == '.gwf':
          kwargs.setdefault('format', 'gwf')
  
      with _download_file(url, cache, verbose=verbose) as rem:
          # get channel for GWF if not given
          if ext == ".gwf" and (not args or args[0] is None):
              args = (_gwf_channel(rem, cls, kwargs.get("verbose")),)
          if verbose:
              print('Reading data...', end=' ')
          try:
              series = cls.read(rem, *args, **kwargs)
          except Exception as exc:
              if verbose:
                  print('')
              exc.args = ("Failed to read LOSC data from %r: %s"
                          % (url, str(exc)),)
              raise
          else:
              # parse bits from unit in GWF
              if ext == '.gwf' and isinstance(series, StateVector):
                  try:
                      bits = {}
                      for bit in str(series.unit).split():
                          a, b = bit.split(':', 1)
                          bits[int(a)] = b
                      series.bits = bits
                      series.override_unit('')
                  except (TypeError, ValueError):  # don't care, bad LOSC
                      pass
  
              if verbose:
                  print('[Done]')
              return series
docs: Internal function for fetching a single LOSC file and returning a Series