Source code for rez.cli.pip

# SPDX-License-Identifier: Apache-2.0
# Copyright Contributors to the Rez Project


"""
Install a pip-compatible python package, and its dependencies, as rez packages.
"""
from __future__ import print_function
from argparse import REMAINDER
import logging


[docs]def setup_parser(parser, completions=False): parser.add_argument( "--python-version", dest="py_ver", metavar="VERSION", help="python version (rez package) to use, default is latest. Note " "that the pip package(s) will be installed with a dependency on " "python-MAJOR.MINOR.") parser.add_argument( "--pip-version", dest="pip_ver", metavar="VERSION", help="pip version (rez package) to use, default is latest." " This option is deprecated and will be removed in the future.") parser.add_argument( "-i", "--install", action="store_true", help="install the package") parser.add_argument( "-r", "--release", action="store_true", help="install as released package; if not set, package is installed " "locally only") parser.add_argument( "-p", "--prefix", type=str, metavar='PATH', help="install to a custom package repository path.") parser.add_argument( "PACKAGE", help="package to install or archive/url to install from") parser.add_argument( "-e", "--extra", nargs=REMAINDER, help="extra args passthrough to pip install (overrides pre-configured args if specified)" )
[docs]def command(opts, parser, extra_arg_groups=None): from rez.config import config # debug_package_release is used by rez.pip._verbose config.debug_package_release = config.debug_package_release or opts.verbose if not config.debug_package_release: # Prevent other rez.* loggers from printing debugs logging.getLogger('rez').setLevel(logging.INFO) from rez.pip import pip_install_package import warnings # a bit weird, but there used to be more options. Leave like this for now if not opts.install: parser.error("Expected one of: --install") if opts.pip_ver: with warnings.catch_warnings(): # Cause all warnings to always be triggered. warnings.simplefilter("always") warnings.warn( "The option --pip-version is deprecated and will be removed in a future version", category=DeprecationWarning ) pip_install_package( opts.PACKAGE, pip_version=opts.pip_ver, python_version=opts.py_ver, release=opts.release, prefix=opts.prefix, extra_args=opts.extra)