8
8
import json
9
9
from functools import lru_cache
10
10
from enum import Enum
11
- import pathlib
11
+ from pathlib import Path
12
12
13
13
log = logging .getLogger (__name__ )
14
14
@@ -19,7 +19,7 @@ def __init__(self, fs: FileSystem, project_root: str,
19
19
original_root_path : str = "" ):
20
20
21
21
self .fs = fs
22
- self .PROJECT_ROOT = project_root
22
+ self .PROJECT_ROOT = Path ( project_root )
23
23
self .repo = None
24
24
self .hash = None
25
25
@@ -39,30 +39,27 @@ def __init__(self, fs: FileSystem, project_root: str,
39
39
if self .hash :
40
40
self .key = "." .join ((self .key , self .hash ))
41
41
42
- self .PYTHON_PATH = os .path .abspath (GlobalConfig .PYTHON_PATH )
43
- self .CLONED_PROJECT_PATH = os .path .abspath (os .path .join (
44
- GlobalConfig .CLONED_PROJECT_PATH , self .key ))
42
+ self .CLONED_PROJECT_PATH = GlobalConfig .CLONED_PROJECT_PATH / self .key
45
43
46
- log .debug ("Setting Python path to %s" , self .PYTHON_PATH )
47
44
log .debug ("Setting Cloned Project path to %s" ,
48
45
self .CLONED_PROJECT_PATH )
49
46
50
47
# Clone the project from the provided filesystem into the local
51
48
# cache
52
- all_files = self .fs .walk (self .PROJECT_ROOT )
53
- for file_path in all_files :
54
- cache_file_path = self .project_to_cache_path (file_path )
49
+ for file_path in self .fs .walk (str (self .PROJECT_ROOT )):
55
50
56
- os .makedirs (os .path .dirname (cache_file_path ), exist_ok = True )
51
+ cache_file_path = self .CLONED_PROJECT_PATH / file_path .lstrip ("/" )
52
+
53
+ cache_file_path .parent .mkdir (parents = True , exist_ok = True )
57
54
file_contents = self .fs .open (file_path )
58
- with open (cache_file_path , "w" ) as f :
59
- f .write (file_contents )
55
+ cache_file_path .write_text (file_contents )
60
56
61
57
@property
62
58
@lru_cache ()
63
- def VENV_LOCATION (self ):
59
+ def VENV_PATH (self ):
64
60
self .ensure_venv_created ()
65
- return self .run_command ("pipenv --venv" ).out .rstrip ()
61
+ venv_path = self .run_command ("pipenv --venv" ).out .rstrip ()
62
+ return Path (venv_path )
66
63
67
64
def cleanup (self ):
68
65
log .info ("Removing project's virtual environment %s" , self .VENV_LOCATION )
@@ -106,16 +103,15 @@ def remove_venv(self):
106
103
self .run_command ("pipenv --rm" , no_prefix = True )
107
104
108
105
def get_module_info (self , raw_module_path ):
109
- module_path = pathlib . Path (raw_module_path )
106
+ module_path = Path (raw_module_path )
110
107
111
- import pdb
112
- pdb . set_trace ( )
108
+ if self . CLONED_PROJECT_PATH in module_path . parents :
109
+ return ( ModuleKind . PROJECT , module_path . relative_to ( self . CLONED_PROJECT_PATH ) )
113
110
114
- sys_std_lib_path = pathlib .Path (self .PYTHON_PATH )
115
- if sys_std_lib_path in module_path .parents :
111
+ if GlobalConfig .PYTHON_PATH in module_path .parents :
116
112
return (ModuleKind .STANDARD_LIBRARY , path .relative_to (sys_std_lib_path ))
117
113
118
- venv_path = pathlib . Path ( self .VENV_LOCATION ) / "lib"
114
+ venv_path = self .VENV_LOCATION / "lib"
119
115
if venv_path in module_path .parents :
120
116
# The python libraries in a venv are stored under
121
117
# VENV_LOCATION/lib/(some_python_version)
@@ -129,10 +125,6 @@ def get_module_info(self, raw_module_path):
129
125
return (ModuleKind .EXTERNAL_DEPENDENCY , module_path .relative_to (venv_ext_packages_path ))
130
126
return (ModuleKind .STANDARD_LIBRARY , module_path .relative_to (venv_lib_path ))
131
127
132
- project_path = pathlib .Path (self .CLONED_PROJECT_PATH )
133
- if project_path in module_path .parents :
134
- return (ModuleKind .PROJECT , module_path .relative_to (project_path ))
135
-
136
128
return (ModuleKind .UNKNOWN , module_path )
137
129
138
130
def get_package_information (self ):
0 commit comments