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

ability to define required plugins in tox.ini #783

Closed
ssbarnea opened this Issue Apr 5, 2018 · 4 comments

Comments

Projects
None yet
4 participants
@ssbarnea

ssbarnea commented Apr 5, 2018

In many cases tox needs some plugins for adding extra functionality and at this moment there is no way for the user to declare them inside the tox.ini.

Ideally tox should load a plugins = tox-pyenv, tox-pip-extensions from tox.ini and even install them if they are not already installed.

This would ease the development process as the user would not have to write bootstrapping scripts before running tox.

Current behaviour is not productive because user may run tox which would behave differently if the plugins are not installed, in many cases even passing but without intended behaviour.

@nicoddemus

This comment has been minimized.

Member

nicoddemus commented Apr 5, 2018

👍

Probably we can't just install the plugins automatically because tox might be installed in the system's Python, but in that case it should at least warn that the plugins should be installed before proceeding. Otherwise seems reasonable to pip install the plugins.

@vlcinsky

This comment has been minimized.

vlcinsky commented Apr 6, 2018

There is another side: if tox is installed along with it's plugins, in some cases they might affect the build.

I would propose:

  • do not load plugins unless explicitly declared in tox.ini
  • if they are missing, stop execution (but if there are better options such as installing the plugin into current environment - I would not complain)
@ssbarnea

This comment has been minimized.

ssbarnea commented Apr 6, 2018

Personally I would not mind if tox would attempt to install the package on current system (pip install --user or direct in case of virtualenv presence). I did this in few places over time and worked well. If it fails due to permissions at least it fails for 1/10 users and they will know what to do, much better than failing for 9/10 users.

Regardin @vlcinsky proposal, this is bit tricky and maybe we should approach a more flexible approach, as I seen on other systems using plugins (ansible, and even pytest if it remember well.)

  • nothing defined in config = keep current behaviour to load detected plugins
  • plugin_blacklist = tox-broken-plugin (or even *) -- disable any other plugins from being loaded
  • plugin[_whitelist] = tox-cool-plugin --- fail to start if this plugin is not installed or auto-installable

With something like this we should allow users to enable plugins and control them without forcing them to change tox.ini files. We need to be sure that we avoid a case where the user has to change
repository tox.ini file in order to be able run tox, just because the plugin config defined there may not apply to his system.

Examples:

  • tox-travis plugin makes sense only on travis, so adding it to mandatory list does not make sense.
  • tox-pyenv may not work on specific platform.

gaborbernat added a commit to gaborbernat/tox that referenced this issue Aug 9, 2018

Ability to specify package requirements for the tox run tox-dev#783
Done via the ``tox.ini`` (``tox`` section under key ``requires`` - PEP-508
style). Can be used to specify both plugin requirements or build
dependencies until we'll have PEP-517 support.

Using ``pkg_resources.Requirement``. Note tox will refuse to run if
cannot satisfy dependencies. It's the users responsibility to ensure
dependencies are satisfied. ``pkg_resources`` is part of setuptools so
added setuptools as dependency.

Realized pkg_resources contain everything we used from packaging,
dropped packaging as dependency.

gaborbernat added a commit to gaborbernat/tox that referenced this issue Aug 9, 2018

Ability to specify package requirements for the tox run tox-dev#783
Done via the ``tox.ini`` (``tox`` section under key ``requires`` - PEP-508
style). Can be used to specify both plugin requirements or build
dependencies until we'll have PEP-517 support.

Using ``pkg_resources.Requirement``. Note tox will refuse to run if
cannot satisfy dependencies. It's the users responsibility to ensure
dependencies are satisfied. ``pkg_resources`` is part of setuptools so
added setuptools as dependency.

Realized pkg_resources contain everything we used from packaging,
dropped packaging as dependency.

gaborbernat added a commit to gaborbernat/tox that referenced this issue Aug 9, 2018

Ability to specify package requirements for the tox run tox-dev#783
Done via the ``tox.ini`` (``tox`` section under key ``requires`` - PEP-508
style). Can be used to specify both plugin requirements or build
dependencies until we'll have PEP-517 support.

Using ``pkg_resources.Requirement``. Note tox will refuse to run if
cannot satisfy dependencies. It's the users responsibility to ensure
dependencies are satisfied. ``pkg_resources`` is part of setuptools so
added setuptools as dependency.

Realized pkg_resources contain everything we used from packaging,
dropped packaging as dependency.

gaborbernat added a commit to gaborbernat/tox that referenced this issue Aug 9, 2018

Ability to specify package requirements for the tox run tox-dev#783
Done via the ``tox.ini`` (``tox`` section under key ``requires`` - PEP-508
style). Can be used to specify both plugin requirements or build
dependencies until we'll have PEP-517 support.

Using ``pkg_resources.Requirement``. Note tox will refuse to run if
cannot satisfy dependencies. It's the users responsibility to ensure
dependencies are satisfied. ``pkg_resources`` is part of setuptools so
added setuptools as dependency.

Realized pkg_resources contain everything we used from packaging,
dropped packaging as dependency.

gaborbernat added a commit to gaborbernat/tox that referenced this issue Aug 9, 2018

Ability to specify package requirements for the tox run tox-dev#783
Done via the ``tox.ini`` (``tox`` section under key ``requires`` - PEP-508
style). Can be used to specify both plugin requirements or build
dependencies until we'll have PEP-517 support.

Using ``pkg_resources.Requirement``. Note tox will refuse to run if
cannot satisfy dependencies. It's the users responsibility to ensure
dependencies are satisfied. ``pkg_resources`` is part of setuptools so
added setuptools as dependency.

Realized pkg_resources contain everything we used from packaging,
dropped packaging as dependency.

gaborbernat added a commit that referenced this issue Aug 9, 2018

Ability to specify package requirements for the tox run #783 (#936)
Done via the ``tox.ini`` (``tox`` section under key ``requires`` - PEP-508
style). Can be used to specify both plugin requirements or build
dependencies until we'll have PEP-517 support.

Using ``pkg_resources.Requirement``. Note tox will refuse to run if
cannot satisfy dependencies. It's the users responsibility to ensure
dependencies are satisfied. ``pkg_resources`` is part of setuptools so
added setuptools as dependency.

Realized pkg_resources contain everything we used from packaging,
dropped packaging as a dependency.
@gaborbernat

This comment has been minimized.

Member

gaborbernat commented Aug 9, 2018

tox will not install packages, but will notify the user to do so, done via #936. As bonus can be used to specify general requirements of the tox run env (not just tox plugins). It has full PEP-517 support meaning you can use markers to filter for optional dependencies.

@gaborbernat gaborbernat closed this Aug 9, 2018

DmytroLitvinov added a commit to DmytroLitvinov/kuna that referenced this issue Aug 20, 2018

Scheduled weekly dependency update for week 33 (#21)



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


<details>
  <summary>Changelog</summary>
  
  
   ### 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;`_)
   ```
   
  
</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.7.6** to **1.7.7**.


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

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

* 5198: document not in toctree warning when including files only for parallel
  builds
* LaTeX: reduce &quot;Token not allowed in a PDF string&quot; hyperref warnings in latex
  console output (refs: 5236)
* LaTeX: suppress &quot;remreset Warning: The remreset package is obsolete&quot; in latex
  console output with recent LaTeX (refs: 5237)
* 5234: PDF output: usage of PAPER environment variable is broken since Sphinx
  1.5
* LaTeX: fix the :confval:`latex_engine` documentation regarding Latin Modern
  font with XeLaTeX/LuaLateX (refs: 5251)
* 5280: autodoc: Fix wrong type annotations for complex typing
* autodoc: Optional types are wrongly rendered
* 5291: autodoc crashed by ForwardRef types
* 5211: autodoc: No docs generated for functools.partial functions
* 5306: autodoc: ``getargspec()`` raises NameError for invalid typehints
* 5298: imgmath: math_number_all causes equations to have two numbers in html
* 5294: sphinx-quickstart blank prompts in PowerShell
   ```
   
  
</details>


 

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





### Update [cryptography](https://pypi.org/project/cryptography) from **2.3** to **2.3.1**.


*The bot wasn't able to find a changelog for this release. [Got an idea?](https://github.com/pyupio/changelogs/issues/new)*

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/cryptography
  - Changelog: https://pyup.io/changelogs/cryptography/
  - Repo: https://github.com/pyca/cryptography
</details>

guykisel added a commit to guykisel/inline-plz that referenced this issue Sep 24, 2018

Update tox to 3.4.0 (#380)
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment