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

deprecate pytest_namespace alltogether #2639

Closed
RonnyPfannschmidt opened this Issue Aug 1, 2017 · 27 comments

Comments

5 participants
@RonnyPfannschmidt
Copy link
Member

RonnyPfannschmidt commented Aug 1, 2017

with the merge of #2636 pytest itself no longer needs the pytest_namespace hook

the need for preinit is gone as well
so to follow up we should remind people that the hook is deprecated

  • print deprecation warnings when hook definitions are found
  • changelog
  • notes about there not being a replacement
  • deprecation roadmap entry
@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Aug 1, 2017

What we need to do, from the top of my head:

  1. In pytest, if pytest_namespace returns something other than [] issue the deprecation warning, including the dictionary keys to help users figure out which plugin is using pytest_namespace.
  2. Include a note in the CHANGELOG, pointing out to the documentation;
  3. Add a .. note: to the docs about the deprecation and when we plan to remove it; also make sure to provide an example about what to replace pytest_namespace with;
  4. Add an entry to the Deprecation Roadmap.
@olymk2

This comment has been minimized.

Copy link

olymk2 commented Aug 9, 2017

just curious, what the alternative to pytest_namespace ?

I am currently using this, so my functions are registered under pytest.myfunc, the only reference i could find to it being deprecated was in the test code, but nothing about what i should be using in its place ?

@RonnyPfannschmidt

This comment has been minimized.

Copy link
Member Author

RonnyPfannschmidt commented Aug 9, 2017

@olymk2 there will not be a replacement use own modules ^^

@olymk2

This comment has been minimized.

Copy link

olymk2 commented Aug 9, 2017

not sure what you mean, currently i have my own plugin which I register a few methods in.

these are registered inside pytest_namespace as local functions and returned in the dictonary.

so are you saying i need to import every plugin I want to use now, and they dont auto register under pytest namespace ?

@RonnyPfannschmidt

This comment has been minimized.

Copy link
Member Author

RonnyPfannschmidt commented Aug 9, 2017

no plugin "auto-registers" under pytest - its just that pytest-namespace will no longer be called

it was never implemented correctly and prevents correcting horrendous bug in config initialization

@olymk2

This comment has been minimized.

Copy link

olymk2 commented Aug 9, 2017

how does it auto register then.

if i take my function out of the namespace its not picked up, so there must be some other method of registering the function to pytest does it need a specific prefix in the function name perhaps ?

@RonnyPfannschmidt

This comment has been minimized.

Copy link
Member Author

RonnyPfannschmidt commented Aug 9, 2017

@olymk2 you will have to import from your plugin then instead of using pytest

@olymk2

This comment has been minimized.

Copy link

olymk2 commented Aug 9, 2017

ah I see, I may leave that for another day then as that will break any software using this plugin, as you will need to add the import to any project using it.

Also not sure how that works when you use pytest command line to configure the plugin is that likely to still work if its a seperate plugin ?

@RonnyPfannschmidt

This comment has been minimized.

Copy link
Member Author

RonnyPfannschmidt commented Aug 9, 2017

@olymk2 there will be a major aka breaking pytest release to remove the feature
so right now you dont have to fear for your users, and you can prepare for the removal slowly as it will be a long time before the removal is finalized

first we will deprecate it, start to warn about it and work with the authors of public plugins to remove its uses gracefully

@olymk2

This comment has been minimized.

Copy link

olymk2 commented Aug 9, 2017

okay thanks, feels like it would be nice to have another way like a hook to keep things under the same namespace.

@pytest_register_method
def myequals()
    return True
import pytest
assert pytest.myequals() is True

for example.

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Aug 9, 2017

I thought a possible workaround would be to import pytest and manually set your objects as attributes:

def pytest_configure():
    import pytest
    pytest.myequals = myequals

For setuptools-based plugins this should work for most cases, depending on how myequals is meant to be used.

@RonnyPfannschmidt

This comment has been minimized.

Copy link
Member Author

RonnyPfannschmidt commented Aug 9, 2017

@olymk2 one of the main idea is to stop things that are not part of pytest dump random code into its namespace

the other part is, its inherently incompatible with nested test runs and has no sane cleanup

its pretty much a broken way to do things

@olymk2

This comment has been minimized.

Copy link

olymk2 commented Aug 9, 2017

okay, good to know @RonnyPfannschmidt I may start down that route then, or fall back to @nicoddemus suggestion if it takes to long I was actually considering some thing like that myself as a workaround.

but I will aim for separating it out into its own import.

@nicoddemus nicoddemus added this to the 3.5 milestone Jan 5, 2018

@nicoddemus nicoddemus modified the milestones: 3.5, 3.6 Apr 13, 2018

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Apr 25, 2018

With pytest-dev/pluggy#138 this is now much easier right @RonnyPfannschmidt? I think we should do this as soon as we get a new pluggy release.

@RonnyPfannschmidt

This comment has been minimized.

Copy link
Member Author

RonnyPfannschmidt commented Apr 26, 2018

@nicoddemus thats the plan, i did that pluggy r precisely to do the pytest-namespace deprecation

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Apr 26, 2018

I thought so 😉. @tgoodlet do you have any plans for the next release? Related: pytest-dev/pluggy#140

@nicoddemus nicoddemus modified the milestones: 3.6, 3.7 Jul 5, 2018

cmccandless added a commit to cmccandless/tools that referenced this issue Jul 31, 2018

Update pytest to 3.7.0 (#23)
This PR updates [pytest](https://pypi.org/project/pytest) from **3.6.4** to **3.7.0**.



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

Deprecations and Removals
-------------------------

- `2639 &lt;https://github.com/pytest-dev/pytest/issues/2639&gt;`_: ``pytest_namespace`` has been deprecated.

  See the documentation for ``pytest_namespace`` hook for suggestions on how to deal
  with this in plugins which use this functionality.


- `3661 &lt;https://github.com/pytest-dev/pytest/issues/3661&gt;`_: Calling a fixture function directly, as opposed to request them in a test function, now issues a ``RemovedInPytest4Warning``. It will be changed into an error in pytest ``4.0``.

  This is a great source of confusion to new users, which will often call the fixture functions and request them from test functions interchangeably, which breaks the fixture resolution model.



Features
--------

- `2283 &lt;https://github.com/pytest-dev/pytest/issues/2283&gt;`_: New ``package`` fixture scope: fixtures are finalized when the last test of a *package* finishes. This feature is considered **experimental**, so use it sparingly.


- `3576 &lt;https://github.com/pytest-dev/pytest/issues/3576&gt;`_: ``Node.add_marker`` now supports an ``append=True/False`` parameter to determine whether the mark comes last (default) or first.


- `3579 &lt;https://github.com/pytest-dev/pytest/issues/3579&gt;`_: Fixture ``caplog`` now has a ``messages`` property, providing convenient access to the format-interpolated log messages without the extra data provided by the formatter/handler.


- `3610 &lt;https://github.com/pytest-dev/pytest/issues/3610&gt;`_: New ``--trace`` option to enter the debugger at the start of a test.


- `3623 &lt;https://github.com/pytest-dev/pytest/issues/3623&gt;`_: Introduce ``pytester.copy_example`` as helper to do acceptance tests against examples from the project.



Bug Fixes
---------

- `2220 &lt;https://github.com/pytest-dev/pytest/issues/2220&gt;`_: Fix a bug where fixtures overridden by direct parameters (for example parametrization) were being instantiated even if they were not being used by a test.


- `3695 &lt;https://github.com/pytest-dev/pytest/issues/3695&gt;`_: Fix ``ApproxNumpy`` initialisation argument mixup, ``abs`` and ``rel`` tolerances were flipped causing strange comparsion results.
  Add tests to check ``abs`` and ``rel`` tolerances for ``np.array`` and test for expecting ``nan`` with ``np.array()``


- `980 &lt;https://github.com/pytest-dev/pytest/issues/980&gt;`_: Fix truncated locals output in verbose mode.



Improved Documentation
----------------------

- `3295 &lt;https://github.com/pytest-dev/pytest/issues/3295&gt;`_: Correct the usage documentation of ``--last-failed-no-failures`` by adding the missing ``--last-failed`` argument in the presented examples, because they are misleading and lead to think that the missing argument is not needed.



Trivial/Internal Changes
------------------------

- `3519 &lt;https://github.com/pytest-dev/pytest/issues/3519&gt;`_: Now a ``README.md`` file is created in ``.pytest_cache`` to make it clear why the directory exists.
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/pytest
  - Changelog: https://pyup.io/changelogs/pytest/
  - Repo: https://github.com/pytest-dev/pytest/issues
  - Homepage: http://pytest.org
</details>

jezdez added a commit to mozilla/telemetry-analysis-service that referenced this issue Aug 14, 2018

Update pytest to 3.7.1 (#1247)
This PR updates [pytest](https://pypi.org/project/pytest) from **3.6.2** to **3.7.1**.



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

Bug Fixes
---------

- `3473 &lt;https://github.com/pytest-dev/pytest/issues/3473&gt;`_: Raise immediately if ``approx()`` is given an expected value of a type it doesn&#39;t understand (e.g. strings, nested dicts, etc.).


- `3712 &lt;https://github.com/pytest-dev/pytest/issues/3712&gt;`_: Correctly represent the dimensions of an numpy array when calling ``repr()`` on ``approx()``.

- `3742 &lt;https://github.com/pytest-dev/pytest/issues/3742&gt;`_: Fix incompatibility with third party plugins during collection, which produced the error ``object has no attribute &#39;_collectfile&#39;``.

- `3745 &lt;https://github.com/pytest-dev/pytest/issues/3745&gt;`_: Display the absolute path if ``cache_dir`` is not relative to the ``rootdir`` instead of failing.


- `3747 &lt;https://github.com/pytest-dev/pytest/issues/3747&gt;`_: Fix compatibility problem with plugins and the warning code issued by fixture functions when they are called directly.


- `3748 &lt;https://github.com/pytest-dev/pytest/issues/3748&gt;`_: Fix infinite recursion in ``pytest.approx`` with arrays in ``numpy&lt;1.13``.


- `3757 &lt;https://github.com/pytest-dev/pytest/issues/3757&gt;`_: Pin pathlib2 to ``&gt;=2.2.0`` as we require ``__fspath__`` support.


- `3763 &lt;https://github.com/pytest-dev/pytest/issues/3763&gt;`_: Fix ``TypeError`` when the assertion message is ``bytes`` in python 3.
   ```
   
  
  
   ### 3.7.0
   ```
   =========================

Deprecations and Removals
-------------------------

- `2639 &lt;https://github.com/pytest-dev/pytest/issues/2639&gt;`_: ``pytest_namespace`` has been deprecated.

  See the documentation for ``pytest_namespace`` hook for suggestions on how to deal
  with this in plugins which use this functionality.


- `3661 &lt;https://github.com/pytest-dev/pytest/issues/3661&gt;`_: Calling a fixture function directly, as opposed to request them in a test function, now issues a ``RemovedInPytest4Warning``. It will be changed into an error in pytest ``4.0``.

  This is a great source of confusion to new users, which will often call the fixture functions and request them from test functions interchangeably, which breaks the fixture resolution model.



Features
--------

- `2283 &lt;https://github.com/pytest-dev/pytest/issues/2283&gt;`_: New ``package`` fixture scope: fixtures are finalized when the last test of a *package* finishes. This feature is considered **experimental**, so use it sparingly.


- `3576 &lt;https://github.com/pytest-dev/pytest/issues/3576&gt;`_: ``Node.add_marker`` now supports an ``append=True/False`` parameter to determine whether the mark comes last (default) or first.


- `3579 &lt;https://github.com/pytest-dev/pytest/issues/3579&gt;`_: Fixture ``caplog`` now has a ``messages`` property, providing convenient access to the format-interpolated log messages without the extra data provided by the formatter/handler.


- `3610 &lt;https://github.com/pytest-dev/pytest/issues/3610&gt;`_: New ``--trace`` option to enter the debugger at the start of a test.


- `3623 &lt;https://github.com/pytest-dev/pytest/issues/3623&gt;`_: Introduce ``pytester.copy_example`` as helper to do acceptance tests against examples from the project.



Bug Fixes
---------

- `2220 &lt;https://github.com/pytest-dev/pytest/issues/2220&gt;`_: Fix a bug where fixtures overridden by direct parameters (for example parametrization) were being instantiated even if they were not being used by a test.


- `3695 &lt;https://github.com/pytest-dev/pytest/issues/3695&gt;`_: Fix ``ApproxNumpy`` initialisation argument mixup, ``abs`` and ``rel`` tolerances were flipped causing strange comparsion results.
  Add tests to check ``abs`` and ``rel`` tolerances for ``np.array`` and test for expecting ``nan`` with ``np.array()``


- `980 &lt;https://github.com/pytest-dev/pytest/issues/980&gt;`_: Fix truncated locals output in verbose mode.



Improved Documentation
----------------------

- `3295 &lt;https://github.com/pytest-dev/pytest/issues/3295&gt;`_: Correct the usage documentation of ``--last-failed-no-failures`` by adding the missing ``--last-failed`` argument in the presented examples, because they are misleading and lead to think that the missing argument is not needed.



Trivial/Internal Changes
------------------------

- `3519 &lt;https://github.com/pytest-dev/pytest/issues/3519&gt;`_: Now a ``README.md`` file is created in ``.pytest_cache`` to make it clear why the directory exists.
   ```
   
  
  
   ### 3.6.4
   ```
   =========================

Bug Fixes
---------

- Invoke pytest using ``-mpytest`` so ``sys.path`` does not get polluted by packages installed in ``site-packages``. (`742 &lt;https://github.com/pytest-dev/pytest/issues/742&gt;`_)


Improved Documentation
----------------------

- Use ``smtp_connection`` instead of ``smtp`` in fixtures documentation to avoid possible confusion. (`3592 &lt;https://github.com/pytest-dev/pytest/issues/3592&gt;`_)


Trivial/Internal Changes
------------------------

- Remove obsolete ``__future__`` imports. (`2319 &lt;https://github.com/pytest-dev/pytest/issues/2319&gt;`_)

- Add CITATION to provide information on how to formally cite pytest. (`3402 &lt;https://github.com/pytest-dev/pytest/issues/3402&gt;`_)

- Replace broken type annotations with type comments. (`3635 &lt;https://github.com/pytest-dev/pytest/issues/3635&gt;`_)

- Pin ``pluggy`` to ``&lt;0.8``. (`3727 &lt;https://github.com/pytest-dev/pytest/issues/3727&gt;`_)
   ```
   
  
  
   ### 3.6.3
   ```
   =========================

Bug Fixes
---------

- Fix ``ImportWarning`` triggered by explicit relative imports in
  assertion-rewritten package modules. (`3061
  &lt;https://github.com/pytest-dev/pytest/issues/3061&gt;`_)

- Fix error in ``pytest.approx`` when dealing with 0-dimension numpy
  arrays. (`3593 &lt;https://github.com/pytest-dev/pytest/issues/3593&gt;`_)

- No longer raise ``ValueError`` when using the ``get_marker`` API. (`3605
  &lt;https://github.com/pytest-dev/pytest/issues/3605&gt;`_)

- Fix problem where log messages with non-ascii characters would not
  appear in the output log file.
  (`3630 &lt;https://github.com/pytest-dev/pytest/issues/3630&gt;`_)

- No longer raise ``AttributeError`` when legacy marks can&#39;t be stored in
  functions. (`3631 &lt;https://github.com/pytest-dev/pytest/issues/3631&gt;`_)


Improved Documentation
----------------------

- The description above the example for ``pytest.mark.skipif`` now better
  matches the code. (`3611
  &lt;https://github.com/pytest-dev/pytest/issues/3611&gt;`_)


Trivial/Internal Changes
------------------------

- Internal refactoring: removed unused ``CallSpec2tox ._globalid_args``
  attribute and ``metafunc`` parameter from ``CallSpec2.copy()``. (`3598
  &lt;https://github.com/pytest-dev/pytest/issues/3598&gt;`_)

- Silence usage of ``reduce`` warning in Python 2 (`3609
  &lt;https://github.com/pytest-dev/pytest/issues/3609&gt;`_)

- Fix usage of ``attr.ib`` deprecated ``convert`` parameter. (`3653
  &lt;https://github.com/pytest-dev/pytest/issues/3653&gt;`_)
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/pytest
  - Changelog: https://pyup.io/changelogs/pytest/
  - Repo: https://github.com/pytest-dev/pytest/issues
  - Homepage: http://pytest.org
</details>

cmccandless added a commit to cmccandless/multisite that referenced this issue Aug 20, 2018

Update pytest to 3.7.2 (#8)
This PR updates [pytest](https://pypi.org/project/pytest) from **3.6.4** to **3.7.2**.



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

Bug Fixes
---------

- `3671 &lt;https://github.com/pytest-dev/pytest/issues/3671&gt;`_: Fix ``filterwarnings`` not being registered as a builtin mark.


- `3768 &lt;https://github.com/pytest-dev/pytest/issues/3768&gt;`_, `3789 &lt;https://github.com/pytest-dev/pytest/issues/3789&gt;`_: Fix test collection from packages mixed with normal directories.


- `3771 &lt;https://github.com/pytest-dev/pytest/issues/3771&gt;`_: Fix infinite recursion during collection if a ``pytest_ignore_collect`` hook returns ``False`` instead of ``None``.


- `3774 &lt;https://github.com/pytest-dev/pytest/issues/3774&gt;`_: Fix bug where decorated fixtures would lose functionality (for example ``mock.patch``).


- `3775 &lt;https://github.com/pytest-dev/pytest/issues/3775&gt;`_: Fix bug where importing modules or other objects with prefix ``pytest_`` prefix would raise a ``PluginValidationError``.


- `3788 &lt;https://github.com/pytest-dev/pytest/issues/3788&gt;`_: Fix ``AttributeError`` during teardown of ``TestCase`` subclasses which raise an exception during ``__init__``.


- `3804 &lt;https://github.com/pytest-dev/pytest/issues/3804&gt;`_: Fix traceback reporting for exceptions with ``__cause__`` cycles.



Improved Documentation
----------------------

- `3746 &lt;https://github.com/pytest-dev/pytest/issues/3746&gt;`_: Add documentation for ``metafunc.config`` that had been mistakenly hidden.
   ```
   
  
  
   ### 3.7.1
   ```
   =========================

Bug Fixes
---------

- `3473 &lt;https://github.com/pytest-dev/pytest/issues/3473&gt;`_: Raise immediately if ``approx()`` is given an expected value of a type it doesn&#39;t understand (e.g. strings, nested dicts, etc.).


- `3712 &lt;https://github.com/pytest-dev/pytest/issues/3712&gt;`_: Correctly represent the dimensions of an numpy array when calling ``repr()`` on ``approx()``.

- `3742 &lt;https://github.com/pytest-dev/pytest/issues/3742&gt;`_: Fix incompatibility with third party plugins during collection, which produced the error ``object has no attribute &#39;_collectfile&#39;``.

- `3745 &lt;https://github.com/pytest-dev/pytest/issues/3745&gt;`_: Display the absolute path if ``cache_dir`` is not relative to the ``rootdir`` instead of failing.


- `3747 &lt;https://github.com/pytest-dev/pytest/issues/3747&gt;`_: Fix compatibility problem with plugins and the warning code issued by fixture functions when they are called directly.


- `3748 &lt;https://github.com/pytest-dev/pytest/issues/3748&gt;`_: Fix infinite recursion in ``pytest.approx`` with arrays in ``numpy&lt;1.13``.


- `3757 &lt;https://github.com/pytest-dev/pytest/issues/3757&gt;`_: Pin pathlib2 to ``&gt;=2.2.0`` as we require ``__fspath__`` support.


- `3763 &lt;https://github.com/pytest-dev/pytest/issues/3763&gt;`_: Fix ``TypeError`` when the assertion message is ``bytes`` in python 3.
   ```
   
  
  
   ### 3.7.0
   ```
   =========================

Deprecations and Removals
-------------------------

- `2639 &lt;https://github.com/pytest-dev/pytest/issues/2639&gt;`_: ``pytest_namespace`` has been deprecated.

  See the documentation for ``pytest_namespace`` hook for suggestions on how to deal
  with this in plugins which use this functionality.


- `3661 &lt;https://github.com/pytest-dev/pytest/issues/3661&gt;`_: Calling a fixture function directly, as opposed to request them in a test function, now issues a ``RemovedInPytest4Warning``. It will be changed into an error in pytest ``4.0``.

  This is a great source of confusion to new users, which will often call the fixture functions and request them from test functions interchangeably, which breaks the fixture resolution model.



Features
--------

- `2283 &lt;https://github.com/pytest-dev/pytest/issues/2283&gt;`_: New ``package`` fixture scope: fixtures are finalized when the last test of a *package* finishes. This feature is considered **experimental**, so use it sparingly.


- `3576 &lt;https://github.com/pytest-dev/pytest/issues/3576&gt;`_: ``Node.add_marker`` now supports an ``append=True/False`` parameter to determine whether the mark comes last (default) or first.


- `3579 &lt;https://github.com/pytest-dev/pytest/issues/3579&gt;`_: Fixture ``caplog`` now has a ``messages`` property, providing convenient access to the format-interpolated log messages without the extra data provided by the formatter/handler.


- `3610 &lt;https://github.com/pytest-dev/pytest/issues/3610&gt;`_: New ``--trace`` option to enter the debugger at the start of a test.


- `3623 &lt;https://github.com/pytest-dev/pytest/issues/3623&gt;`_: Introduce ``pytester.copy_example`` as helper to do acceptance tests against examples from the project.



Bug Fixes
---------

- `2220 &lt;https://github.com/pytest-dev/pytest/issues/2220&gt;`_: Fix a bug where fixtures overridden by direct parameters (for example parametrization) were being instantiated even if they were not being used by a test.


- `3695 &lt;https://github.com/pytest-dev/pytest/issues/3695&gt;`_: Fix ``ApproxNumpy`` initialisation argument mixup, ``abs`` and ``rel`` tolerances were flipped causing strange comparsion results.
  Add tests to check ``abs`` and ``rel`` tolerances for ``np.array`` and test for expecting ``nan`` with ``np.array()``


- `980 &lt;https://github.com/pytest-dev/pytest/issues/980&gt;`_: Fix truncated locals output in verbose mode.



Improved Documentation
----------------------

- `3295 &lt;https://github.com/pytest-dev/pytest/issues/3295&gt;`_: Correct the usage documentation of ``--last-failed-no-failures`` by adding the missing ``--last-failed`` argument in the presented examples, because they are misleading and lead to think that the missing argument is not needed.



Trivial/Internal Changes
------------------------

- `3519 &lt;https://github.com/pytest-dev/pytest/issues/3519&gt;`_: Now a ``README.md`` file is created in ``.pytest_cache`` to make it clear why the directory exists.
   ```
   
  
</details>


 

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

@RonnyPfannschmidt RonnyPfannschmidt moved this from To do to Done in detangle the config object Nov 5, 2018

@indyana

This comment has been minimized.

Copy link

indyana commented Jan 18, 2019

I never received warnings about this depreciation, so caused some scrambling when 4.1 upgrade occurred. I had used the hook in my core conf_test file to store some global test session values for use outside tests.

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Jan 18, 2019

Hi @indyana

I never received warnings about this depreciation, so caused some scrambling when 4.1

Strange, we have been issuing a warning since 3.7.0. Did you upgrade from 3.6 to 4.1 directly?

@slarse

This comment has been minimized.

Copy link

slarse commented Jan 18, 2019

@nicoddemus I used pytest_namespace to store some global constants and functions for my test suite (which I now realize was probably pretty dirty), and did not receive any warnings when running 3.9.1. Then my builds failed on upgrading to 4.1.1. Could it possibly be that pytest_namespace was checked before conftest.py was loaded, and thus the warning wouldn't trigger for those of us who used it that way?

PS: Caused super minor issues for me, just thought the info could be useful!

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Jan 18, 2019

Hi @slarse,

Sorry to hear that. AFAIK it should emit the warning at the point that pytest calls the hook, so it wouldn't matter where it was defined, if it was working (IOW, if the hook was actually being called).

But now I'm wondering, because we didn't seem to have a test for that. @RonnyPfannschmidt do you remember if we tested this warning at some point?

@indyana

This comment has been minimized.

Copy link

indyana commented Jan 18, 2019

No, I was incrementally upgrading all along. I went back and locked the test requirements down to 4.0.2 for a few weeks until I could get around to fixing by using a module import instead of pytest_namespace; there still were not any warnings in 4.0.2.

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Jan 18, 2019

@indyana thanks.

Weird, it was deprecated in #3735, so it should have been emitting warnings since then when a pytest_namespace hook was encountered. 🤔

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Jan 18, 2019

Btw we are sorry for the trouble, we really tried to make the transition as smooth as possible, but it seems we had a few hiccups along the way. 😞

@indyana

This comment has been minimized.

Copy link

indyana commented Jan 18, 2019

Dirt simple example of this behavior, in case it helps you in the future. It wasn't a huge deal, more wanted to make you aware that the way this alert was done wasn't visible to at least a few users out there. :)

(venv) C:\<blah>\deprecated_check>pytest
============================= test session starts =============================
platform win32 -- Python 3.7.1, pytest-4.0.2, py-1.7.0, pluggy-0.8.1
rootdir: C:\<blah>\deprecated_check, inifile:
collected 1 item

test_example.py .                                                        [100%]

========================== 1 passed in 0.03 seconds ===========================

deprecated_check.zip

@slarse

This comment has been minimized.

Copy link

slarse commented Jan 18, 2019

@nicoddemus I feel the need to mention that my problems were minuscule, solved by some copy paste and sed magic, and that you guys are doing a fantastic job with this project. Diagnosing the problem is very easy because pluggy simply spits out an error message that ends with:

INTERNALERROR> pluggy.manager.PluginValidationError: unknown hook 'pytest_namespace' in [...]
@RonnyPfannschmidt

This comment has been minimized.

Copy link
Member Author

RonnyPfannschmidt commented Jan 18, 2019

@nicoddemus i wonder if we have a few pathological case in the warning capturing/recording where the normal output is already silenced, but the tracking is not yet correctly in place

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Jan 21, 2019

@RonnyPfannschmidt indeed, unfortunately due to how config and plugins are initialized we might be missing some early warnings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.