From e3d412d1f4d873bce356055e8c736a1220bed6bb Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Sun, 29 Jul 2018 21:30:49 -0300 Subject: [PATCH] Warn when implementations exist for pytest_namespace hook This hook has been deprecated and will be removed in the future. Fix #2639 --- changelog/2639.removal.rst | 3 +++ setup.py | 2 +- src/_pytest/hookspec.py | 15 +++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 changelog/2639.removal.rst diff --git a/changelog/2639.removal.rst b/changelog/2639.removal.rst new file mode 100644 index 00000000000..b6c1eed8aa7 --- /dev/null +++ b/changelog/2639.removal.rst @@ -0,0 +1,3 @@ +``pytest_namespace`` has been deprecated. + +Plugins who need this feature are suggested to import ``pytest`` and set attributes explicitly during ``pytest_configure``. diff --git a/setup.py b/setup.py index b76825aff56..b5b9dfecfe1 100644 --- a/setup.py +++ b/setup.py @@ -69,7 +69,7 @@ def main(): # if _PYTEST_SETUP_SKIP_PLUGGY_DEP is set, skip installing pluggy; # used by tox.ini to test with pluggy master if "_PYTEST_SETUP_SKIP_PLUGGY_DEP" not in os.environ: - install_requires.append("pluggy>=0.5,<0.8") + install_requires.append("pluggy>=0.7") environment_marker_support_level = get_environment_marker_support_level() if environment_marker_support_level >= 2: install_requires.append('funcsigs;python_version<"3.0"') diff --git a/src/_pytest/hookspec.py b/src/_pytest/hookspec.py index fec43a40099..88b6ee455ba 100644 --- a/src/_pytest/hookspec.py +++ b/src/_pytest/hookspec.py @@ -1,6 +1,7 @@ """ hook specifications for pytest plugins, invoked from main.py and builtin plugins. """ from pluggy import HookspecMarker +from .deprecated import RemovedInPytest4Warning hookspec = HookspecMarker("pytest") @@ -22,10 +23,14 @@ def pytest_addhooks(pluginmanager): """ -@hookspec(historic=True) +@hookspec( + historic=True, + warn_on_impl=RemovedInPytest4Warning( + "pytest_namespace is deprecated and will be removed soon" + ), +) def pytest_namespace(): """ - (**Deprecated**) this hook causes direct monkeypatching on pytest, its use is strongly discouraged return dict of name->object to be made globally available in the pytest namespace. @@ -33,6 +38,12 @@ def pytest_namespace(): .. note:: This hook is incompatible with ``hookwrapper=True``. + + .. warning:: + This hook has been **deprecated** and will be removed in pytest 4.0. + + Plugins who need this feature are suggested + to import ``pytest`` and set attributes explicitly during ``pytest_configure``. """