Skip to content

Commit e0fe00a

Browse files
committed
Add function to get installed prerelease packages
1 parent 23d0b46 commit e0fe00a

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

neon_utils/packaging_utils.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,3 +276,22 @@ def _pip_install(command_args: List[str]) -> int:
276276
stat = _pip_install(pip_args)
277277

278278
return stat
279+
280+
281+
def get_installed_prereleases() -> List[Tuple[str, str]]:
282+
"""
283+
Get a list of installed pre-release packages.
284+
@return: List of tuple (pkg_name, version)
285+
"""
286+
from subprocess import run
287+
packages = run(["pip", "list"],
288+
capture_output=True).stdout.decode("utf-8")
289+
prerelease_pkgs = list()
290+
for line in packages.split('\n'):
291+
if not line:
292+
continue
293+
name, version = line.split()
294+
if not version.replace('.', '').isnumeric():
295+
prerelease_pkgs.append((name, version))
296+
return prerelease_pkgs
297+

tests/packaging_util_tests.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,20 @@ def test_install_packages_from_pip(self):
173173
self.assertEqual(0, test_result)
174174
self.assertEqual(mock_method.call_count, 2)
175175

176+
@patch("subprocess.run")
177+
def test_get_installed_prereleases(self, run):
178+
run.return_value.stdout = """stable_package 1.0.0
179+
beta_package 0.2.2b3
180+
alpha_package 0.0.0a0
181+
date_package 24.4.30
182+
""".encode("utf-8")
183+
from neon_utils.packaging_utils import get_installed_prereleases
184+
prereleases = get_installed_prereleases()
185+
self.assertEqual(len(prereleases), 2)
186+
for pkg in prereleases:
187+
self.assertTrue(pkg[0].endswith("_package"))
188+
self.assertEqual(len(pkg[1].split('.')), 3)
189+
176190

177191
if __name__ == '__main__':
178192
unittest.main()

0 commit comments

Comments
 (0)