Name | pdm-conda JSON |
Version |
0.18.3
JSON |
| download |
home_page | None |
Summary | A PDM plugin to resolve/install/uninstall project dependencies with Conda |
upload_time | 2024-07-15 20:35:46 |
maintainer | None |
docs_url | None |
author | Marcos Pastorini |
requires_python | <3.13,>=3.10 |
license | MIT |
keywords |
pdm
plugin
conda
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# pdm-conda
A PDM plugin to resolve/install/uninstall project dependencies with Conda.
## Configuration
| Config item | Description | Default value | Possible values | Environment variable |
|-----------------------------------|------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|--------------------------------|---------------------------------|
| `conda.active` | Force plugin usage or not | `True` | | `PDM_CONDA_ACTIVE` |
| `conda.runner` | Conda runner executable | `conda` | `conda`, `mamba`, `micromamba` | `PDM_CONDA_RUNNER` |
| `conda.solver` | Solver to use for Conda resolution | `conda` | `conda`, `libmamba` | `PDM_CONDA_SOLVER` |
| `conda.channels` | Conda channels to use, order will be enforced | `[]` | | |
| `conda.as-default-manager` | Use Conda to install all possible requirements | `False` | | `PDM_CONDA_AS_DEFAULT_MANAGER` |
| `conda.batched-commands` | Execute batched install and remove Conda commands, when True the command is executed only at the end | `False` | | `PDM_CONDA_BATCHED_COMMANDS` |
| `conda.excludes` | Array of dependencies to exclude from Conda resolution | `[]` | | |
| `conda.auto-excludes` | If cannot find package with Conda, add it to excludes list | `False` | | `PDM_CONDA_AUTO_EXCLUDES` |
| `conda.installation-method` | Installation method to use when installing dependencies with Conda | `hard-link` | `hard-link`, `copy` | `PDM_CONDA_INSTALLATION_METHOD` |
| `conda.dependencies` | Array of dependencies to install with Conda, analogue to `project.dependencies` | `[]` | | |
| `conda.optional-dependencies` | Groups of optional dependencies to install with Conda, analogue to `project.optional-dependencies` | `{}` | | |
| `conda.dev-dependencies` | Groups of development dependencies to install with Conda, analogue to `tool.pdm.dev-dependencies` | `{}` | | |
| `conda.pypi-mapping.download-dir` | PyPI-Conda mapping download directory | `$HOME/.pdm-conda/` | | `PDM_CONDA_PYPI_MAPPING_DIR` |
| `conda.pypi-mapping.url` | PyPI-Conda mapping url | `https://github.com/regro/cf-graph-countyfair/raw/master/mappings/pypi/grayskull_pypi_mapping.yaml` | | `PDM_CONDA_PYPI_MAPPING_URL` |
All configuration items use prefix `pdm.tool`, this is a viable configuration:
```toml
[tool.pdm.conda]
runner = "micromamba"
channels = ["conda-forge/noarch", "conda-forge", "anaconda"]
dependencies = ["pdm"]
as-default-manager = true
auto-excludes = true
solver = "libmamba"
excludes = ["pytest-cov"] # don't install with conda even if it's a dependency from other packages
installation-method = "copy"
batched-commands = true
active = false
[tool.pdm.conda.pypi-mapping]
download-dir = "/tmp"
url = "https://url/to/mapping.yaml"
[tool.pdm.conda.optional-dependencies]
extra = ["anaconda:ffmpeg"] # non python dependency, obtained from anaconda channel
[tool.pdm.conda.dev-dependencies]
dev = ["pytest"]
```
## Usage
This plugin adds capabilities to the default PDM commands.
### Working commands
The following commands were tested and work:
* `pdm init`:
* To list/use Conda managed python you must specify the Conda runner with `-cr` or `--runner`.
* You also can specify a default Conda channel with `-c` or `--channel`.
* `pdm lock`
* `pdm install`
* `pdm add`:
* To add a Conda managed package `--conda` flag can be used multiple times followed a package (analogue
to `--editable`).
* You can specify per package Conda channel using conda notation `channel::package`.
* You also can specify a default Conda channel with `-c` or `--channel`.
* With flag `-r` or `--runner` you can specify the Conda runner to use.
* With flag `-ce` or `--conda-excludes` you can add PyPi packages to the excluded from Conda resolution.
* With flag `--conda-as-default-manager` you can set `conda.as-default-manager` to `True`.
* `pdm remove`
* `pdm update`
* `pdm list`
* `pdm info`
* `pdm use`
* `pdm venv`:
* `create`:
* To list/use Conda managed python you must specify the Conda runner with `-w` or `--with`.
* You can completely override the Conda environment name with `-cn` or `--conda-name`, the resulting environment
won't follow PDM environment naming conventions.
* `list`
* `remove`
### How it works
#### Using conda/libmamba solver
PDM invokes Conda solver to resolve conda packages each time a PDM candidate makes a change in the last Conda
resolution.
If only Conda packages are used (i.e. setting `conda.as-default-manager` to `true` and no `conda.excludes`) then Conda
solver is invoked only once.
### Settings overridden
In order to use Conda to install packages some settings were overriden:
* `python.use_venv` if conda settings detected in `pyproject.toml` this setting is set to `True`.
* `python.in_project` if conda settings detected in `pyproject.toml` and this setting was not previously set then is set
to `False`.
* `python.use_pyenv` if conda settings detected in `pyproject.toml` this setting is set to `False`.
* `venv.backend` if conda settings detected in `pyproject.toml` this setting is set to `conda.runner`.
* `venv.location` if conda settings detected in `pyproject.toml`, `VIRTUAL_ENV` or `CONDA_PREFIX` environment
variables are set and this setting was not previously set then is set to the value of the environment variable.
* `install.parallel` if some Conda managed packages are to be uninstalled or updated this option is disabled
momentarily.
Some environment variables were overridden too:
* `PDM_IGNORE_ACTIVE_VENV` if conda settings detected in `pyproject.toml` and `VIRTUAL_ENV` or `CONDA_PREFIX`
environment variables are set then this variable is set to `False`.
All this changes will be maintained only during the execution of the command, after that the settings will be restored
to the previous values.
#### Lock strategy
* Lock strategy `no_cross_platform` for `pdm lock` is always forced as Conda doesn't produce cross-platform locks.
* Lock strategy `static_urls` for Conda managed packages is always forced, independently of the lock strategy used for
PyPi packages.
* Lock strategy `direct_minimal_versions` for Conda managed packages will partially work as Conda doesn't have an option
to force this mode on a resolution.
## Development
For development `docker-compose` files exist in `deploy` directory, helper script `deploy/docker-compose.sh` can be used
for executing docker.
For running dev environment:
```bash
bash deploy/docker-compose.sh -d up
```
And for productive environment:
```bash
bash deploy/docker-compose.sh up
```
Raw data
{
"_id": null,
"home_page": null,
"name": "pdm-conda",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.13,>=3.10",
"maintainer_email": null,
"keywords": "pdm, plugin, conda",
"author": "Marcos Pastorini",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/4f/57/a2f423b6782d69ac15a798894cd2586648290d19aa3cdf0c479fa2a3474b/pdm_conda-0.18.3.tar.gz",
"platform": null,
"description": "# pdm-conda\n\nA PDM plugin to resolve/install/uninstall project dependencies with Conda.\n\n## Configuration\n\n| Config item | Description | Default value | Possible values | Environment variable |\n|-----------------------------------|------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|--------------------------------|---------------------------------|\n| `conda.active` | Force plugin usage or not | `True` | | `PDM_CONDA_ACTIVE` |\n| `conda.runner` | Conda runner executable | `conda` | `conda`, `mamba`, `micromamba` | `PDM_CONDA_RUNNER` |\n| `conda.solver` | Solver to use for Conda resolution | `conda` | `conda`, `libmamba` | `PDM_CONDA_SOLVER` |\n| `conda.channels` | Conda channels to use, order will be enforced | `[]` | | |\n| `conda.as-default-manager` | Use Conda to install all possible requirements | `False` | | `PDM_CONDA_AS_DEFAULT_MANAGER` |\n| `conda.batched-commands` | Execute batched install and remove Conda commands, when True the command is executed only at the end | `False` | | `PDM_CONDA_BATCHED_COMMANDS` |\n| `conda.excludes` | Array of dependencies to exclude from Conda resolution | `[]` | | |\n| `conda.auto-excludes` | If cannot find package with Conda, add it to excludes list | `False` | | `PDM_CONDA_AUTO_EXCLUDES` |\n| `conda.installation-method` | Installation method to use when installing dependencies with Conda | `hard-link` | `hard-link`, `copy` | `PDM_CONDA_INSTALLATION_METHOD` |\n| `conda.dependencies` | Array of dependencies to install with Conda, analogue to `project.dependencies` | `[]` | | |\n| `conda.optional-dependencies` | Groups of optional dependencies to install with Conda, analogue to `project.optional-dependencies` | `{}` | | |\n| `conda.dev-dependencies` | Groups of development dependencies to install with Conda, analogue to `tool.pdm.dev-dependencies` | `{}` | | |\n| `conda.pypi-mapping.download-dir` | PyPI-Conda mapping download directory | `$HOME/.pdm-conda/` | | `PDM_CONDA_PYPI_MAPPING_DIR` |\n| `conda.pypi-mapping.url` | PyPI-Conda mapping url | `https://github.com/regro/cf-graph-countyfair/raw/master/mappings/pypi/grayskull_pypi_mapping.yaml` | | `PDM_CONDA_PYPI_MAPPING_URL` |\n\nAll configuration items use prefix `pdm.tool`, this is a viable configuration:\n\n```toml\n[tool.pdm.conda]\nrunner = \"micromamba\"\nchannels = [\"conda-forge/noarch\", \"conda-forge\", \"anaconda\"]\ndependencies = [\"pdm\"]\nas-default-manager = true\nauto-excludes = true\nsolver = \"libmamba\"\nexcludes = [\"pytest-cov\"] # don't install with conda even if it's a dependency from other packages\ninstallation-method = \"copy\"\nbatched-commands = true\nactive = false\n\n[tool.pdm.conda.pypi-mapping]\ndownload-dir = \"/tmp\"\nurl = \"https://url/to/mapping.yaml\"\n\n[tool.pdm.conda.optional-dependencies]\nextra = [\"anaconda:ffmpeg\"] # non python dependency, obtained from anaconda channel\n\n[tool.pdm.conda.dev-dependencies]\ndev = [\"pytest\"]\n```\n\n## Usage\n\nThis plugin adds capabilities to the default PDM commands.\n\n### Working commands\n\nThe following commands were tested and work:\n\n* `pdm init`:\n * To list/use Conda managed python you must specify the Conda runner with `-cr` or `--runner`.\n * You also can specify a default Conda channel with `-c` or `--channel`.\n* `pdm lock`\n* `pdm install`\n* `pdm add`:\n * To add a Conda managed package `--conda` flag can be used multiple times followed a package (analogue\n to `--editable`).\n * You can specify per package Conda channel using conda notation `channel::package`.\n * You also can specify a default Conda channel with `-c` or `--channel`.\n * With flag `-r` or `--runner` you can specify the Conda runner to use.\n * With flag `-ce` or `--conda-excludes` you can add PyPi packages to the excluded from Conda resolution.\n * With flag `--conda-as-default-manager` you can set `conda.as-default-manager` to `True`.\n* `pdm remove`\n* `pdm update`\n* `pdm list`\n* `pdm info`\n* `pdm use`\n* `pdm venv`:\n * `create`:\n * To list/use Conda managed python you must specify the Conda runner with `-w` or `--with`.\n * You can completely override the Conda environment name with `-cn` or `--conda-name`, the resulting environment\n won't follow PDM environment naming conventions.\n * `list`\n * `remove`\n\n### How it works\n\n#### Using conda/libmamba solver\n\nPDM invokes Conda solver to resolve conda packages each time a PDM candidate makes a change in the last Conda\nresolution.\n\nIf only Conda packages are used (i.e. setting `conda.as-default-manager` to `true` and no `conda.excludes`) then Conda\nsolver is invoked only once.\n\n### Settings overridden\n\nIn order to use Conda to install packages some settings were overriden:\n\n* `python.use_venv` if conda settings detected in `pyproject.toml` this setting is set to `True`.\n* `python.in_project` if conda settings detected in `pyproject.toml` and this setting was not previously set then is set\n to `False`.\n* `python.use_pyenv` if conda settings detected in `pyproject.toml` this setting is set to `False`.\n* `venv.backend` if conda settings detected in `pyproject.toml` this setting is set to `conda.runner`.\n* `venv.location` if conda settings detected in `pyproject.toml`, `VIRTUAL_ENV` or `CONDA_PREFIX` environment\n variables are set and this setting was not previously set then is set to the value of the environment variable.\n* `install.parallel` if some Conda managed packages are to be uninstalled or updated this option is disabled\n momentarily.\n\nSome environment variables were overridden too:\n\n* `PDM_IGNORE_ACTIVE_VENV` if conda settings detected in `pyproject.toml` and `VIRTUAL_ENV` or `CONDA_PREFIX`\n environment variables are set then this variable is set to `False`.\n\nAll this changes will be maintained only during the execution of the command, after that the settings will be restored\nto the previous values.\n\n#### Lock strategy\n\n* Lock strategy `no_cross_platform` for `pdm lock` is always forced as Conda doesn't produce cross-platform locks.\n* Lock strategy `static_urls` for Conda managed packages is always forced, independently of the lock strategy used for\n PyPi packages.\n* Lock strategy `direct_minimal_versions` for Conda managed packages will partially work as Conda doesn't have an option\n to force this mode on a resolution.\n\n## Development\n\nFor development `docker-compose` files exist in `deploy` directory, helper script `deploy/docker-compose.sh` can be used\nfor executing docker.\n\nFor running dev environment:\n\n```bash\nbash deploy/docker-compose.sh -d up\n```\n\nAnd for productive environment:\n\n```bash\nbash deploy/docker-compose.sh up\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A PDM plugin to resolve/install/uninstall project dependencies with Conda",
"version": "0.18.3",
"project_urls": {
"Changelog": "https://github.com/macro128/pdm-conda/blob/main/CHANGELOG.md",
"Homepage": "https://github.com/macro128/pdm-conda"
},
"split_keywords": [
"pdm",
" plugin",
" conda"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "25a337474a915f103627855352d00da543586c61e76bd0398365798dcd1b2677",
"md5": "e6d3952c2fe95cb5bd4b1ce75315a5dc",
"sha256": "c00f562949bd6cdd1c2618e78e7cd9bde98aff2d168d2ec05b9d74373451ffaf"
},
"downloads": -1,
"filename": "pdm_conda-0.18.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e6d3952c2fe95cb5bd4b1ce75315a5dc",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.13,>=3.10",
"size": 56175,
"upload_time": "2024-07-15T20:35:43",
"upload_time_iso_8601": "2024-07-15T20:35:43.920795Z",
"url": "https://files.pythonhosted.org/packages/25/a3/37474a915f103627855352d00da543586c61e76bd0398365798dcd1b2677/pdm_conda-0.18.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4f57a2f423b6782d69ac15a798894cd2586648290d19aa3cdf0c479fa2a3474b",
"md5": "91ebfa0cd65a54bd3bcb6d8e6d40a9b3",
"sha256": "f3382941c18d72401d89e780f751b283920e8c6ffbef8046db47b8cb8524b2bf"
},
"downloads": -1,
"filename": "pdm_conda-0.18.3.tar.gz",
"has_sig": false,
"md5_digest": "91ebfa0cd65a54bd3bcb6d8e6d40a9b3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13,>=3.10",
"size": 43345,
"upload_time": "2024-07-15T20:35:46",
"upload_time_iso_8601": "2024-07-15T20:35:46.995375Z",
"url": "https://files.pythonhosted.org/packages/4f/57/a2f423b6782d69ac15a798894cd2586648290d19aa3cdf0c479fa2a3474b/pdm_conda-0.18.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-15 20:35:46",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "macro128",
"github_project": "pdm-conda",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "pdm-conda"
}