Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow configuration via tool.tox in pyproject.toml #814

Closed
pradyunsg opened this issue May 13, 2018 · 27 comments
Closed

Allow configuration via tool.tox in pyproject.toml #814

pradyunsg opened this issue May 13, 2018 · 27 comments
Assignees
Labels
area:configuration feature:new something does not exist yet, but should pr-merged
Milestone

Comments

@pradyunsg
Copy link

pradyunsg commented May 13, 2018

pyproject.toml is a thing now. 🎉

It would be awesome if we could configure tox within pyproject.toml alone. This would allow for removal of a configuration file for a lot of projects.

@RonnyPfannschmidt
Copy link

i would like to note that this one is hard to get acceptably right

@obestwalter
Copy link
Member

Hi @RonnyPfannschmidt, can you elaborate on that?

@pradyunsg
Copy link
Author

If @obestwalter would want to do a cleanup of the configuration (removing deprecated options and so on), this would be a good opportunity to do so.


i would like to note that this one is hard to get acceptably right

Generated environments would be an (IMO interesting) challenge to translate into TOML. https://tox.readthedocs.io/en/latest/config.html#generating-environments-conditional-settings

Same goes for the exact format for the testenv declarations.

@RonnyPfannschmidt
Copy link

@obestwalter feature parity is tricky, since factors and generated environments are quite funky and hard to match to the new syntax

a interesting path for progression would be to support putting a tox.ini into a

[tool.tox]
legacy_config = """
old config file format
"""

as a starting point and then developing the ability to slowly switch simpler and more complex things over as the new format gets better tools

@pradyunsg
Copy link
Author

a interesting path for progression would be to support putting a tox.ini into a

Hmmm... Or let both of the file formats co-exist, with one taking precedence over the other.

Then once feature parity is achieved, deprecate tox.ini and after a sufficiently long period, stop supporting it.

as the new format gets better tools

I'm not quite sure I understand what you mean by this?

@obestwalter
Copy link
Member

@pradyunsg said:

Generated environments would be an (IMO interesting) challenge to translate into TOML. https://tox.readthedocs.io/en/latest/config.html#generating-environments-conditional-settings

Same goes for the exact format for the testenv declarations.

Yep, that's why I think it will not done by next week :) A way of getting the old format into toml first, therefore is a good first step, I think.

@RonnyPfannschmidt - your idea definitely looks like a good path to go forward right away, I would say. Wrapping the old ini as multiline string and calling it legacy makes it very clear right away, that atm this is just a hacky way to avoid another configuration file until real support is implemented.

@obestwalter
Copy link
Member

@pradyunsg your idea would be to start implementing it right away and only support a limited feature set, if I understand correctly. I think both ways can go together: if you need advanced features and want everything in one file, use the legacy format and if you want to use proper toml syntax and only need a limited feature set, use the basic toml implementation.

@obestwalter obestwalter added needs:discussion It's not quite clear if and how this should be done feature:new something does not exist yet, but should area:configuration labels May 13, 2018
@obestwalter
Copy link
Member

obestwalter commented May 13, 2018

@pradyunsg said:

If @obestwalter would want to do a cleanup of the configuration (removing deprecated options and so on), this would be a good opportunity to do so.

Definitely, but technically not really much is deprecated, so a lot would need to be re-implemented anyway, but going with good old pareto, we can cover 80% of user need already with 20% of the features (we only need to know which 20% :)).

@gaborbernat
Copy link
Member

gaborbernat commented May 13, 2018

I can accept the legacy multi-line string in-lining of the config as a transition step, to get the ball rolling.

PS. Let's make it contain the format, e.g. have it as legacy_tox_ini.

@RonnyPfannschmidt
Copy link

@obestwalter some parts of the sections are likely easily transitioned

other parts would require a discussion - recall my ideas for mixins and inheritance as alternative for factors, it may be necessary to bring something like that back to life

@gaborbernat
Copy link
Member

@RonnyPfannschmidt I've had some play around with this in my toxn playground, and I found inheritance to be really helpful.

@gaborbernat gaborbernat added this to the 3.1 milestone Jun 20, 2018
@gaborbernat gaborbernat self-assigned this Jul 2, 2018
@gaborbernat gaborbernat modified the milestones: 3.1, 3.2 Jul 8, 2018
@obestwalter obestwalter removed the needs:discussion It's not quite clear if and how this should be done label Jul 20, 2018
@obestwalter obestwalter self-assigned this Jul 20, 2018
@gaborbernat
Copy link
Member

gaborbernat commented Sep 13, 2018

I've started adding pyproject.toml support, however, this requires a good thought of how this will interact with tox.ini and setup.cfg we support at the moment to be seamless. The preference I would say would be:

  1. pyproject.toml if has tox sections and legacy_ini key content (warn if tox.ini exists that it will be ignored)
  2. tox.ini
  3. setup.cfg.

We need to add pyproject.toml to the automatic tox.ini discovery, method - e.g. when calling tox from within a subfolder things should still work. The user can manually specify the tox configuration file, so we need to look in this case at the extension to determine the parser.

DmytroLitvinov referenced this issue in DmytroLitvinov/kuna Sep 24, 2018



### Update [tox](https://pypi.org/project/tox) from **3.2.1** to **3.4.0**.


<details>
  <summary>Changelog</summary>
  
  
   ### 3.4.0
   ```
   ------------------

Bugfixes
^^^^^^^^

- add ``--exists-action w`` to default pip flags to handle better VCS dependencies (`pip documentation on this &lt;https://pip.pypa.io/en/latest/reference/pip/exists-action-option&gt;`_) - by :user:`gaborbernat` (`503 &lt;https://github.com/tox-dev/tox/issues/503&gt;`_)
- instead of assuming the Python version from the base python name ask the interpreter to reveal the version for the ``ignore_basepython_conflict`` flag - by :user:`gaborbernat` (`908 &lt;https://github.com/tox-dev/tox/issues/908&gt;`_)
- PEP-517 packaging fails with sdist already exists, fixed via ensuring the dist folder is empty before invoking the backend and `pypa/setuptools 1481 &lt;https://github.com/pypa/setuptools/pull/1481&gt;`_ - by :user:`gaborbernat` (`1003 &lt;https://github.com/tox-dev/tox/issues/1003&gt;`_)


Features
^^^^^^^^

- add ``commands_pre`` and ``commands_post`` that run before and after running
  the ``commands`` (setup runs always, commands only if setup suceeds, teardown always - all
  run until the first failing command)  - by :user:`gaborbernat` (`167 &lt;https://github.com/tox-dev/tox/issues/167&gt;`_)
- ``pyproject.toml`` config support initially by just inline the tox.ini under ``tool.tox.legacy_tox_ini`` key; config source priority order is ``pyproject.toml``, ``tox.ini`` and then ``setup.cfg`` - by :user:`gaborbernat` (`814 &lt;https://github.com/tox-dev/tox/issues/814&gt;`_)
- use the os environment variable ``TOX_SKIP_ENV`` to filter out tox environment names from the run list (set by ``envlist``)  - by :user:`gaborbernat` (`824 &lt;https://github.com/tox-dev/tox/issues/824&gt;`_)
- always set ``PIP_USER=0`` (do not install into the user site package, but inside the virtual environment created) and ``PIP_NO_DEPS=0`` (installing without dependencies can cause broken package installations) inside tox - by :user:`gaborbernat` (`838 &lt;https://github.com/tox-dev/tox/issues/838&gt;`_)
- tox will inject some environment variables that to indicate a command is running within tox: ``TOX_WORK_DIR`` env var is set to the tox work directory,
  ``TOX_ENV_NAME`` is set to the current running tox environment name, ``TOX_ENV_DIR`` is set to the current tox environments working dir - by :user:`gaborbernat` (`847 &lt;https://github.com/tox-dev/tox/issues/847&gt;`_)
- While running tox invokes various commands (such as building the package, pip installing dependencies and so on), these were printed in case they failed as Python arrays. Changed the representation to a shell command, allowing the users to quickly replicate/debug the failure on their own - by :user:`gaborbernat` (`851 &lt;https://github.com/tox-dev/tox/issues/851&gt;`_)
- skip missing interpreters value from the config file can now be overridden via the ``--skip-missing-interpreters`` cli flag - by :user:`gaborbernat` (`903 &lt;https://github.com/tox-dev/tox/issues/903&gt;`_)
- keep additional environments config order when listing them - by :user:`gaborbernat` (`921 &lt;https://github.com/tox-dev/tox/issues/921&gt;`_)
- allow injecting config value inside the ini file dependent of the fact that we&#39;re connected to an interactive shell or not  - by :user:`gaborbernat` (`947 &lt;https://github.com/tox-dev/tox/issues/947&gt;`_)
- do not build sdist if skip install is specified for the envs to be run - by :user:`gaborbernat` (`974 &lt;https://github.com/tox-dev/tox/issues/974&gt;`_)
- when verbosity level increases above two start passing through verbosity flags to pip - by :user:`gaborbernat` (`982 &lt;https://github.com/tox-dev/tox/issues/982&gt;`_)
- when discovering the interpreter to use check if the tox host Python matches and use that if so - by :user:`gaborbernat` (`994 &lt;https://github.com/tox-dev/tox/issues/994&gt;`_)
- ``-vv`` will print out why a virtual environment is re-created whenever this operation is triggered - by :user:`gaborbernat` (`1004 &lt;https://github.com/tox-dev/tox/issues/1004&gt;`_)


Documentation
^^^^^^^^^^^^^

- clarify that ``python`` and ``pip`` refer to the virtual environments executable - by :user:`gaborbernat` (`305 &lt;https://github.com/tox-dev/tox/issues/305&gt;`_)
- add Sphinx and mkdocs example of generating documentation via tox - by :user:`gaborbernat` (`374 &lt;https://github.com/tox-dev/tox/issues/374&gt;`_)
- specify that ``setup.cfg`` tox configuration needs to be inside the ``tox:tox`` namespace - by :user:`gaborbernat` (`545 &lt;https://github.com/tox-dev/tox/issues/545&gt;`_)
   ```
   
  
  
   ### 3.3.0
   ```
   ------------------

Bugfixes
^^^^^^^^

- fix ``TOX_LIMITED_SHEBANG`` when running under python3 - by :user:`asottile` (`931 &lt;https://github.com/tox-dev/tox/issues/931&gt;`_)


Features
^^^^^^^^

- `PEP-517 &lt;https://www.python.org/dev/peps/pep-0517/&gt;`_ source distribution support (create a
  ``.package`` virtual environment to perform build operations inside) by :user:`gaborbernat` (`573 &lt;https://github.com/tox-dev/tox/issues/573&gt;`_)
- `flit &lt;https://flit.readthedocs.io&gt;`_ support via implementing ``PEP-517`` by :user:`gaborbernat` (`820 &lt;https://github.com/tox-dev/tox/issues/820&gt;`_)
- packaging now is exposed as a hook via ``tox_package(session, venv)`` - by :user:`gaborbernat` (`951 &lt;https://github.com/tox-dev/tox/issues/951&gt;`_)


Miscellaneous
^^^^^^^^^^^^^

- Updated the VSTS build YAML to use the latest jobs and pools syntax - by :user:`davidstaheli` (`955 &lt;https://github.com/tox-dev/tox/issues/955&gt;`_)
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/tox
  - Changelog: https://pyup.io/changelogs/tox/
  - Docs: https://tox.readthedocs.org/
</details>





### Update [Sphinx](https://pypi.org/project/Sphinx) from **1.8.0** to **1.8.1**.


<details>
  <summary>Changelog</summary>
  
  
   ### 1.8.1
   ```
   =====================================

Incompatible changes
--------------------

* LaTeX ``\pagestyle`` commands have been moved to the LaTeX template. No
  changes in PDF, except possibly if ``\sphinxtableofcontents``, which
  contained them, had been customized in :file:`conf.py`. (refs: 5455)

Bugs fixed
----------

* 5418: Incorrect default path for sphinx-build -d/doctrees files
* 5421: autodoc emits deprecation warning for :confval:`autodoc_default_flags`
* 5422: lambda object causes PicklingError on storing environment
* 5417: Sphinx fails to build with syntax error in Python 2.7.5
* 4911: add latexpdf to make.bat for non make-mode
* 5436: Autodoc does not work with enum subclasses with properties/methods
* 5437: autodoc: crashed on modules importing eggs
* 5433: latex: ImportError: cannot import name &#39;DEFAULT_SETTINGS&#39;
* 5431: autodoc: ``autofunction`` emits a warning for callable objects
* 5457: Fix TypeError in error message when override is prohibited
* 5453: PDF builds of &#39;howto&#39; documents have no page numbers
* 5463: mathbase: math_role and MathDirective was disappeared in 1.8.0
* 5454: latex: Index has disappeared from PDF for Japanese documents
* 5432: py domain: ``:type:`` field can&#39;t process ``:term:`` references
* 5426: py domain: TypeError has been raised for class attribute
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/sphinx
  - Changelog: https://pyup.io/changelogs/sphinx/
  - Homepage: http://sphinx-doc.org/
</details>





### Update [twine](https://pypi.org/project/twine) from **1.11.0** to **1.12.0**.


<details>
  <summary>Changelog</summary>
  
  
   ### 1.12.0
   ```
   * :feature:`395 major` Add ``twine check`` command to check long description
* :feature:`392 major` Drop support for Python 3.3
* :feature:`363` Empower ``--skip-existing`` for Artifactory repositories
* 🐛`367` Avoid MD5 when Python is compiled in FIPS mode
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/twine
  - Changelog: https://pyup.io/changelogs/twine/
  - Docs: https://twine.readthedocs.io/
</details>
guykisel referenced this issue in guykisel/inline-plz Sep 24, 2018
This PR updates [tox](https://pypi.org/project/tox) from **3.1.2** to **3.4.0**.



<details>
  <summary>Changelog</summary>
  
  
   ### 3.4.0
   ```
   ------------------

Bugfixes
^^^^^^^^

- add ``--exists-action w`` to default pip flags to handle better VCS dependencies (`pip documentation on this &lt;https://pip.pypa.io/en/latest/reference/pip/exists-action-option&gt;`_) - by :user:`gaborbernat` (`503 &lt;https://github.com/tox-dev/tox/issues/503&gt;`_)
- instead of assuming the Python version from the base python name ask the interpreter to reveal the version for the ``ignore_basepython_conflict`` flag - by :user:`gaborbernat` (`908 &lt;https://github.com/tox-dev/tox/issues/908&gt;`_)
- PEP-517 packaging fails with sdist already exists, fixed via ensuring the dist folder is empty before invoking the backend and `pypa/setuptools 1481 &lt;https://github.com/pypa/setuptools/pull/1481&gt;`_ - by :user:`gaborbernat` (`1003 &lt;https://github.com/tox-dev/tox/issues/1003&gt;`_)


Features
^^^^^^^^

- add ``commands_pre`` and ``commands_post`` that run before and after running
  the ``commands`` (setup runs always, commands only if setup suceeds, teardown always - all
  run until the first failing command)  - by :user:`gaborbernat` (`167 &lt;https://github.com/tox-dev/tox/issues/167&gt;`_)
- ``pyproject.toml`` config support initially by just inline the tox.ini under ``tool.tox.legacy_tox_ini`` key; config source priority order is ``pyproject.toml``, ``tox.ini`` and then ``setup.cfg`` - by :user:`gaborbernat` (`814 &lt;https://github.com/tox-dev/tox/issues/814&gt;`_)
- use the os environment variable ``TOX_SKIP_ENV`` to filter out tox environment names from the run list (set by ``envlist``)  - by :user:`gaborbernat` (`824 &lt;https://github.com/tox-dev/tox/issues/824&gt;`_)
- always set ``PIP_USER=0`` (do not install into the user site package, but inside the virtual environment created) and ``PIP_NO_DEPS=0`` (installing without dependencies can cause broken package installations) inside tox - by :user:`gaborbernat` (`838 &lt;https://github.com/tox-dev/tox/issues/838&gt;`_)
- tox will inject some environment variables that to indicate a command is running within tox: ``TOX_WORK_DIR`` env var is set to the tox work directory,
  ``TOX_ENV_NAME`` is set to the current running tox environment name, ``TOX_ENV_DIR`` is set to the current tox environments working dir - by :user:`gaborbernat` (`847 &lt;https://github.com/tox-dev/tox/issues/847&gt;`_)
- While running tox invokes various commands (such as building the package, pip installing dependencies and so on), these were printed in case they failed as Python arrays. Changed the representation to a shell command, allowing the users to quickly replicate/debug the failure on their own - by :user:`gaborbernat` (`851 &lt;https://github.com/tox-dev/tox/issues/851&gt;`_)
- skip missing interpreters value from the config file can now be overridden via the ``--skip-missing-interpreters`` cli flag - by :user:`gaborbernat` (`903 &lt;https://github.com/tox-dev/tox/issues/903&gt;`_)
- keep additional environments config order when listing them - by :user:`gaborbernat` (`921 &lt;https://github.com/tox-dev/tox/issues/921&gt;`_)
- allow injecting config value inside the ini file dependent of the fact that we&#39;re connected to an interactive shell or not  - by :user:`gaborbernat` (`947 &lt;https://github.com/tox-dev/tox/issues/947&gt;`_)
- do not build sdist if skip install is specified for the envs to be run - by :user:`gaborbernat` (`974 &lt;https://github.com/tox-dev/tox/issues/974&gt;`_)
- when verbosity level increases above two start passing through verbosity flags to pip - by :user:`gaborbernat` (`982 &lt;https://github.com/tox-dev/tox/issues/982&gt;`_)
- when discovering the interpreter to use check if the tox host Python matches and use that if so - by :user:`gaborbernat` (`994 &lt;https://github.com/tox-dev/tox/issues/994&gt;`_)
- ``-vv`` will print out why a virtual environment is re-created whenever this operation is triggered - by :user:`gaborbernat` (`1004 &lt;https://github.com/tox-dev/tox/issues/1004&gt;`_)


Documentation
^^^^^^^^^^^^^

- clarify that ``python`` and ``pip`` refer to the virtual environments executable - by :user:`gaborbernat` (`305 &lt;https://github.com/tox-dev/tox/issues/305&gt;`_)
- add Sphinx and mkdocs example of generating documentation via tox - by :user:`gaborbernat` (`374 &lt;https://github.com/tox-dev/tox/issues/374&gt;`_)
- specify that ``setup.cfg`` tox configuration needs to be inside the ``tox:tox`` namespace - by :user:`gaborbernat` (`545 &lt;https://github.com/tox-dev/tox/issues/545&gt;`_)
   ```
   
  
  
   ### 3.3.0
   ```
   ------------------

Bugfixes
^^^^^^^^

- fix ``TOX_LIMITED_SHEBANG`` when running under python3 - by :user:`asottile` (`931 &lt;https://github.com/tox-dev/tox/issues/931&gt;`_)


Features
^^^^^^^^

- `PEP-517 &lt;https://www.python.org/dev/peps/pep-0517/&gt;`_ source distribution support (create a
  ``.package`` virtual environment to perform build operations inside) by :user:`gaborbernat` (`573 &lt;https://github.com/tox-dev/tox/issues/573&gt;`_)
- `flit &lt;https://flit.readthedocs.io&gt;`_ support via implementing ``PEP-517`` by :user:`gaborbernat` (`820 &lt;https://github.com/tox-dev/tox/issues/820&gt;`_)
- packaging now is exposed as a hook via ``tox_package(session, venv)`` - by :user:`gaborbernat` (`951 &lt;https://github.com/tox-dev/tox/issues/951&gt;`_)


Miscellaneous
^^^^^^^^^^^^^

- Updated the VSTS build YAML to use the latest jobs and pools syntax - by :user:`davidstaheli` (`955 &lt;https://github.com/tox-dev/tox/issues/955&gt;`_)
   ```
   
  
  
   ### 3.2.1
   ```
   ------------------

Bugfixes
^^^^^^^^

- ``--parallel--safe-build`` no longer cleans up its folders (``distdir``, ``distshare``, ``log``). - by :user:`gaborbernat` (`849 &lt;https://github.com/tox-dev/tox/issues/849&gt;`_)
   ```
   
  
  
   ### 3.2.0
   ```
   ------------------

Features
^^^^^^^^

- Switch pip invocations to use the module ``-m pip`` instead of direct invocation. This could help
  avoid some of the shebang limitations.  - by :user:`gaborbernat` (`935 &lt;https://github.com/tox-dev/tox/issues/935&gt;`_)
- Ability to specify package requirements for the tox run via the ``tox.ini`` (``tox`` section under key ``requires`` - PEP-508 style): can be used to specify both plugin requirements or build dependencies. - by :user:`gaborbernat` (`783 &lt;https://github.com/tox-dev/tox/issues/783&gt;`_)
- Allow to run multiple tox instances in parallel by providing the
  ``--parallel--safe-build`` flag. - by :user:`gaborbernat` (`849 &lt;https://github.com/tox-dev/tox/issues/849&gt;`_)
   ```
   
  
  
   ### 3.1.3
   ```
   ------------------

Bugfixes
^^^^^^^^

- A caching issue that caused the ``develop-inst-nodeps`` action, which
  reinstalls the package under test, to always run has been resolved. The
  ``develop-inst-noop`` action, which, as the name suggests, is a no-op, will now
  run unless there are changes to ``setup.py`` or ``setup.cfg`` files that have
  not been reflected - by stephenfin (`909 &lt;https://github.com/tox-dev/tox/issues/909&gt;`_)


Features
^^^^^^^^

- Python version testenvs are now automatically detected instead of comparing
  against a hard-coded list of supported versions.  This enables ``py38`` and
  eventually ``py39`` / ``py40`` / etc. to work without requiring an upgrade to
  ``tox``.  As such, the following public constants are now deprecated
  (and scheduled for removal in ``tox`` 4.0: ``CPYTHON_VERSION_TUPLES``,
  ``PYPY_VERSION_TUPLES``, ``OTHER_PYTHON_INTERPRETERS``, and ``DEFAULT_FACTORS`` -
  by :user:`asottile` (`914 &lt;https://github.com/tox-dev/tox/issues/914&gt;`_)


Documentation
^^^^^^^^^^^^^

- Add a system overview section on the index page that explains briefly how tox works -
  by :user:`gaborbernat`. (`867 &lt;https://github.com/tox-dev/tox/issues/867&gt;`_)
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/tox
  - Changelog: https://pyup.io/changelogs/tox/
  - Docs: https://tox.readthedocs.org/
</details>
@laike9m
Copy link

laike9m commented Oct 16, 2019

Any plan to add native implementation?

@pradyunsg
Copy link
Author

Well, for starters, I think we should file a dedicated issue for discussion of that.

@gaborbernat
Copy link
Member

I've tried in the past and the door is still open for tox 4 👍 generally the issue becomes that the toml format does not allow easy factorial expressions, so tends to be more verbose than the ini file.

@RonnyPfannschmidt
Copy link

RonnyPfannschmidt commented Oct 16, 2019

it might be practical to steal ideas from nox there,
as it is using a python file for parametrization and the programming parts

if there was a mechanism for taking in tox envs/actions from libraries and&or local, possibly in subdir python bits, things should be simpler

imagine having

[tool.tox]
requires = ["tox>=4.0.0", "tox-use-pre-commit", "tox-siplified-pytest", "tox-make-sphinx"]
[tool.tox.simplified_pytest]
min_python_version = 3.5

and being done for practically all simple python packages

@RonnyPfannschmidt
Copy link

@gaborbernat i'd love to make a brainstorming on such a idea soonish (as such a development would remove most of my grievances with tox

@gaborbernat
Copy link
Member

@RonnyPfannschmidt what you describe there is where I want to get with #1394 #1400

@asottile
Copy link
Contributor

please don't use code syntax as configuration, it's impossible to reason about statically and rewrite reliably with a machine

@RonnyPfannschmidt
Copy link

Awesome

@gaborbernat
Copy link
Member

please don't use code syntax as configuration, it's impossible to reason about statically and rewrite reliably with a machine

Yeah, definitely not. 😄 The idea of tox plugins defining environments themselves are good I think.

@RonnyPfannschmidt
Copy link

@asottile i do feel the need for some kind of code point for local plugins, as my general experience with the tox syntax is its freakishly limiting in many cases

@asottile
Copy link
Contributor

@asottile i do feel the need for some kind of code point for local plugins, as my general experience with the tox syntax is its freakishly limiting in many cases

oh of course, that's part of planned tox 4.x -- I'm merely suggesting that this is not a good idea:

it might be practical to steal ideas from nox there,
as it is using a python file for parametrization and the programming parts

@RonnyPfannschmidt
Copy link

@asottile ideally all code parts are of course supplied by plugins and only configuration happens at the usage side

@asottile
Copy link
Contributor

agreed :)

@ofek
Copy link

ofek commented May 30, 2020

Any update?

@gaborbernat
Copy link
Member

Not before tox 4, ETA end of year.

@tox-dev tox-dev locked and limited conversation to collaborators Jan 14, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area:configuration feature:new something does not exist yet, but should pr-merged
Projects
None yet
Development

No branches or pull requests

7 participants