class_docstr: Container for the extracted archive
      
class_docstr_tok: ["Container","for","the","extracted","archive"]
docstr: Return path to the extracted `archive`.  Extract archive if necessary
          
code: def assure_extracted(self):
      """Return path to the extracted `archive`.  Extract archive if necessary"""
      path = self.path
  
      with lock_if_check_fails(
          check=(lambda s: s.is_extracted, (self,)),
          lock_path=path,
          operation="extract",
      ) as (check, lock):
          if lock:
              assert not check
              self._extract_archive(path)
      return path
  
imports: import hashlib
  import logging
  import os
  import random
  import string
  import tempfile
  from datalad import cfg
  from datalad.config import anything2bool
  from datalad.consts import ARCHIVES_TEMP_DIR
  from datalad.support.external_versions import external_versions
  from datalad.support.locking import lock_if_check_fails
  from datalad.support.path import abspath, exists, isabs, isdir
  from datalad.support.path import join
  from datalad.support.path import normpath, pardir, relpath
  from datalad.support.path import sep
  from datalad.utils import Path, any_re_search, ensure_bytes, ensure_unicode, get_tempfile_kwargs, on_windows, rmtemp, rmtree, unlink
label_desc: Use image node_id 7 for calling the ExtractedArchive obj's underlying member method code with example usage: obj.assure_extracted() and returns: path