Exemple #1
0
    def find_spec(self, fullname, path, target=None):
        ext_dest_name = self.extensions_map.get(fullname)
        if ext_dest_name is not None:
            ext_path = _path_join(self.libdir, ext_dest_name)
            return ModuleSpec(fullname,
                              ExtensionFileLoader(fullname, ext_path),
                              origin=ext_path,
                              is_package=False)
        if self.develop_mode_path:
            ans = self.find_spec_in_develop_mode(fullname, path, target=None)
            if ans is not None:
                return ans
        package_name = fullname + '.__init__'
        package_idx = self.index_for_python_name(package_name)
        is_package = package_idx > -1
        if is_package:
            name = package_name
            idx = package_idx
        else:
            name = fullname
            idx = self.index_for_python_name(name)

        if is_package or idx > -1:
            offset, size = offsets_for_index(idx)
            fpath = self.dataloc + path_sep
            filename = fpath + name.replace('.', path_sep) + py_ext
            return ModuleSpec(fullname,
                              FrozenByteCodeLoader(fullname, offset, size,
                                                   name, is_package,
                                                   self.filesystem_tree,
                                                   filename),
                              origin=filename,
                              is_package=is_package)
Exemple #2
0
 def open_resource(self, name):
     q = '/'.join(self.resource_prefix) + '/' + name
     idx = index_for_name(q)
     if idx < 0:
         raise FileNotFoundError(f'{name} is not present in {self.name}')
     import io
     offset, size = offsets_for_index(idx)
     return io.BytesIO(get_data_at(offset, size))
Exemple #3
0
 def read_memoryview(self):
     if self.is_dir():
         raise IsADirectoryError(f'Is a directory: {self.name}')
     q = '/'.join(self._path_entries)
     idx = index_for_name(q)
     if idx < 0:
         raise FileNotFoundError(f'{q} not found')
     offset, size = offsets_for_index(idx)
     return get_data_at(offset, size)