@@ -42,12 +42,9 @@ def __dir__() -> list[str]:
4242 return __all__
4343
4444
45- def _createParser () -> argparse .ArgumentParser :
46- parser = argparse .ArgumentParser (
47- description = "Ingest and convert python packages to rez packages." ,
48- prog = __package__ .replace ("_" , "-" ),
49- add_help = False ,
50- )
45+ def _setupParser (
46+ parser : argparse .ArgumentParser , fromRez : bool = False
47+ ) -> argparse .ArgumentParser :
5148 parser .add_argument ("packages" , nargs = "*" , help = "Packages to install." )
5249
5350 generalGroup = parser .add_argument_group (title = "general options" )
@@ -91,14 +88,16 @@ def _createParser() -> argparse.ArgumentParser:
9188 help = "Standalone pip (https://pip.pypa.io/en/stable/installation/#standalone-zip-application) (default: bundled)." ,
9289 )
9390
94- # Manually define just to keep the style consistent (capital letters, dot, etc.)
95- generalGroup .add_argument (
96- "-h" , "--help" , action = "help" , help = "Show this help message and exit."
97- )
91+ # Rez injects --version and --help... So we have to
92+ # avoid setting them when run from rez.
93+ if not fromRez :
94+ # Manually define just to keep the style consistent (capital letters, dot, etc.)
95+ generalGroup .add_argument (
96+ "-h" , "--help" , action = "help" , help = "Show this help message and exit."
97+ )
9898
9999 generalGroup .add_argument (
100- "-v" ,
101- "--version" ,
100+ "--plugin-version" ,
102101 action = "version" ,
103102 version = importlib_metadata .version (__package__ ),
104103 )
@@ -139,7 +138,12 @@ def _createParser() -> argparse.ArgumentParser:
139138def _parseArgs (
140139 args : list [str ],
141140) -> tuple [argparse .Namespace , list [str ]]:
142- parser = _createParser ()
141+ parser = argparse .ArgumentParser (
142+ description = "Ingest and convert python packages to rez packages." ,
143+ prog = __package__ .replace ("_" , "-" ),
144+ add_help = False ,
145+ )
146+ parser = _setupParser (parser )
143147
144148 knownArgs = []
145149 pipArgs = []
@@ -313,8 +317,15 @@ def _debug(
313317 text = True ,
314318 )
315319
320+ opts = vars (args )
321+
322+ # Get rid of non serializable values injected by rez.
323+ opts .pop ("parser" , None )
324+ opts .pop ("func" , None )
325+ opts .pop ("formatter_class" , None )
326+
316327 console .print ("[bold]rez-pip provided arguments[/]:" )
317- print (textwrap .indent (json .dumps (vars ( args ) , indent = 4 ), prefix ))
328+ print (textwrap .indent (json .dumps (opts , indent = 4 ), prefix ))
318329
319330 console .print (f"[bold]pip config debug[/]:" , highlight = False )
320331 print (textwrap .indent (completedProcess .stdout .strip (), " " ))
@@ -361,9 +372,16 @@ def _printPlugins() -> None:
361372 rez_pip .utils .CONSOLE .print (table )
362373
363374
364- def run () -> int :
375+ def run (
376+ args : argparse .Namespace | None = None , pipArgs : list [str ] | None = None
377+ ) -> int :
365378 pipWorkArea = tempfile .mkdtemp (prefix = "rez-pip-target" )
366- args , pipArgs = _parseArgs (sys .argv [1 :])
379+
380+ if args is None :
381+ args , pipArgs = _parseArgs (sys .argv [1 :])
382+
383+ assert args is not None
384+ assert pipArgs is not None
367385
368386 # Initialize the plugin system
369387 rez_pip .plugins .getManager ()
0 commit comments