1818 Package ,
1919)
2020from exasol .toolbox .util .git import Git
21+ from noxconfig import PROJECT_CONFIG
2122
2223
2324class PoetryGroup (BaseModel ):
@@ -82,6 +83,10 @@ def groups(self) -> tuple[PoetryGroup, ...]:
8283 return tuple (groups )
8384
8485
86+ def run_command (* args : str , cwd : Path | None = None ) -> subprocess .CompletedProcess :
87+ return subprocess .run (args , capture_output = True , text = True , cwd = cwd , check = True )
88+
89+
8590class PoetryDependencies (BaseModel ):
8691 groups : tuple [PoetryGroup , ...]
8792 working_directory : Path
@@ -111,44 +116,34 @@ def direct_dependencies(
111116 ) -> OrderedDict [str , dict [NormalizedPackageStr , Package ]]:
112117 dependencies = OrderedDict ()
113118 for group in self .groups :
114- command = (
119+ proc = run_command (
115120 "poetry" ,
116121 "show" ,
117122 "--top-level" ,
118123 f"--only={ group .name } " ,
119124 "--no-truncate" ,
120- )
121- output = subprocess .run (
122- command ,
123- capture_output = True ,
124- text = True ,
125125 cwd = self .working_directory ,
126- check = True ,
127126 )
128- result = self ._extract_from_poetry_show (output_text = output .stdout )
127+ result = self ._extract_from_poetry_show (output_text = proc .stdout )
129128 dependencies [group .name ] = result
130129 return dependencies
131130
132131 @property
133132 def all_dependencies (self ) -> OrderedDict [str , dict [NormalizedPackageStr , Package ]]:
134- command = ("poetry" , "show" , "--no-truncate" )
135- output = subprocess .run (
136- command ,
137- capture_output = True ,
138- text = True ,
133+ proc = run_command (
134+ "poetry" ,
135+ "show" ,
136+ "--no-truncate" ,
139137 cwd = self .working_directory ,
140- check = True ,
141138 )
142-
143139 direct_dependencies = self .direct_dependencies .copy ()
144-
145140 transitive_dependencies = {}
146141 names_direct_dependencies = {
147142 package_name
148143 for group_list in direct_dependencies
149144 for package_name in group_list
150145 }
151- for line in output .stdout .splitlines ():
146+ for line in proc .stdout .splitlines ():
152147 dep = self ._extract_from_line (line = line )
153148 if dep and dep .name not in names_direct_dependencies :
154149 transitive_dependencies [dep .normalized_name ] = dep
@@ -169,10 +164,9 @@ def get_dependencies_from_latest_tag() -> (
169164 OrderedDict [str , dict [NormalizedPackageStr , Package ]]
170165):
171166 latest_tag = Git .get_latest_tag ()
167+ dir = PROJECT_CONFIG .root .relative_to (Git .toplevel ())
172168 with tempfile .TemporaryDirectory () as path :
173169 tmpdir = Path (path )
174-
175- Git .copy_remote_file_locally (latest_tag , "poetry.lock" , tmpdir )
176- Git .copy_remote_file_locally (latest_tag , PYPROJECT_TOML , tmpdir )
177-
170+ for file in ("poetry.lock" , PYPROJECT_TOML ):
171+ Git .checkout (latest_tag , dir / file , tmpdir / file )
178172 return get_dependencies (working_directory = tmpdir )
0 commit comments