beni
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 PEP 621
()/flit
() + conda
()
This is a specific tool to fascilitate one workflow of using flit and conda together. The assumptions are:
PEP 621
() and/or flit
() and pyproject.toml
to describe your dependencies.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.
pyproject.toml
to automatically generate a conda forge recipe?pyproject.toml
file in some way to create an environment out of it?pip install beni
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 packageconda env create -f bind/environment.yml && conda activate <module name> && flit install --symlink
to your README as the dev setup.$ 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. 'production' means no extras,
'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 given.
--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
conda env create -f environment.yml
conda activate beni
pre-commit install
flit install --symlink