docs: def _is_cached(self, ext='.json'):
          """
          Determine if ``filename`` is cached using extension ``ex`` a string.
  
          :param ext: extension used to cache ``filename``, default is '.json'
          :type ext: str
          :return: True if ``filename`` is cached using extensions ``ex``
          :rtype: bool
          """
          # extension must start with a dot
          if not ext.startswith('.'):
              # prepend extension with a dot
              ext = '.%s' % ext
          # cache file is filename with extension
          cache_file = '%s%s' % (self.filename, ext)
          # if filename already ends with extension or there's a file with the
          # extension, then assume the data is cached
          return self.filename.endswith(ext) or os.path.exists(cache_file)