123456789101112131415161718192021222324 |
- import configparser
- # There's two sets of requirements relevant for python. The first set in requirements.txt is installed
- # during the Docker build and is used for linting, building, and uploading the PGV python package to PyPI.
- #
- # The other set is in the install_requires section of setup.cfg. This is what's needed to use the package.
- #
- # We use pip_install from @rules_python to install these requirements in order to test the package. Unfortunately:
- # - pip_install can't handle setup.cfg directly, it wants a file containing a simple list
- # - as a bazel repository_rule, pip_install won't accept generated files as input so we can't autogen
- # this simpler file out of setup.cfg as part of bazel build.
- #
- # So instead here we just check that requirements.in matches what's in install_requires of setup.cfg.
- with open('python/requirements.in', 'r') as reqs:
- lines = reqs.readlines()
- requirements_dot_in_set = {line.strip() for line in lines if line.strip() and not line.startswith("#")}
- config = configparser.ConfigParser()
- config.read('python/setup.cfg')
- setup_dot_cfg_set = {line for line in config['options']['install_requires'].split() if not line.startswith("#")}
- assert requirements_dot_in_set == setup_dot_cfg_set
|