Console script for pyproject2conda (cli)#

Functions:

main(version, ] = False, columns, ] = None)

Extract conda environment.yaml and pip requirement.txt files from pyproject.toml

create_list(pyproject_filename, ], verbose, ...)

List available extras.

yaml(pyproject_filename, ], extras, ...)

Create yaml file from dependencies and optional-dependencies.

requirements(pyproject_filename, ], extras, ...)

Create requirements.txt for pip dependencies.

project(pyproject_filename, ], envs, ...)

Create multiple environment files from pyproject.toml specification.

conda_requirements(pyproject_filename, ], ...)

Create requirement files for conda and pip.

to_json(pyproject_filename, ], extras, ...)

Create json representation.

pyproject2conda.cli.main(version: Annotated[bool, <typer.models.OptionInfo object at 0x7f76fe0dd950>]=False, columns: Annotated[int | None, <typer.models.OptionInfo object at 0x7f76fe0dc050>]=None) None[source]#

Extract conda environment.yaml and pip requirement.txt files from pyproject.toml

Note that all subcommands can be called with shortest possible match. Also, you can call with any of pyproject2conda, p2c, python -m pyproject2conda. For example,

# these are equivalent
$ pyproject2conda yaml ...
$ p2c y ...
$ python -m pyproject2conda yaml ...
pyproject2conda.cli.create_list(pyproject_filename: ~typing.Annotated[~pathlib.Path, <typer.models.OptionInfo object at 0x7f76fe1d1310>], verbose: ~typing.Annotated[int | None, <typer.models.OptionInfo object at 0x7f76fe1d1d10>] = None) None[source]#

List available extras.

pyproject2conda.cli.yaml(pyproject_filename: ~typing.Annotated[~pathlib.Path, <typer.models.OptionInfo object at 0x7f76fe1d1310>], extras: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d1450>] = None, groups: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d1590>] = None, extras_or_groups: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d16d0>] = None, channels: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d1810>] = None, output: ~typing.Annotated[~pathlib.Path | None, <typer.models.OptionInfo object at 0x7f76fe1d1a90>] = None, name: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d1950>] = None, python_include: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d20d0>] = None, python_version: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d2210>] = None, python: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d2350>] = None, skip_package: ~typing.Annotated[bool, <typer.models.OptionInfo object at 0x7f76fe1d1e50>] = False, pip_only: ~typing.Annotated[bool, <typer.models.OptionInfo object at 0x7f76fe1d1f90>] = False, header: ~typing.Annotated[bool | None, <typer.models.OptionInfo object at 0x7f76fe1d2490>] = None, custom_command: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d25d0>] = None, overwrite: ~typing.Annotated[~pyproject2conda._schema.Overwrite, <typer.models.OptionInfo object at 0x7f76fe1d1bd0>] = Overwrite.force, verbose: ~typing.Annotated[int | None, <typer.models.OptionInfo object at 0x7f76fe1d1d10>] = None, conda_deps: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d2710>] = None, pip_deps: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d2850>] = None, allow_empty: ~typing.Annotated[bool, <typer.models.OptionInfo object at 0x7f76fe1d3390>] = False) None[source]#

Create yaml file from dependencies and optional-dependencies.

pyproject2conda.cli.requirements(pyproject_filename: ~typing.Annotated[~pathlib.Path, <typer.models.OptionInfo object at 0x7f76fe1d1310>], extras: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d1450>] = None, groups: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d1590>] = None, extras_or_groups: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d16d0>] = None, output: ~typing.Annotated[~pathlib.Path | None, <typer.models.OptionInfo object at 0x7f76fe1d1a90>] = None, skip_package: ~typing.Annotated[bool, <typer.models.OptionInfo object at 0x7f76fe1d1e50>] = False, header: ~typing.Annotated[bool | None, <typer.models.OptionInfo object at 0x7f76fe1d2490>] = None, custom_command: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d25d0>] = None, overwrite: ~typing.Annotated[~pyproject2conda._schema.Overwrite, <typer.models.OptionInfo object at 0x7f76fe1d1bd0>] = Overwrite.force, verbose: ~typing.Annotated[int | None, <typer.models.OptionInfo object at 0x7f76fe1d1d10>] = None, pip_deps: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d2850>] = None, allow_empty: ~typing.Annotated[bool, <typer.models.OptionInfo object at 0x7f76fe1d3390>] = False) None[source]#

Create requirements.txt for pip dependencies. Note that all requirements are normalized using packaging.requirements.Requirement

pyproject2conda.cli.project(pyproject_filename: ~typing.Annotated[~pathlib.Path, <typer.models.OptionInfo object at 0x7f76fe1d1310>], envs: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d2990>] = None, template: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d2ad0>] = None, template_python: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d2c10>] = None, pip_deps: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d2850>] = None, conda_deps: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d2710>] = None, reqs_ext: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d2d50>] = '.txt', yaml_ext: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d2e90>] = '.yaml', header: ~typing.Annotated[bool | None, <typer.models.OptionInfo object at 0x7f76fe1d2490>] = None, custom_command: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d25d0>] = None, overwrite: ~typing.Annotated[~pyproject2conda._schema.Overwrite, <typer.models.OptionInfo object at 0x7f76fe1d1bd0>] = Overwrite.force, verbose: ~typing.Annotated[int | None, <typer.models.OptionInfo object at 0x7f76fe1d1d10>] = None, dry: ~typing.Annotated[bool, <typer.models.OptionInfo object at 0x7f76fe1d2fd0>] = False, pip_only: ~typing.Annotated[bool, <typer.models.OptionInfo object at 0x7f76fe1d1f90>] = False, allow_empty: ~typing.Annotated[bool | None, <typer.models.OptionInfo object at 0x7f76fe1d3390>] = None) None[source]#

Create multiple environment files from pyproject.toml specification.

Note that if you specify options in pyproject.toml, the name is usually the same as the command line option. For cases where the option can take multiple values, the config file option will be plural. For example, the command line option --group becomes the config file option groups = .... Boolean options like --header/--no-header become header = true/false in the config file.

pyproject2conda.cli.conda_requirements(pyproject_filename: ~typing.Annotated[~pathlib.Path, <typer.models.OptionInfo object at 0x7f76fe1d1310>], path_conda: ~typing.Annotated[~pathlib.Path | None, <typer.models.ArgumentInfo object at 0x7f76fc2f3250>] = None, path_pip: ~typing.Annotated[~pathlib.Path | None, <typer.models.ArgumentInfo object at 0x7f76fc2f3390>] = None, extras: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d1450>] = None, groups: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d1590>] = None, extras_or_groups: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d16d0>] = None, python_include: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d20d0>] = None, python_version: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d2210>] = None, python: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d2350>] = None, channels: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d1810>] = None, skip_package: ~typing.Annotated[bool, <typer.models.OptionInfo object at 0x7f76fe1d1e50>] = False, prefix: ~typing.Annotated[~pathlib.Path | None, <typer.models.OptionInfo object at 0x7f76fe1d3110>] = None, prepend_channel: ~typing.Annotated[bool, <typer.models.OptionInfo object at 0x7f76fe1d3250>] = False, header: ~typing.Annotated[bool | None, <typer.models.OptionInfo object at 0x7f76fe1d2490>] = None, custom_command: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d25d0>] = None, conda_deps: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d2710>] = None, pip_deps: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d2850>] = None, verbose: ~typing.Annotated[int | None, <typer.models.OptionInfo object at 0x7f76fe1d1d10>] = None) None[source]#

Create requirement files for conda and pip.

These can be install with, for example,

conda install –file {path_conda} pip install -r {path_pip}

pyproject2conda.cli.to_json(pyproject_filename: ~typing.Annotated[~pathlib.Path, <typer.models.OptionInfo object at 0x7f76fe1d1310>], extras: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d1450>] = None, groups: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d1590>] = None, extras_or_groups: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d16d0>] = None, python_include: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d20d0>] = None, python_version: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d2210>] = None, python: ~typing.Annotated[str | None, <typer.models.OptionInfo object at 0x7f76fe1d2350>] = None, channels: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d1810>] = None, output: ~typing.Annotated[~pathlib.Path | None, <typer.models.OptionInfo object at 0x7f76fe1d1a90>] = None, skip_package: ~typing.Annotated[bool, <typer.models.OptionInfo object at 0x7f76fe1d1e50>] = False, conda_deps: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d2710>] = None, pip_deps: ~typing.Annotated[list[str] | None, <typer.models.OptionInfo object at 0x7f76fe1d2850>] = None, verbose: ~typing.Annotated[int | None, <typer.models.OptionInfo object at 0x7f76fe1d1d10>] = None, overwrite: ~typing.Annotated[~pyproject2conda._schema.Overwrite, <typer.models.OptionInfo object at 0x7f76fe1d1bd0>] = Overwrite.force) None[source]#

Create json representation.

Keys are: “dependencies”: conda dependencies. “pip”: pip dependencies. “channels”: conda channels.