Пример #1
0
def test_file_info_constructor():
    dt = datetime.fromtimestamp(1568799826, timezone.utc)

    info = FileInfo("foo/bar")
    assert info.path == "foo/bar"
    assert info.base_name == "bar"
    assert info.type == FileType.Unknown
    assert info.size is None
    check_mtime_absent(info)

    info = FileInfo("foo/baz.txt", type=FileType.File, size=123,
                    mtime=1568799826.5)
    assert info.path == "foo/baz.txt"
    assert info.base_name == "baz.txt"
    assert info.type == FileType.File
    assert info.size == 123
    assert info.mtime_ns == 1568799826500000000
    check_mtime(info)

    info = FileInfo("foo", type=FileType.Directory, mtime=dt)
    assert info.path == "foo"
    assert info.base_name == "foo"
    assert info.type == FileType.Directory
    assert info.size is None
    assert info.mtime == dt
    assert info.mtime_ns == 1568799826000000000
    check_mtime(info)
Пример #2
0
 def get_file_info_selector(self, selector):
     if selector.base_dir != "somedir":
         if selector.allow_not_found:
             return []
         else:
             raise FileNotFoundError(selector.base_dir)
     infos = [
         FileInfo("somedir/file1", FileType.File, size=123),
         FileInfo("somedir/subdir1", FileType.Directory),
     ]
     if selector.recursive:
         infos += [
             FileInfo("somedir/subdir1/file2", FileType.File, size=456),
         ]
     return infos
Пример #3
0
 def get_file_info(self, paths):
     info = []
     for path in paths:
         if "file" in path:
             info.append(FileInfo(path, FileType.File))
         elif "dir" in path:
             info.append(FileInfo(path, FileType.Directory))
         elif "notfound" in path:
             info.append(FileInfo(path, FileType.NotFound))
         elif "badtype" in path:
             # Will raise when converting
             info.append(object())
         else:
             raise IOError
     return info
Пример #4
0
    def get_file_info(self, paths: List[str]) -> List[FileInfo]:
        """
        Get info for the given files.

        :param paths: List of file paths
        :return: list of file info objects
        """
        infos = []
        for path in paths:
            path, secs = self._storage.head_obj(path)
            infos.append(FileInfo(path, type=FileType.File, mtime=float(secs)))
        return infos
Пример #5
0
    def _adjust_entry(self, entry):
        import posixpath

        from pyarrow.fs import FileInfo

        mocked_path = os.path.relpath(entry.path, self._root)
        mocked_parts = mocked_path.split(os.path.sep)
        return FileInfo(
            path=posixpath.join(*mocked_parts),
            type=entry.type,
            mtime=entry.mtime,
            size=entry.size,
        )