Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/jedi/file_io.py: 46%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1import os
2from typing import Any
4from parso import file_io
7class AbstractFolderIO:
8 def __init__(self, path):
9 self.path = path
11 def get_base_name(self):
12 raise NotImplementedError
14 def list(self):
15 raise NotImplementedError
17 def get_file_io(self, name):
18 raise NotImplementedError
20 def get_parent_folder(self):
21 raise NotImplementedError
23 def __repr__(self):
24 return '<%s: %s>' % (self.__class__.__name__, self.path)
27class FolderIO(AbstractFolderIO):
28 def get_base_name(self):
29 return os.path.basename(self.path)
31 def list(self):
32 return os.listdir(self.path)
34 def get_file_io(self, name):
35 return FileIO(os.path.join(self.path, name))
37 def get_parent_folder(self):
38 return FolderIO(os.path.dirname(self.path))
40 def walk(self):
41 for root, dirs, files in os.walk(self.path):
42 root_folder_io = FolderIO(root)
43 original_folder_ios = [FolderIO(os.path.join(root, d)) for d in dirs]
44 modified_folder_ios = list(original_folder_ios)
45 yield (
46 root_folder_io,
47 modified_folder_ios,
48 [FileIO(os.path.join(root, f)) for f in files],
49 )
50 modified_iterator = iter(reversed(modified_folder_ios))
51 current = next(modified_iterator, None)
52 i = len(original_folder_ios)
53 for folder_io in reversed(original_folder_ios):
54 i -= 1 # Basically enumerate but reversed
55 if current is folder_io:
56 current = next(modified_iterator, None)
57 else:
58 del dirs[i]
61class FileIOFolderMixin:
62 path: Any
64 def get_parent_folder(self):
65 return FolderIO(os.path.dirname(self.path))
68class ZipFileIO(file_io.KnownContentFileIO, FileIOFolderMixin):
69 """For .zip and .egg archives"""
70 def __init__(self, path, code, zip_path):
71 super().__init__(path, code)
72 self._zip_path = zip_path
74 def get_last_modified(self):
75 try:
76 return os.path.getmtime(self._zip_path)
77 except (FileNotFoundError, PermissionError, NotADirectoryError):
78 return None
81class FileIO(file_io.FileIO, FileIOFolderMixin):
82 pass
85class KnownContentFileIO(file_io.KnownContentFileIO, FileIOFolderMixin):
86 pass