Package: dependente
Dependente: Inspect Python package dependenciesPart of theFatiando a TerraprojectAboutDependenteis a small command-line program for extracting
dependencies from Python project files (pyproject.tomlandsetup.cfg)
and converting them intorequirements.txt-type files for use withpipandconda.The main reason to do so is to control and customize the testing
environment on continuous integration (CI) while avoiding repeating
the list of dependencies in multiple places.This project was inspired by some of the GitHub Actions configuration of theMetPyproject.InstallingDependenteis available from PyPI:python -m pip install dependenteand conda-forge:conda install dependente -c conda-forgeUsingIn these examples, we'll parse the dependencies fromPooch.Parse the install (run-time) dependencies fromsetup.cfg:$ dependente > requirements.txt
Extracting dependencies: install
Parsing setup.cfg
  - 3 dependencies found
Printing 3 dependencies to standard output
Done!

$ cat requirements.txt
# Install (run-time) dependencies from setup.cfg
appdirs>=1.3.0
packaging>=20.0
requests>=2.19.0Also read the build dependencies frompyproject.tomland extra dependencies
fromsetup.cfg:$ dependente --source install,build,extras > requirements-all.txt
Extracting dependencies: install,build,extras
Parsing setup.cfg
  - 6 dependencies found
Parsing pyproject.toml
  - 3 dependencies found
Printing 9 dependencies to standard output
Done!

$ cat requirements-all.txt
# Extra (optional) dependencies from setup.cfg
#   extra: progress
tqdm>=4.41.0,<5.0.0
#   extra: sftp
paramiko>=2.7.0
#   extra: xxhash
xxhash>=1.4.3
# Install (run-time) dependencies from setup.cfg
appdirs>=1.3.0
packaging>=20.0
requests>=2.19.0
# Build dependencies from pyproject.toml
setuptools>=45
wheel
setuptools_scm[toml]>=6.2Pin the dependencies to their oldest supported version (useful for testing
in CI):$ dependente --source install,extras --oldest > requirements-oldest.txt
Extracting dependencies: install,extras
Parsing setup.cfg
  - 6 dependencies found
Pinning dependencies to their oldest versions
Printing 6 dependencies to standard output
Done!

$ cat requirements-oldest.txt
# Extra (optional) dependencies from setup.cfg
#   extra: progress
tqdm==4.41.0
#   extra: sftp
paramiko==2.7.0
#   extra: xxhash
xxhash==1.4.3
# Install (run-time) dependencies from setup.cfg
appdirs==1.3.0
packaging==20.0
requests==2.19.0See a full list of options:$ dependente --help
Usage: dependente [OPTIONS]

  Dependente: Inspect Python package dependencies

  Reads from the configuration files in the current directory and outputs to
  stdout a list of dependencies into a format accepted by pip.

  Supported formats:

  * pyproject.toml (only build-system > requires)

  * setup.cfg (install_requires and options.extras_require)

Options:
  -s, --source TEXT            Which sources of dependency information to
                               extract. Can be any combination of
                               'install,extras,build'.  [default: install]
  -o, --oldest                 If enabled, will pin dependencies to the oldest
                               accepted version.  [default: False]
  -v, --verbose / -q, --quiet  Print information during execution / Don't
                               print  [default: verbose]
  --version                    Show the version and exit.
  -h, --help                   Show this message and exit.LimitationsThe current implementation is a proof-of-concept and has some limitations:Input files must be in the current working directory.Reads all extra dependencies simultaneously (can't separate between differentoption.extras_requiresfields).Only supports reading fromsetup.cfgandpyproject.toml(build
dependencies only).Of course, all of these could be addressed if there is enough interest.
Issues and PRs are welcome!DependenciesWe use the following dependencies (seesetup.cfgfor specific version
constraints):clickfor building the command-line
interface.tomlito parse the TOML configuration
files.Contacting UsFind out more about how to reach us atfatiando.org/contactContributingCode of conductPlease note that this project is released with aCode of Conduct.
By participating in this project you agree to abide by its terms.Contributing GuidelinesPlease read ourContributing Guideto see how you can help and give feedback.LicenseDependente is free and open-source software distributed under theMIT License.