From fc720f18bb5e1689d05ae4f83f4bfef5d173e704 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Singh Date: Thu, 10 Oct 2019 18:34:59 +0530 Subject: [PATCH] Fixed#133 Sorted `imports` based on `lowercase` package's `name`, similar to `pip freeze`. --- pipreqs/pipreqs.py | 2 ++ tests/test_pipreqs.py | 3 +++ 2 files changed, 5 insertions(+) diff --git a/pipreqs/pipreqs.py b/pipreqs/pipreqs.py index 57147e2..42a4e45 100755 --- a/pipreqs/pipreqs.py +++ b/pipreqs/pipreqs.py @@ -430,6 +430,8 @@ def init(args): imports = local + get_imports_info(difference, proxy=proxy, pypi_server=pypi_server) + # sort imports based on lowercase name of package, similar to `pip freeze`. + imports = sorted(imports, key=lambda x: x['name'].lower()) path = (args["--savepath"] if args["--savepath"] else os.path.join(input_path, "requirements.txt")) diff --git a/tests/test_pipreqs.py b/tests/test_pipreqs.py index dcd75c5..68f7249 100755 --- a/tests/test_pipreqs.py +++ b/tests/test_pipreqs.py @@ -99,6 +99,9 @@ class TestPipreqs(unittest.TestCase): data = f.read().lower() for item in self.modules[:-3]: self.assertTrue(item.lower() in data) + # It should be sorted based on names. + data = data.strip().split('\n') + self.assertEqual(data, sorted(data)) def test_init_local_only(self): """