Skip to main content

Generate environment.yml from pyproject.toml

Project description

beni

Code style: black .github/workflows/pythonpackage.yml PyPi Package

Common names: Bolivian anaconda, Beni anaconda

Eunectes beniensis is a non-venomous boa species known only from the northeastern parts of Bolivia.

The four-metre long Eunectes beniensis was initially believed to be the result of hybridization between green and yellow anacondas, but was later determined to be a distinct species. The taxonomic status is not clear, due to lack of information and the appearance similarity to Eunectes notaeus. It is closely related to Eunectes notaeus and Eunectes deschauenseei.

beni is flit + conda

What?

This is a specific tool to fascilitate one workflow of using flit and conda together. The assumptions are:

  1. You have a repository with at least one Python package
  2. You use flit and pyproject.toml to describe your dependencies
  3. You want to use Conda to manage local development but you wanna release your package on PyPi.
  4. You want to generate an environment.yml for local development that will install as many of your Pypi dependencies through Conda as possible.

Without this tool you have to manually keep your environment.yml up to date with all your pyproject.toml files, which is error prone and time consuming.

Unsolved issues

  1. What if the conda forge name is different than the pypi name? We should keep a list of these mappings.
  2. How do we use the pyproject.toml to automatically generate a conda forge recipe?
  3. In the future could conda just read from the pyproject.toml file in some way to create an environment out of it?

Usage

  1. pip install beni
  2. Run beni <path to pyproject.toml> [<another path to pyproject.toml>] > binder/environment.yml to generate an environment file. It adds all your requirements that are conda forge packages to this environment and names it after the first pyproject.toml module. each of your requirements to see if there is an equivalent conda forge package
  3. Add conda env create -f bind/environment.yml && conda activate <module name> && flit install --symlink to your README as the dev setup.

Example

$ beni -h
usage: beni [-h] [--deps {all,production,develop,extras}] [--extras extra1,...]
            [--ignore [foo [bar ...]]]
            pyproject.toml [pyproject.toml ...]

Generate an environment.yml.

positional arguments:
  pyproject.toml        flit config files

optional arguments:
  -h, --help            show this help message and exit
  --deps {all,production,develop,extras}
                        Which dependencies to emit. 'develop' means the extras 'test', 'doc', and 'dev',
                        'all' means all extras, and 'extras' means the ones specified in `--extras` or all
                        extras if `--extras` is not specified.
  --extras extra1,...   Install the dependencies of these (comma separated) extras additionally to the ones
                        implied by --deps. --extras=all can be useful in combination with --deps=production.
  --ignore [foo [bar ...]]
                        Conda packages to ignore

$ cat pyproject.toml
[tool.flit.metadata]
requires = [
    "typing_extensions",
    "typing_inspect",
    "python-igraph=0.8.0"
]
requires-python = ">=3.7"
[tool.flit.metadata.requires-extra]
test = [
    "pytest",
    "pytest-cov",
    "pytest-mypy",
    "pytest-randomly",
    "pytest-xdist",
    "pytest-testmon",
    "pytest-pudb",
    "mypy"
]
doc = [
    "sphinx",
    "sphinx-autodoc-typehints",
    "sphinx_rtd_theme",
    'recommonmark',
    "nbsphinx",
    "ipykernel",
    "IPython",
    "sphinx-autobuild"
]
dev = [
    "jupyterlab>=1.0.0",
    "nbconvert",
    "pudb"
]

$ beni pyproject.toml
name: metadsl
channels:
  - conda-forge
dependencies:
  - python>=3.7
  - pip
  - pip:
    - flit
  - typing_extensions
  - typing_inspect
  - python-igraph=0.8.0
  - pytest
  - pytest-cov
  - pytest-mypy
  - pytest-randomly
  - pytest-xdist
  - pytest-testmon
  - pytest-pudb
  - mypy
  - jupyterlab>=1.0.0
  - nbconvert
  - pudb

Development

conda env create -f environment.yml
conda activate beni
flit install --symlink

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

beni-0.4.2.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

beni-0.4.2-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file beni-0.4.2.tar.gz.

File metadata

  • Download URL: beni-0.4.2.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.24.0

File hashes

Hashes for beni-0.4.2.tar.gz
Algorithm Hash digest
SHA256 89f50d58198062d5588eb6de1caffef159c8454fa7e2af12842bfa0de2a02f2f
MD5 9959b9626bee326f27788f48af327b82
BLAKE2b-256 e024c03e0db9384d15ebfbf4c22dc5218d8c5e45c78914570f54fe7ed72d3eec

See more details on using hashes here.

File details

Details for the file beni-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: beni-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.24.0

File hashes

Hashes for beni-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 987caaba986d70bed2085390e5751244c0e0f29f69f0711cc3afe154b007884f
MD5 d3c95de136ea68db7ebf97dcc15cc048
BLAKE2b-256 7df307dfbe3aea645d9dc917dd1fafc1a8d1c9f328a9a8eeef684ddb6d7b7c3c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page