From fda57b4836ae130b71eac1c2a8e60319702b7e1b Mon Sep 17 00:00:00 2001 From: Swen Kooij Date: Thu, 19 Mar 2020 15:38:29 +0200 Subject: [PATCH] Add basic support for de-duping and removing editable requirements --- pippackagelist/__main__.py | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/pippackagelist/__main__.py b/pippackagelist/__main__.py index 585640f..8198cf0 100644 --- a/pippackagelist/__main__.py +++ b/pippackagelist/__main__.py @@ -1,6 +1,7 @@ import argparse import sys +from .entry import RequirementsEditableEntry from .list_packages_from_files import list_packages_from_files @@ -18,6 +19,18 @@ def main() -> int: help="recurse into -e entries", action="store_true", ) + parser.add_argument( + "--dedupe", + default=False, + help="de-duplicate the resulting list", + action="store_true", + ) + parser.add_argument( + "--remove-editable", + default=False, + help="remove editable requirements from the final list", + action="store_true", + ) parser.add_argument( "file_paths", nargs="+", @@ -26,12 +39,26 @@ def main() -> int: args = parser.parse_args() - for requirement in list_packages_from_files( + reqs = list_packages_from_files( args.file_paths, recurse_recursive=args.recurse_recursive, recurse_editable=args.recurse_editable, - ): - print(requirement) + ) + + if args.remove_editable: + reqs = [ + requirement + for requirement in reqs + if not isinstance(requirement, RequirementsEditableEntry) + ] + + if args.dedupe: + deduped_reqs = list(set([str(requirement) for requirement in reqs])) + for requirement in deduped_reqs: + print(requirement) + else: + for requirement in reqs: + print(requirement) return 0