class_docstr: A pathlib-compatible interface for zip files.
  
  Consider a zip file with this structure::
  
      .
      ├── a.txt
      └── b
          ├── c.txt
          └── d
              └── e.txt
  
  >>> data = io.BytesIO()
  >>> zf = ZipFile(data, 'w')
  >>> zf.writestr('a.txt', 'content of a')
  >>> zf.writestr('b/c.txt', 'content of c')
  >>> zf.writestr('b/d/e.txt', 'content of e')
  >>> zf.filename = 'mem/abcde.zip'
  
  Path accepts the zipfile object itself or a filename
  
  >>> root = Path(zf)
  
  From there, several path operations are available.
  
  Directory iteration (including the zip file itself):
  
  >>> a, b = root.iterdir()
  >>> a
  Path('mem/abcde.zip', 'a.txt')
  >>> b
  Path('mem/abcde.zip', 'b/')
  
  name property:
  
  >>> b.name
  'b'
  
  join with divide operator:
  
  >>> c = b / 'c.txt'
  >>> c
  Path('mem/abcde.zip', 'b/c.txt')
  >>> c.name
  'c.txt'
  
  Read text:
  
  >>> c.read_text(encoding='utf-8')
  'content of c'
  
  existence:
  
  >>> c.exists()
  True
  >>> (b / 'missing.txt').exists()
  False
  
  Coercion to string:
  
  >>> import os
  >>> str(c).replace(os.sep, posixpath.sep)
  'mem/abcde.zip/b/c.txt'
  
  At the root, ``name``, ``filename``, and ``parent``
  resolve to the zipfile. Note these attributes are not
  valid and will raise a ``ValueError`` if the zipfile
  has no filename.
  
  >>> root.name
  'abcde.zip'
  >>> str(root.filename).replace(os.sep, posixpath.sep)
  'mem/abcde.zip'
  >>> str(root.parent)
  'mem'
class_docstr_tok: ["A","pathlib-compatible","interface","for","zip","files",".","Consider","a","zip","file","with","this","structure",":",":",".","\u251c\u2500\u2500","a.txt","\u2514\u2500\u2500","b","\u251c\u2500\u2500","c.txt","\u2514\u2500\u2500","d","\u2514\u2500\u2500","e.txt",">",">",">","data","=","io.BytesIO","(",")",">",">",">","zf","=","ZipFile","(","data",",","'","w","'",")",">",">",">","zf.writestr","(","'","a.txt","'",",","'content","of","a","'",")",">",">",">","zf.writestr","(","'","b\/c.txt","'",",","'content","of","c","'",")",">",">",">","zf.writestr","(","'","b\/d\/e.txt","'",",","'content","of","e","'",")",">",">",">","zf.filename","=","'mem\/abcde.zip'","Path","accepts","the","zipfile","object","itself","or","a","filename",">",">",">","root","=","Path","(","zf",")","From","there",",","several","path","operations","are","available",".","Directory","iteration","(","including","the","zip","file","itself",")",":",">",">",">","a",",","b","=","root.iterdir","(",")",">",">",">","a","Path","(","'mem\/abcde.zip","'",",","'","a.txt","'",")",">",">",">","b","Path","(","'mem\/abcde.zip","'",",","'","b\/","'",")","name","property",":",">",">",">","b.name","'","b'","join","with","divide","operator",":",">",">",">","c","=","b","\/","'","c.txt'",">",">",">","c","Path","(","'mem\/abcde.zip","'",",","'","b\/c.txt","'",")",">",">",">","c.name","'","c.txt'","Read","text",":",">",">",">","c.read_text","(","encoding='utf-8","'",")","'content","of","c'","existence",":",">",">",">","c.exists","(",")","True",">",">",">","(","b","\/","'missing.txt","'",")",".exists","(",")","False","Coercion","to","string",":",">",">",">","import","os",">",">",">","str","(","c",")",".replace","(","os.sep",",","posixpath.sep",")","'mem\/abcde.zip\/b\/c.txt'","At","the","root",",","``","name","``",",","``","filename","``",",","and","``","parent","``","resolve","to","the","zipfile",".","Note","these","attributes","are","not","valid","and","will","raise","a","``","ValueError","``","if","the","zipfile","has","no","filename",".",">",">",">","root.name","'abcde.zip'",">",">",">","str","(","root.filename",")",".replace","(","os.sep",",","posixpath.sep",")","'mem\/abcde.zip'",">",">",">","str","(","root.parent",")","'mem","'"]
code: def glob(self, pattern):
      if not pattern:
          raise ValueError(f"Unacceptable pattern: {pattern!r}")
  
      prefix = re.escape(self.at)
      matches = re.compile(prefix + translate(pattern)).fullmatch
      return map(self._next, filter(matches, self.root.namelist()))
  
imports: import io
  import posixpath
  import zipfile
  import itertools
  import contextlib
  import pathlib
  import re
  from .glob import translate
label_desc: Use image node_id 21 for calling the Path obj's underlying member method code with example usage: obj.glob(pattern) and returns: map