Skip to content

PyPI/python package ingester/converter for the rez package manager

License

Notifications You must be signed in to change notification settings

JeanChristopheMorinPerso/rez-pip

Repository files navigation

rez-pip

Coverage

rez-pip is a rez command-line plugin that you can use to make package from the Python Package Index and other indexes available to your rez package ecosystem.

Features

  • Simpler to use thanks to the vendoring of pip.
  • Does not support installing packages for Python 2.
  • Only creates per python version variants when absolutely necessary. For example, it won't create per python version variants when installing a package that has console scripts.
  • Better output logs.
  • Implemented as an out-of-tree plugin, which means faster development cycle and more frequent releases.
  • Plugin system that allows for easy extensibility (experimental).
  • Maintained by the rez maintainers.

TODOs

  • Install packages without using pip
  • Specify Python version to use
  • Better logs and CLI experience
    • Use logging
    • Progress bars for download?
  • Confirm that Python 2 is supported
    • It is not...
  • Confirm that the theory works as expected
  • Windows support
  • Hook into rez
    • Install each package in a different --target
    • Create rez package
    • Copy distribution files to rez package.
    • Make it available as a rez plugin/sub-command
    • Discover Python package using rez and use that when available. I think it's still fine to support non-rezified Python interpreters though.
  • Accept multiple package names as input
  • Accept requirements files as input
  • Accept wheel files as input
  • Properly support platform tags (wheels tags) so that GLIBC is respected, min macOS is also supported.
  • Correctly handle Requires-Python metadata.
  • Review all TODOs in the code.
  • What whould we do with rez.system and rez.vendor.version?
  • Gather a list of problematic packages from GitHub and test against them.
  • Go through GitHub issues and summarize what needs to be covered by the new rez-pip.
  • Support abi3 wheels (to avoid having to re-install C extensions for every python version).

Packages to test against