Metadata-Version: 2.1
Name: tox-poetry-dev-dependencies
Version: 0.0.5
Summary: Tox plugin to help working with Poetry-based projects
Home-page: https://pypi.org/project/tox-poetry-dev-dependencies/
Author: sinoroc
Author-email: sinoroc.code+python@gmail.com
License: Apache-2.0
Project-URL: GitHub, https://github.com/sinoroc/tox-poetry-dev-dependencies
Project-URL: GitLab, https://gitlab.com/sinoroc/tox-poetry-dev-dependencies
Description: ..
        
        
        .. contents::
            :backlinks: none
        
        
        Introduction
        ============
        
        Tox plugin to help working with Poetry-based projects.
        
        
        Repositories
        ------------
        
        Distributions:
        
        * https://pypi.org/project/tox-poetry-dev-dependencies/
        
        
        Source code:
        
        * https://github.com/sinoroc/tox-poetry-dev-dependencies
        * https://gitlab.com/sinoroc/tox-poetry-dev-dependencies
        
        
        Usage
        =====
        
        By default the plugin does not do anything. Use one of the following settings to activate the corresponding features.
        
        
        ``poetry_experimental_add_locked_dependencies``
        -----------------------------------------------
        
        Set the ``testenv`` setting ``poetry_experimental_add_locked_dependencies`` to ``True`` to let Tox add Poetry's locked dependencies from the *lockfile* to the ``deps`` list in the test environment.
        
        .. code::
        
            [testenv:example]
            # ...
            poetry_experimental_add_locked_dependencies = True
        
        
        ``poetry_add_dev_dependencies``
        -------------------------------
        
        Set the ``testenv`` setting ``poetry_add_dev_dependencies`` to ``True`` to let Tox add Poetry's development dependencies to the ``deps`` list in the test environment.
        
        .. code::
        
            [testenv:example]
            # ...
            poetry_add_dev_dependencies = True
        
        
        Dependency settings combination
        -------------------------------
        
        The settings ``poetry_experimental_add_locked_dependencies`` and ``poetry_add_dev_dependencies`` are independent and can be used in combination. The following table shows the expected result for each possible combination of these two settings.
        
        The *source file* column shows which file is used as source for the dependencies. The ``deps`` column shows an example of what dependencies are expected to be added to ``deps`` for that test environment. In that example ``Lib = '~1.0'`` is a mandatory dependency locking to ``Lib==1.2.3`` and ``Dev = '~3.0'`` is a development dependency locking to ``Dev==3.2.1``.
        
        .. |arrow| unicode:: 0x21d2
        
        .. list-table::
            :header-rows: 1
        
            *   - ``*_locked_dependencies``
                - ``*_dev_dependencies``
                - |arrow|
                - source file
                - |arrow|
                - resulting ``deps``
            *   - ``False``
                - ``False``
                -
                - ``pyproject.toml``
                -
                - ``Lib~=1.0``
            *   - ``True``
                - ``False``
                -
                - ``poetry.lock``
                -
                - ``Lib==1.2.3``
            *   - ``False``
                - ``True``
                -
                - ``pyproject.toml``
                -
                - ``Lib~=1.0``, ``Dev~=3.0``
            *   - ``True``
                - ``True``
                -
                - ``poetry.lock``
                -
                - ``Lib==1.2.3``, ``Dev==3.2.1``
        
        
        ``poetry_use_source_repos``
        ---------------------------
        
        Set the ``testenv`` setting ``poetry_use_source_repos`` to ``pip_env_vars`` to let Tox set the ``PIP_EXTRA_URL`` and ``PIP_EXTRA_INDEX_URL`` environment variables accordingly.
        
        .. code::
        
            [testenv:example]
            # ...
            poetry_use_source_repos = pip_env_vars
        
        
        This will read sections such as the following from the ``pyproject.toml`` file:
        
        .. code::
        
            [[tool.poetry.source]]
            name = "project-alpha"
            url = "https://alpha.example/simple"
            secondary = true
        
            [[tool.poetry.source]]
            name = "project-bravo"
            url = "https://bravo.example/simple"
        
            [[tool.poetry.source]]
            name = "project-charlie"
            url = "https://charlie.example/simple"
            default = true
        
        
        and set the environment variables:
        
        .. code::
        
            PIP_INDEX_URL=https://charlie.example/simple
            PIP_EXTRA_INDEX_URL=https://bravo.example/simple https://pypi.org/simple https://alpha.example/simple
        
        
        If there is at least one non ``secondary`` source repository defined, then pip's default index server (*PyPI* ``https://pypi.org/simple``) is placed in ``PIP_EXTRA_INDEX_URL`` right before any ``secondary`` respository.
        
        If pip's environment variables are already defined then they are not overwritten. For example in a command like the following, the plugin does not overwrite the environment variable.
        
        .. code::
        
            PIP_INDEX_URL=https://delta.example/simple tox
        
        
        ``poetry_experimental_no_virtual_env``
        --------------------------------------
        
        *Experimental feature*
        
        Set the ``testenv`` setting ``poetry_experimental_no_virtual_env`` to ``True`` to skip the creation of a virtual environment for this test environment.
        
        .. code::
        
            [testenv:real]
            deps =
            poetry_experimental_no_virtual_env = True
            skip_install = True
        
        
        This might be useful in cases where all the required dependencies and tools are already available, i.e. they are already installed in global or user *site packages* directory, or maybe they are already installed directly in the system (via ``apt``, ``yum``, ``pacman``, etc.).
        
        For such environments it might be best to skip the installation of the project (``skip_install``) as well as keeping the list of dependencies empty (``deps``).
        
        
        Appendix
        ========
        
        Installation
        ------------
        
        It is a plugin for Tox and it is available on PyPI, install it however best fits the workflow. A useful thing to know though, is that starting with Tox version *3.8* it is possible to enforce the installation (in an isolated environment) of the plugin directly from within the ``tox.ini`` file, thanks to the ``requires`` setting (Tox *3.2*) and the *auto-provisioning* feature (Tox *3.8*):
        
        .. code::
        
            [tox]
            requires =
                tox-poetry-dev-dependencies
        
        
        * https://tox.readthedocs.io/en/latest/config.html#conf-requires
        * https://tox.readthedocs.io/en/latest/example/basic.html#tox-auto-provisioning
        
        
        Similar projects
        ----------------
        
        * https://pypi.org/project/tox-poetry-installer/
        * https://pypi.org/project/tox-poetry/
        
        
        .. EOF
        
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Framework :: tox
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Topic :: Software Development :: Testing
Classifier: Typing :: Typed
Requires-Python: ~=3.5
Description-Content-Type: text/x-rst
Provides-Extra: dev_package
Provides-Extra: dev_test
