Compare commits

...

6 Commits

Author SHA1 Message Date
c55ba474c7
Add parallel flag to makefile test target 2023-05-19 14:31:39 -04:00
2b75f74996
Merge pull request #90 from enpaul/enp/block-1.5
Block compatibility with Poetry-1.5 until plugin is updated
2023-05-19 14:25:54 -04:00
449381ca09
Update mdformat to mitigate CVE-2023-26303
Update markdown format with new version of mdformat
2023-05-19 14:21:17 -04:00
bb44db0f9d
Update changelog for 0.10.3 2023-05-19 14:08:35 -04:00
afaf025485
Bump version to 0.10.3 2023-05-19 13:56:45 -04:00
c984abbc2f
Update poetry requirement to remove compatibility with ^1.5 2023-05-19 13:56:00 -04:00
7 changed files with 658 additions and 554 deletions

View File

@ -2,6 +2,14 @@
See also: [Github Release Page](https://github.com/enpaul/tox-poetry-installer/releases).
## Version 0.10.3
View this release on:
[Github](https://github.com/enpaul/tox-poetry-installer/releases/tag/0.10.3),
[PyPI](https://pypi.org/project/tox-poetry-installer/0.10.3/)
- Update Poetry requirement to exclude usage with incompatible 1.5 release
## Version 0.10.2
View this release on:
@ -60,8 +68,8 @@ View this release on:
[Github](https://github.com/enpaul/tox-poetry-installer/releases/tag/0.8.4),
[PyPI](https://pypi.org/project/tox-poetry-installer/0.8.4/)
- Fix issue where incompatible package versions were selected for installation when multiple
package versions were in the lockfile
- Fix issue where incompatible package versions were selected for installation when
multiple package versions were in the lockfile
## Version 0.8.3
@ -78,9 +86,9 @@ View this release on:
[PyPI](https://pypi.org/project/tox-poetry-installer/0.8.2/)
- Improve debug-level logging for package installation, and time how long installing each
package takes. Contributed by [Rebecca
Turner](https://github.com/9999years) (#63).
- Fix crash caused by the package-under-test depending on Poetry's unsafe dependencies ([#65](https://github.com/enpaul/tox-poetry-installer/issues/65))
package takes. Contributed by [Rebecca Turner](https://github.com/9999years) (#63).
- Fix crash caused by the package-under-test depending on Poetry's unsafe dependencies
([#65](https://github.com/enpaul/tox-poetry-installer/issues/65))
## Version 0.8.1
@ -130,7 +138,8 @@ View this release on:
process
- Add integration with Poetry's compatibility
[`Marker`](https://github.com/python-poetry/poetry-core/blob/master/poetry/core/version/markers.py)
object system for determining package compatibility with the current platform ([#43](https://github.com/enpaul/tox-poetry-installer/issues/43))
object system for determining package compatibility with the current platform
([#43](https://github.com/enpaul/tox-poetry-installer/issues/43))
- Add missing PyPI classifier for Python 3
## Version 0.6.3
@ -155,8 +164,8 @@ View this release on:
[CVE-2020-29651](https://nvd.nist.gov/vuln/detail/CVE-2020-29651)
- Fix dependency identification failing when the package under test is a transient
dependency of a locked dependency specified for installation
- Fix `AttributeError` being raised while creating the Tox self-provisioned environment when
using either the
- Fix `AttributeError` being raised while creating the Tox self-provisioned environment
when using either the
[`minversion`](https://tox.readthedocs.io/en/latest/config.html#conf-minversion) or
[`requires`](https://tox.readthedocs.io/en/latest/config.html#conf-requires) Tox config
options
@ -171,8 +180,8 @@ View this release on:
installation problems
- Fix regression around handling of Poetry's unsafe packages when the unsafe package is a
transient dependency ([#33](https://github.com/enpaul/tox-poetry-installer/issues/33))
- Fix handling of Poetry's unsafe packages when the unsafe package is a primary (environment
or package) dependency
- Fix handling of Poetry's unsafe packages when the unsafe package is a primary
(environment or package) dependency
## Version 0.6.0
@ -196,7 +205,8 @@ View this release on:
[Github](https://github.com/enpaul/tox-poetry-installer/releases/tag/0.5.2),
[PyPI](https://pypi.org/project/tox-poetry-installer/0.5.2/)
- Fix always attempting to install dependencies with incompatible python version constraints
- Fix always attempting to install dependencies with incompatible python version
constraints
- Fix always attempting to install dependencies with incompatible python platforms
## Version 0.5.1
@ -218,8 +228,8 @@ View this release on:
- Add option `locked_deps` to better support both locked and unlocked dependencies in a
single environment
- Add blocking functionality when using `require_locked_deps = true` to prevent other hooks
from running after this one
- Add blocking functionality when using `require_locked_deps = true` to prevent other
hooks from running after this one
- Update documentation to include new configuration options and errors
- Update documentation to improve future maintainability
- Update module structure to move from single-file module to multi-file directory module
@ -243,7 +253,8 @@ View this release on:
[PyPI](https://pypi.org/project/tox-poetry-installer/0.3.1/)
- Fix error when installing an environment with no extras specified in the configuration
- Fix problem where only the dependencies of the sequentially last extra would be installed
- Fix problem where only the dependencies of the sequentially last extra would be
installed
- Fix regression causing no project dependencies to be installed
## Version 0.3.0
@ -265,7 +276,8 @@ View this release on:
[Github](https://github.com/enpaul/tox-poetry-installer/releases/tag/0.2.4),
[PyPI](https://pypi.org/project/tox-poetry-installer/0.2.4/)
- Fix support for Poetry-1.1 ([#2](https://github.com/enpaul/tox-poetry-installer/issues/2))
- Fix support for Poetry-1.1
([#2](https://github.com/enpaul/tox-poetry-installer/issues/2))
- Include tests in sdist ([#8](https://github.com/enpaul/tox-poetry-installer/issues/8))
## Version 0.2.3
@ -274,8 +286,10 @@ View this release on:
[Github](https://github.com/enpaul/tox-poetry-installer/releases/tag/0.2.3),
[PyPI](https://pypi.org/project/tox-poetry-installer/0.2.3/)
- Fix usage of the plugin in non-Poetry based projects ([#1](https://github.com/enpaul/tox-poetry-installer/issues/1))
- Fix treating dependency names as case sensitive when they shouldn't be ([#7](https://github.com/enpaul/tox-poetry-installer/issues/7))
- Fix usage of the plugin in non-Poetry based projects
([#1](https://github.com/enpaul/tox-poetry-installer/issues/1))
- Fix treating dependency names as case sensitive when they shouldn't be
([#7](https://github.com/enpaul/tox-poetry-installer/issues/7))
## Version 0.2.2
@ -284,7 +298,8 @@ View this release on:
[PyPI](https://pypi.org/project/tox-poetry-installer/0.2.2/)
- Fix breaking when running Tox in projects that do not use Poetry for their
environment/dependency management ([#1](https://github.com/enpaul/tox-poetry-installer/issues/1))
environment/dependency management
([#1](https://github.com/enpaul/tox-poetry-installer/issues/1))
## Version 0.2.1
@ -335,8 +350,8 @@ View this release on:
[PyPI](https://pypi.org/project/tox-poetry-installer/0.1.2/)
- Test trivial functionality on Python-3.6 and Python-3.7
- Fix disagreement between `pyproject.toml` and module metadata on what the current version
is
- Fix disagreement between `pyproject.toml` and module metadata on what the current
version is
- Fix constant named for PEP-440 that should have been named for PEP-508
## Version 0.1.1

View File

@ -27,9 +27,10 @@ Examples of unacceptable behavior include:
- The use of sexualized language or imagery, and sexual attention or advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address, without their
explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
- Publishing others' private information, such as a physical or email address, without
their explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional
setting
## Enforcement Responsibilities
@ -52,8 +53,8 @@ offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the
community leaders responsible for enforcement at \[INSERT CONTACT METHOD\]. All
complaints will be reviewed and investigated promptly and fairly.
community leaders responsible for enforcement at \[INSERT CONTACT METHOD\]. All complaints
will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the reporter of
any incident.
@ -105,8 +106,8 @@ toward or disparagement of classes of individuals.
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0,
available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at

View File

@ -30,7 +30,7 @@ source: ## Build Python source distribution package
poetry build --format sdist
test: ## Run the project testsuite(s)
poetry run tox --recreate
poetry run tox --recreate --parallel
dev: ## Create the local dev environment
poetry install --extras poetry --sync

View File

@ -33,7 +33,8 @@ See the
[Changelog](https://github.com/enpaul/tox-poetry-installer/blob/devel/CHANGELOG.md) for
release history.
*See also: [official Tox plugins](https://tox.readthedocs.io/en/latest/plugins.html) and [the official Poetry documentation on using Tox](https://python-poetry.org/docs/faq/#is-tox-supported)*
*See also: [official Tox plugins](https://tox.readthedocs.io/en/latest/plugins.html) and
[the official Poetry documentation on using Tox](https://python-poetry.org/docs/faq/#is-tox-supported)*
## Feature Overview
@ -52,7 +53,9 @@ release history.
## User Documentation
*This section is for users looking to integrate the plugin with their project or CI system. For information on contributing to the plugin please see the [Developer Docs](#developer-documentation)*
*This section is for users looking to integrate the plugin with their project or CI
system. For information on contributing to the plugin please see the
[Developer Docs](#developer-documentation)*
### Installing
@ -145,9 +148,9 @@ locked_deps =
commands = ...
```
> **Note:** Settings configured on the main `testenv` environment are inherited by child
> test environments (for example, `testenv:foo`). To override this, specify the setting in
> the child environment with a different value.
> **Note:** Settings configured on the main `testenv` environment are inherited by
> child test environments (for example, `testenv:foo`). To override this, specify the
> setting in the child environment with a different value.
Alternatively, we can skip specifying all of our dependencies for a test environment in
the Tox config and install Poetry dependency groups directly:
@ -161,8 +164,8 @@ poetry_dep_groups =
commands = ...
```
> **Note:** The `install_dev_deps` configuration option is deprecated. See [Configuration
> Options](#configuration-options) for more information.
> **Note:** The `install_dev_deps` configuration option is deprecated. See
> [Configuration Options](#configuration-options) for more information.
Finally, we can also install an unlocked dependency (a dependency which doesn't take its
version from the Poetry lockfile) into the test environment alongside the locked ones. We
@ -190,9 +193,9 @@ All options listed below are Tox environment options and can be applied to one o
environment sections of the `tox.ini` file. They cannot be applied to the global Tox
configuration section.
> **Note:** Settings configured on the main `testenv` environment are inherited by child
> test environments (for example, `testenv:foo`). To override this, specify the setting in
> the child environment with a different value.
> **Note:** Settings configured on the main `testenv` environment are inherited by
> child test environments (for example, `testenv:foo`). To override this, specify the
> setting in the child environment with a different value.
| Option | Type | Default | Description |
| :--------------------- | :-----: | :-----: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -202,9 +205,9 @@ configuration section.
| `require_poetry` | Boolean | False | Whether Tox should be forced to fail if the plugin cannot import Poetry locally. If `False` then the plugin will be skipped for the test environment if Poetry cannot be imported. If `True` then the plugin will force the environment to error and the Tox run to fail. |
| `poetry_dep_groups` | List | `[]` | Names of Poetry dependency groups specified in `pyproject.toml` to install to the test environment. |
> **Note:** The `install_dev_deps` configuration option is deprecated and will be removed
> in version 1.0.0. Please set `poetry_dep_groups = [dev]` in `tox.ini` for environments
> that install the development dependencies.
> **Note:** The `install_dev_deps` configuration option is deprecated and will be
> removed in version 1.0.0. Please set `poetry_dep_groups = [dev]` in `tox.ini` for
> environments that install the development dependencies.
### Runtime Options
@ -238,8 +241,8 @@ error will be set to one of the "Status" values below to indicate what the error
| `RequiresUnsafeDepError` | Indicates that the package-under-test depends on a package that Poetry has classified as unsafe and cannot be installed. |
> **Note:** One or more of these errors can be caused by the `pyproject.toml` being out
> of sync with the Poetry lockfile. If this is the case, than a warning will be logged when
> Tox is run.
> of sync with the Poetry lockfile. If this is the case, than a warning will be logged
> when Tox is run.
### Other Notes
@ -250,8 +253,8 @@ these options are made obsolete by the Poetry lockfile: either they aren't neede
equivalent functionality is instead taken directly from the package details Poetry stores
in its lockfile.
> **Note:** The unsupported Tox config options will still apply to unlocked dependencies
> being installed with the default Tox installation backend.
> **Note:** The unsupported Tox config options will still apply to unlocked
> dependencies being installed with the default Tox installation backend.
- [`install_command`](https://tox.readthedocs.io/en/latest/config.html#conf-install_command)
- [`pip_pre`](https://tox.readthedocs.io/en/latest/config.html#conf-pip_pre)
@ -273,8 +276,8 @@ built-in
option) for the new version to be found and installed.
> **Note:** To force Tox to always recreate a test environment the
> [`recreate`](https://tox.readthedocs.io/en/latest/config.html#conf-recreate) config option
> can be set.
> [`recreate`](https://tox.readthedocs.io/en/latest/config.html#conf-recreate) config
> option can be set.
#### Using with an unmanaged Poetry installation
@ -288,8 +291,8 @@ cases, this plugin specifies the `poetry` package as an optional dependency that
installed using a setuptools extra also named `poetry`.
> ⚠️ **Warning:** This plugin requires Poetry to function. If the plugin is installed
> without the `poetry` setuptools extra then Poetry must be installed independently for the
> plugin to function properly.
> without the `poetry` setuptools extra then Poetry must be installed independently for
> the plugin to function properly.
To skip installing the `poetry` package as a dependency of `tox-poetry-installer`, do not
specify the `poetry` extra when adding the plugin:
@ -324,7 +327,8 @@ python -c '\
## Developer Documentation
All project contributors and participants are expected to adhere to the
[Contributor Covenant Code of Conduct, v2](CODE_OF_CONDUCT.md) ([external link](https://www.contributor-covenant.org/version/2/0/code_of_conduct/)).
[Contributor Covenant Code of Conduct, v2](CODE_OF_CONDUCT.md)
([external link](https://www.contributor-covenant.org/version/2/0/code_of_conduct/)).
The `devel` branch has the latest (and potentially unstable) changes. The stable releases
are tracked on [Github](https://github.com/enpaul/tox-poetry-installer/releases),
@ -377,35 +381,39 @@ production environments on a provisional basis only.
- Beta classification was assigned with
[v0.6.0](https://github.com/enpaul/tox-poetry-installer/releases/tag/0.6.0)
- Stable classification will be assigned when the test suite covers an acceptable number of
use cases
- Stable classification will be assigned when the test suite covers an acceptable number
of use cases
### Path to Beta
- [x] Verify that primary package dependencies (from the `.package` env) are installed
correctly using the Poetry backend.
- [x] Support the [`extras`](https://tox.readthedocs.io/en/latest/config.html#conf-extras) Tox
configuration option ([#4](https://github.com/enpaul/tox-poetry-installer/issues/4))
- [x] Support the [`extras`](https://tox.readthedocs.io/en/latest/config.html#conf-extras)
Tox configuration option ([#4](https://github.com/enpaul/tox-poetry-installer/issues/4))
- [x] Add per-environment Tox configuration option to fall back to default installation
backend.
- [ ] ~Add warnings when an unsupported Tox configuration option is detected while using the
Poetry backend.~ ([#5](https://github.com/enpaul/tox-poetry-installer/issues/5))
- [x] Add trivial tests to ensure the project metadata is consistent between the pyproject.toml
and the module constants.
- [x] Update to use [poetry-core](https://github.com/python-poetry/poetry-core) and improve
robustness of the Tox and Poetry module imports to avoid potentially breaking API changes
in upstream packages. ([#2](https://github.com/enpaul/tox-poetry-installer/issues/2))
- [ ] ~Add warnings when an unsupported Tox configuration option is detected while using
the Poetry backend.~ ([#5](https://github.com/enpaul/tox-poetry-installer/issues/5))
- [x] Add trivial tests to ensure the project metadata is consistent between the
pyproject.toml and the module constants.
- [x] Update to use [poetry-core](https://github.com/python-poetry/poetry-core) and
improve robustness of the Tox and Poetry module imports to avoid potentially breaking
API changes in upstream packages.
([#2](https://github.com/enpaul/tox-poetry-installer/issues/2))
- [ ] ~Find and implement a way to mitigate the
[UNSAFE_DEPENDENCIES issue](https://github.com/python-poetry/poetry/issues/1584) in
Poetry.~ ([#6](https://github.com/enpaul/tox-poetry-installer/issues/6))
- [x] Fix logging to make proper use of Tox's logging reporter infrastructure ([#3](https://github.com/enpaul/tox-poetry-installer/issues/3))
- [x] Add configuration option for installing all dev-dependencies to a testenv ([#14](https://github.com/enpaul/tox-poetry-installer/issues/14))
- [x] Fix logging to make proper use of Tox's logging reporter infrastructure
([#3](https://github.com/enpaul/tox-poetry-installer/issues/3))
- [x] Add configuration option for installing all dev-dependencies to a testenv
([#14](https://github.com/enpaul/tox-poetry-installer/issues/14))
### Path to Stable
Everything in Beta plus...
- [ ] Fully replace dependency on `poetry` with dependency on `poetry-core` ([#2](https://github.com/enpaul/tox-poetry-installer/issues/2))
- [ ] Fully replace dependency on `poetry` with dependency on `poetry-core`
([#2](https://github.com/enpaul/tox-poetry-installer/issues/2))
- [x] Add comprehensive unit tests
- [ ] ~Add tests for each feature version of Tox between 3.8 and 3.20~
- [x] Add tests for Python-3.6, 3.7, 3.8, and 3.9

1050
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
[tool.poetry]
name = "tox-poetry-installer"
version = "0.10.2"
version = "0.10.3"
license = "MIT"
authors = ["Ethan Paul <24588726+enpaul@users.noreply.github.com>"]
description = "A plugin for Tox that lets you install test environment dependencies from the Poetry lockfile"
@ -40,7 +40,7 @@ poetry = ["poetry", "cleo"]
[tool.poetry.dependencies]
python = "^3.7"
cleo = {version = ">=1.0,<3.0", optional = true}
poetry = {version = "^1.2.0", optional = true}
poetry = {version = ">=1.2.0,<1.5.0", optional = true}
poetry-core = "^1.1.0"
tox = "^3.8.0"
@ -49,8 +49,8 @@ bandit = "^1.6.2"
black = "^22.3.0"
blacken-docs = "^1.8.0"
ipython = {version = "^8.10.1", python = "^3.8"}
mdformat = "^0.6"
mdformat-gfm = "^0.2"
mdformat = "^0.7"
mdformat-gfm = "^0.3"
mypy = "^0.930"
pre-commit = "^2.7.1"
pre-commit-hooks = "^3.3.0"

View File

@ -1,7 +1,7 @@
# pylint: disable=missing-docstring
__title__ = "tox-poetry-installer"
__summary__ = "A plugin for Tox that lets you install test environment dependencies from the Poetry lockfile"
__version__ = "0.10.2"
__version__ = "0.10.3"
__url__ = "https://github.com/enpaul/tox-poetry-installer/"
__license__ = "MIT"
__authors__ = ["Ethan Paul <24588726+enpaul@users.noreply.github.com>"]