Version 0.6.0
Pre-releaseImportant notes
- While in active use on various CI systems for various projects, pyctdev remains unsuitable for use by humans (that is planned for the next release, 0.7).
- Most of the changes in this release are 1.5 years old; some have been in use on various projects for various periods of time.
- Don't use any of the new features introduced in this release! This release's new features expect you to use setup.cfg, but we are likely to move away from setup.cfg in the next release, which means you would likely have to change again.
- This release should be backwards compatible with 0.5 (incompatibility is a bug - please report).
Background
pyctdev expects python projects to use python setuptools config to declare as much common packaging info as they can (e.g. description, dependencies, etc). It could be a different format (e.g. conda meta.yaml, setup.py, pyproject.toml, whatever). But whatever's used, it's probably not possible for project authors to express in only one packaging tool's existing config everything they know to help packagers. This release allows projects to add some custom things to setup.cfg, so that project authors can give more hints to packagers. pyctdev will use those hints when packaging (where possible, depending on what kind of packages it's making). And manual/semi-manual packagers (e.g. conda-forge package maintainers) could read those hints.
New features
-
Optional dependency version pinning. E.g. to optionally generate pinned packages and/or environments containing versions of dependencies that are known to be mutually compatible. (Conda only right now; should be added to pip ecosystem too.)
-
"Namespace maps". E.g. because the pypi name doesn't match the conda main ("defaults") name which doesn't match conda-forge name. https://github.com/pyviz/pyct/issues/42.
-
Declare non-python (non-pypi) dependencies. E.g. a dependency not on pypi yet, or a lower level ("system") dependency that is unlikely ever to be on pypi. Python project authors may still know about constraints to be applied where possible e.g. with conda, apt, etc. (Currently only conda; could support other package managers in future.)
-
Support for multiple packages where the packaging system isn't like pip/pypi. E.g. conda default package might include everything, while pip/pypi default is minimal dependencies. Project can declare mapping of packages to python extras.
-
Can generate environment files from info in setup.cfg (not just actual environments). Can pin and filter dependencies (from info in setup.cfg). Note: currently only conda ecosystem; should be added for python ecosystem too.
-
Conda recipe generation (not just using conda build's templating).
Other changes
- Fix existing env export task (export from actual env).
- Default to package name from setup.cfg with no extras if no package name supplied.
- Allow to override channel pyctdev uses to install itself into an env.
- Allow to skip info comments in env export.
- Print advert about pyctdev in generated files.
- Switch to python 37 on travis, and add py37 to test matrix.
- Fixes for conda run command API changes.
Full list of changes since the previous release: v0.5.5...v0.6.0