Hello community,
here is the log from the commit of package python-Deprecated for
openSUSE:Factory checked in at 2020-05-04 18:41:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Deprecated (Old)
and /work/SRC/openSUSE:Factory/.python-Deprecated.new.2738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Deprecated"
Mon May 4 18:41:24 2020 rev:4 rq:799995 version:1.2.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Deprecated/python-Deprecated.changes
2020-01-13 22:22:48.334553885 +0100
+++
/work/SRC/openSUSE:Factory/.python-Deprecated.new.2738/python-Deprecated.changes
2020-05-04 18:42:47.269331963 +0200
@@ -1,0 +2,14 @@
+Mon May 4 08:17:33 UTC 2020 - Johannes Grassler <[email protected]>
+
+- update to 1.2.9
+ * Fix #20: Set the :func:warnings.warn stacklevel to 2 if
+ the Python implementation is PyPy
+ * Fix packit configuration: use dist-git-branch: fedora-all
+ * Change the Tox configuration to run tests on PyPy v2.7 and 3.6.
+ * Fix #15: The @deprecated decorator doesn't set a warning
+ filter if the action keyword argument is not provided or None.
+ * Fix #13: Warning displays the correct filename and line
+ number when decorating a class if wrapt does not have the compiled c
+ extension.
+
+-------------------------------------------------------------------
Old:
----
Deprecated-1.2.7.tar.gz
New:
----
Deprecated-1.2.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Deprecated.spec ++++++
--- /var/tmp/diff_new_pack.QNx5YT/_old 2020-05-04 18:42:49.185335914 +0200
+++ /var/tmp/diff_new_pack.QNx5YT/_new 2020-05-04 18:42:49.189335923 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-Deprecated
-Version: 1.2.7
+Version: 1.2.9
Release: 0
Summary: Python @deprecated decorator
License: MIT
++++++ Deprecated-1.2.7.tar.gz -> Deprecated-1.2.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/.bumpversion.cfg
new/Deprecated-1.2.9/.bumpversion.cfg
--- old/Deprecated-1.2.7/.bumpversion.cfg 2019-10-02 20:18:27.000000000
+0200
+++ new/Deprecated-1.2.9/.bumpversion.cfg 2020-04-05 22:45:36.000000000
+0200
@@ -1,5 +1,5 @@
[bumpversion]
-current_version = 1.2.7
+current_version = 1.2.9
commit = True
tag = False
message = Prepare next version {new_version} (unreleased)
@@ -19,4 +19,3 @@
[bumpversion:file:python-deprecated.spec]
search = (?<=Version:\s+){current_version}
replace = {new_version}
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/.editorconfig
new/Deprecated-1.2.9/.editorconfig
--- old/Deprecated-1.2.7/.editorconfig 2019-10-02 20:18:27.000000000 +0200
+++ new/Deprecated-1.2.9/.editorconfig 2020-04-10 09:54:34.000000000 +0200
@@ -9,5 +9,8 @@
indent_size = 4
charset = utf-8
+[*.{yml,yaml}]
+indent_size = 2
+
[*.{bat,cmd,ps1}]
end_of_line = crlf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/.packit.yml
new/Deprecated-1.2.9/.packit.yml
--- old/Deprecated-1.2.7/.packit.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/Deprecated-1.2.9/.packit.yml 2020-04-10 09:54:34.000000000 +0200
@@ -0,0 +1,32 @@
+specfile_path: python-deprecated.spec
+synced_files:
+ - python-deprecated.spec
+ - .packit.yml
+upstream_project_name: Deprecated
+downstream_package_name: python-deprecated
+create_pr: false
+jobs:
+ - job: propose_downstream
+ trigger: release
+ metadata:
+ dist-git-branch: master
+ - job: propose_downstream
+ trigger: release
+ metadata:
+ dist-git-branch: fedora-all
+ - job: propose_downstream
+ trigger: release
+ metadata:
+ dist-git-branch: f30
+ - job: propose_downstream
+ trigger: release
+ metadata:
+ dist-git-branch: f29
+ - job: copr_build
+ trigger: pull_request
+ metadata:
+ targets:
+ - fedora-all
+ - fedora-30-x86_64
+ - fedora-29-x86_64
+ - fedora-rawhide-x86_64
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/CHANGELOG.rst
new/Deprecated-1.2.9/CHANGELOG.rst
--- old/Deprecated-1.2.7/CHANGELOG.rst 2019-11-11 16:04:12.000000000 +0100
+++ new/Deprecated-1.2.9/CHANGELOG.rst 2020-04-10 09:54:34.000000000 +0200
@@ -18,6 +18,58 @@
(only in comment or documentation).
+v1.2.9 (2020-04-10)
+===================
+
+Bug fix release
+
+Fix
+---
+
+- Fix #20: Set the :func:`warnings.warn` stacklevel to 2 if the Python
implementation is `PyPy <https://www.pypy.org/>`_.
+
+- Fix packit configuration: use ``dist-git-branch: fedora-all``.
+
+Other
+-----
+
+- Change the Tox configuration to run tests on PyPy v2.7 and 3.6.
+
+
+v1.2.8 (2020-04-05)
+===================
+
+Bug fix release
+
+Fix
+---
+
+- Fix #15: The ``@deprecated`` decorator doesn't set a warning filter if the
*action* keyword argument is
+ not provided or ``None``. In consequences, the warning messages are only
emitted if the global filter allow it.
+ For more information, see `The Warning Filter
<https://docs.python.org/3/library/warnings.html#the-warnings-filter>`_
+ in the Python documentation.
+
+- Fix #13: Warning displays the correct filename and line number when
decorating a class if wrapt
+ does not have the compiled c extension.
+
+Documentation
+-------------
+
+- The :ref:`api` documentation and the :ref:`tutorial` is improved to explain
how to use
+ custom warning categories and local filtering (warning filtering at function
call).
+
+- Fix #17: Customize the sidebar to add links to the documentation to the
source in GitHub and to the Bug tracker.
+ Add a logo in the sidebar and change the logo in the main page to see the
library version.
+
+- Add a detailed documentation about :ref:`sphinx_deco`.
+
+
+Other
+-----
+
+- Change the Tox configuration to test the library with Wrapt 1.12.x.
+
+
v1.2.7 (2019-11-11)
===================
@@ -26,7 +78,7 @@
Fix
---
-- Warning displays the correct filename and line number when decorating a
function if wrapt
+- Fix #13: Warning displays the correct filename and line number when
decorating a function if wrapt
does not have the compiled c extension.
Other
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/Deprecated.egg-info/PKG-INFO
new/Deprecated-1.2.9/Deprecated.egg-info/PKG-INFO
--- old/Deprecated-1.2.7/Deprecated.egg-info/PKG-INFO 2019-11-11
16:04:57.000000000 +0100
+++ new/Deprecated-1.2.9/Deprecated.egg-info/PKG-INFO 2020-04-10
10:30:26.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: Deprecated
-Version: 1.2.7
+Version: 1.2.9
Summary: Python @deprecated decorator to deprecate old python classes,
functions or methods.
Home-page: https://github.com/tantale/deprecated
Author: Laurent LAPORTE
@@ -165,4 +165,5 @@
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
+Description-Content-Type: text/x-rst
Provides-Extra: dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/Deprecated.egg-info/SOURCES.txt
new/Deprecated-1.2.9/Deprecated.egg-info/SOURCES.txt
--- old/Deprecated-1.2.7/Deprecated.egg-info/SOURCES.txt 2019-11-11
16:04:57.000000000 +0100
+++ new/Deprecated-1.2.9/Deprecated.egg-info/SOURCES.txt 2020-04-10
10:30:26.000000000 +0200
@@ -1,5 +1,6 @@
.bumpversion.cfg
.editorconfig
+.packit.yml
.travis.yml
CHANGELOG.rst
CONTRIBUTING.rst
@@ -8,6 +9,8 @@
Makefile
README.md
appveyor.yml
+pyproject.toml
+python-deprecated.spec
setup.cfg
setup.py
tox.ini
@@ -34,10 +37,16 @@
docs/source/installation.rst
docs/source/introduction.rst
docs/source/license.rst
+docs/source/sphinx_deco.rst
docs/source/tutorial.rst
docs/source/white_paper.rst
+docs/source/_static/banner.png
docs/source/_static/logo-full.png
docs/source/_static/title-page.jpg
+docs/source/sphinx/calc_mean.py
+docs/source/sphinx/calc_mean_deco.py
+docs/source/sphinx/sphinx_demo.py
+docs/source/sphinx/use_calc_mean_deco.py
docs/source/tutorial/v0/liberty.py
docs/source/tutorial/v1/liberty.py
docs/source/tutorial/v1/using_liberty.py
@@ -47,7 +56,9 @@
docs/source/tutorial/v3/using_liberty.py
docs/source/tutorial/v4/liberty.py
docs/source/tutorial/v4/using_liberty.py
-docs/source/tutorial/v5/sphinx_demo.py
+docs/source/tutorial/warning_ctrl/filter_action_demo.py
+docs/source/tutorial/warning_ctrl/filter_warnings_demo.py
+docs/source/tutorial/warning_ctrl/warning_classes_demo.py
tests/__init__.py
tests/test.py
tests/test_deprecated.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/MANIFEST.in
new/Deprecated-1.2.9/MANIFEST.in
--- old/Deprecated-1.2.7/MANIFEST.in 2019-10-02 20:18:27.000000000 +0200
+++ new/Deprecated-1.2.9/MANIFEST.in 2020-04-05 22:41:59.000000000 +0200
@@ -8,6 +8,8 @@
include .editorconfig
include *.rst
+include *.spec
+include *.yaml
include *.yml
include Makefile
include tox.ini
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/PKG-INFO
new/Deprecated-1.2.9/PKG-INFO
--- old/Deprecated-1.2.7/PKG-INFO 2019-11-11 16:05:00.000000000 +0100
+++ new/Deprecated-1.2.9/PKG-INFO 2020-04-10 10:30:26.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: Deprecated
-Version: 1.2.7
+Version: 1.2.9
Summary: Python @deprecated decorator to deprecate old python classes,
functions or methods.
Home-page: https://github.com/tantale/deprecated
Author: Laurent LAPORTE
@@ -165,4 +165,5 @@
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
+Description-Content-Type: text/x-rst
Provides-Extra: dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/README.md
new/Deprecated-1.2.9/README.md
--- old/Deprecated-1.2.7/README.md 2019-10-02 20:18:27.000000000 +0200
+++ new/Deprecated-1.2.9/README.md 2020-04-05 22:17:11.000000000 +0200
@@ -59,7 +59,7 @@
## Authors
The authors of this library are:
-[Marcos CARDOSO](https://github.com/tantale), and
+[Marcos CARDOSO](https://github.com/vrcmarcos), and
[Laurent LAPORTE](https://github.com/tantale).
The original code was made in [this StackOverflow
post](https://stackoverflow.com/questions/2536307) by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/deprecated/__init__.py
new/Deprecated-1.2.9/deprecated/__init__.py
--- old/Deprecated-1.2.7/deprecated/__init__.py 2019-10-02 20:18:27.000000000
+0200
+++ new/Deprecated-1.2.9/deprecated/__init__.py 2020-04-05 22:45:36.000000000
+0200
@@ -8,6 +8,6 @@
"""
#: Module Version Number, see `PEP 396
<https://www.python.org/dev/peps/pep-0396/>`_.
-__version__ = "1.2.7"
+__version__ = "1.2.9"
from deprecated.classic import deprecated
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/deprecated/classic.py
new/Deprecated-1.2.9/deprecated/classic.py
--- old/Deprecated-1.2.7/deprecated/classic.py 2019-11-11 14:45:11.000000000
+0100
+++ new/Deprecated-1.2.9/deprecated/classic.py 2020-04-10 09:53:49.000000000
+0200
@@ -5,22 +5,29 @@
Classic ``@deprecated`` decorator to deprecate old python classes, functions
or methods.
+.. _The Warnings Filter:
https://docs.python.org/3/library/warnings.html#the-warnings-filter
"""
import functools
import inspect
import warnings
+import platform
import wrapt
try:
- # If the c extension for wrapt was compiled and wrapt/_wrappers.pyd
exists, then the
+ # If the C extension for wrapt was compiled and wrapt/_wrappers.pyd
exists, then the
# stack level that should be passed to warnings.warn should be 2. However,
if using
# a pure python wrapt, a extra stacklevel is required.
import wrapt._wrappers
- _stacklevel = 2
-except ImportError:
- _stacklevel = 3
+ _routine_stacklevel = 2
+ _class_stacklevel = 2
+except ImportError:
+ _routine_stacklevel = 3
+ if platform.python_implementation() == "PyPy":
+ _class_stacklevel = 2
+ else:
+ _class_stacklevel = 3
string_types = (type(b''), type(u''))
@@ -76,7 +83,7 @@
return x + y
"""
- def __init__(self, reason="", version="", action='always',
category=DeprecationWarning):
+ def __init__(self, reason="", version="", action=None,
category=DeprecationWarning):
"""
Construct a wrapper adapter.
@@ -94,7 +101,8 @@
:param action:
A warning filter used to activate or not the deprecation warning.
Can be one of "error", "ignore", "always", "default", "module", or
"once".
- By default the deprecation warning is always emitted (the value is
"always").
+ If ``None`` or empty, the the global filtering mechanism is used.
+ See: `The Warnings Filter`_ in the Python documentation.
:type category: type
:param category:
@@ -144,6 +152,9 @@
.. versionchanged:: 1.2.4
Don't pass arguments to :meth:`object.__new__` (other than *cls*).
+
+ .. versionchanged:: 1.2.8
+ The warning filter is not set if the *action* parameter is ``None``
or empty.
"""
if inspect.isclass(wrapped):
old_new1 = wrapped.__new__
@@ -151,14 +162,15 @@
def wrapped_cls(cls, *args, **kwargs):
msg = self.get_deprecated_msg(wrapped, None)
with warnings.catch_warnings():
- warnings.simplefilter(self.action, self.category)
- warnings.warn(msg, category=self.category, stacklevel=2)
+ if self.action:
+ warnings.simplefilter(self.action, self.category)
+ warnings.warn(msg, category=self.category,
stacklevel=_class_stacklevel)
if old_new1 is object.__new__:
return old_new1(cls)
# actually, we don't know the real signature of *old_new1*
- return old_new1(*args, **kwargs)
+ return old_new1(cls, *args, **kwargs)
- wrapped.__new__ = classmethod(wrapped_cls)
+ wrapped.__new__ = staticmethod(wrapped_cls)
return wrapped
@@ -199,8 +211,8 @@
class SomeOldClass(object):
pass
- You can give a "reason" message to help the developer to choose another
function/class,
- and a "version" number to specify the starting version number of the
deprecation.
+ You can give a *reason* message to help the developer to choose another
function/class,
+ and a *version* number to specify the starting version number of the
deprecation.
.. code-block:: python
@@ -211,6 +223,33 @@
def some_old_function(x, y):
return x + y
+ The *category* keyword argument allow you to specify the deprecation
warning class of your choice.
+ By default, :exc:`DeprecationWarning` is ued but you can choose
:exc:`FutureWarning`,
+ :exc:`PendingDeprecationWarning` or a custom subclass.
+
+ .. code-block:: python
+
+ from deprecated import deprecated
+
+
+ @deprecated(category=PendingDeprecationWarning)
+ def some_old_function(x, y):
+ return x + y
+
+ The *action* keyword argument allow you to locally change the warning
filtering.
+ *action* can be one of "error", "ignore", "always", "default", "module",
or "once".
+ If ``None``, empty or missing, the the global filtering mechanism is used.
+ See: `The Warnings Filter`_ in the Python documentation.
+
+ .. code-block:: python
+
+ from deprecated import deprecated
+
+
+ @deprecated(action="error")
+ def some_old_function(x, y):
+ return x + y
+
"""
if args and isinstance(args[0], string_types):
kwargs['reason'] = args[0]
@@ -220,7 +259,7 @@
raise TypeError(repr(type(args[0])))
if args:
- action = kwargs.get('action', 'always')
+ action = kwargs.get('action')
category = kwargs.get('category', DeprecationWarning)
adapter_cls = kwargs.pop('adapter_cls', ClassicAdapter)
adapter = adapter_cls(**kwargs)
@@ -236,8 +275,9 @@
def wrapper_function(wrapped_, instance_, args_, kwargs_):
msg = adapter.get_deprecated_msg(wrapped_, instance_)
with warnings.catch_warnings():
- warnings.simplefilter(action, category)
- warnings.warn(msg, category=category,
stacklevel=_stacklevel)
+ if action:
+ warnings.simplefilter(action, category)
+ warnings.warn(msg, category=category,
stacklevel=_routine_stacklevel)
return wrapped_(*args_, **kwargs_)
return wrapper_function(wrapped)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/deprecated/sphinx.py
new/Deprecated-1.2.9/deprecated/sphinx.py
--- old/Deprecated-1.2.7/deprecated/sphinx.py 2019-10-27 16:29:38.000000000
+0100
+++ new/Deprecated-1.2.9/deprecated/sphinx.py 2020-02-23 07:15:14.000000000
+0100
@@ -40,7 +40,7 @@
- The reason message is obviously added in the directive block if not
empty.
"""
- def __init__(self, directive, reason="", version="", action='always',
category=DeprecationWarning):
+ def __init__(self, directive, reason="", version="", action=None,
category=DeprecationWarning):
"""
Construct a wrapper adapter.
@@ -62,7 +62,8 @@
:param action:
A warning filter used to activate or not the deprecation warning.
Can be one of "error", "ignore", "always", "default", "module", or
"once".
- By default the deprecation warning is always emitted (the value is
"always").
+ If ``None`` or empty, the the global filtering mechanism is used.
+ See: `The Warnings Filter`_ in the Python documentation.
:type category: type
:param category:
@@ -170,7 +171,7 @@
- "action":
A warning filter used to activate or not the deprecation warning.
Can be one of "error", "ignore", "always", "default", "module", or
"once".
- By default the deprecation warning is always emitted (the value is
"always").
+ If ``None``, empty or missing, the the global filtering mechanism is
used.
- "category":
The warning category to use for the deprecation warning.
Binary files old/Deprecated-1.2.7/docs/source/_static/banner.png and
new/Deprecated-1.2.9/docs/source/_static/banner.png differ
Binary files old/Deprecated-1.2.7/docs/source/_static/logo-full.png and
new/Deprecated-1.2.9/docs/source/_static/logo-full.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/docs/source/conf.py
new/Deprecated-1.2.9/docs/source/conf.py
--- old/Deprecated-1.2.7/docs/source/conf.py 2019-10-27 16:48:22.000000000
+0100
+++ new/Deprecated-1.2.9/docs/source/conf.py 2020-04-05 22:45:36.000000000
+0200
@@ -61,7 +61,7 @@
# built documents.
#
# The full version, including alpha/beta/rc tags.
-release = "1.2.7"
+release = "1.2.9"
# The short X.Y version.
version = release.rpartition('.')[0]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/docs/source/index.rst
new/Deprecated-1.2.9/docs/source/index.rst
--- old/Deprecated-1.2.7/docs/source/index.rst 2019-10-02 20:18:27.000000000
+0200
+++ new/Deprecated-1.2.9/docs/source/index.rst 2020-04-05 22:24:53.000000000
+0200
@@ -1,7 +1,7 @@
Welcome to Deprecated
=====================
-.. image:: _static/logo-full.png
+.. image:: _static/banner.png
:alt: Deprecated: When once-stable features are removed in upcoming releases
Welcome to Deprecated’s Documentation.
@@ -23,6 +23,7 @@
installation
introduction
tutorial
+ sphinx_deco
white_paper
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/docs/source/sphinx/calc_mean.py
new/Deprecated-1.2.9/docs/source/sphinx/calc_mean.py
--- old/Deprecated-1.2.7/docs/source/sphinx/calc_mean.py 1970-01-01
01:00:00.000000000 +0100
+++ new/Deprecated-1.2.9/docs/source/sphinx/calc_mean.py 2020-04-05
22:17:11.000000000 +0200
@@ -0,0 +1,12 @@
+def mean(values):
+ """
+ Compute the arithmetic mean (“average”) of values.
+
+ :type values: list[float]
+ :param values: List of floats
+ :return: Mean of values.
+
+ .. deprecated:: 2.5.0
+ Since Python 3.4, you can use the standard function
:func:`statistics.mean`.
+ """
+ return sum(values) / len(values)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Deprecated-1.2.7/docs/source/sphinx/calc_mean_deco.py
new/Deprecated-1.2.9/docs/source/sphinx/calc_mean_deco.py
--- old/Deprecated-1.2.7/docs/source/sphinx/calc_mean_deco.py 1970-01-01
01:00:00.000000000 +0100
+++ new/Deprecated-1.2.9/docs/source/sphinx/calc_mean_deco.py 2020-04-05
22:17:11.000000000 +0200
@@ -0,0 +1,16 @@
+from deprecated.sphinx import deprecated
+
+
+@deprecated(
+ reason="""Since Python 3.4, you can use the standard function
:func:`statistics.mean`.""",
+ version="2.5.0",
+)
+def mean(values):
+ """
+ Compute the arithmetic mean (“average”) of values.
+
+ :type values: list[float]
+ :param values: List of floats
+ :return: Mean of values.
+ """
+ return sum(values) / len(values)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/docs/source/sphinx/sphinx_demo.py
new/Deprecated-1.2.9/docs/source/sphinx/sphinx_demo.py
--- old/Deprecated-1.2.7/docs/source/sphinx/sphinx_demo.py 1970-01-01
01:00:00.000000000 +0100
+++ new/Deprecated-1.2.9/docs/source/sphinx/sphinx_demo.py 2020-04-05
22:17:11.000000000 +0200
@@ -0,0 +1,33 @@
+# coding: utf-8
+from deprecated.sphinx import deprecated
+from deprecated.sphinx import versionadded
+from deprecated.sphinx import versionchanged
+
+
+@deprecated(
+ reason="""
+ This is deprecated, really. So you need to use another function.
+ But I don\'t know which one.
+
+ - The first,
+ - The second.
+
+ Just guess!
+ """,
+ version='0.3.0',
+)
+@versionchanged(
+ reason='Well, I add a new feature in this function. '
+ 'It is very useful as you can see in the example below, so try it. '
+ 'This is a very very very very very long sentence.',
+ version='0.2.0',
+)
+@versionadded(reason='Here is my new function.', version='0.1.0')
+def successor(n):
+ """
+ Calculate the successor of a number.
+
+ :param n: a number
+ :return: number + 1
+ """
+ return n + 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Deprecated-1.2.7/docs/source/sphinx/use_calc_mean_deco.py
new/Deprecated-1.2.9/docs/source/sphinx/use_calc_mean_deco.py
--- old/Deprecated-1.2.7/docs/source/sphinx/use_calc_mean_deco.py
1970-01-01 01:00:00.000000000 +0100
+++ new/Deprecated-1.2.9/docs/source/sphinx/use_calc_mean_deco.py
2020-04-05 22:17:11.000000000 +0200
@@ -0,0 +1,3 @@
+from calc_mean_deco import mean
+
+print(mean.__doc__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/docs/source/sphinx_deco.rst
new/Deprecated-1.2.9/docs/source/sphinx_deco.rst
--- old/Deprecated-1.2.7/docs/source/sphinx_deco.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/Deprecated-1.2.9/docs/source/sphinx_deco.rst 2020-04-05
22:31:25.000000000 +0200
@@ -0,0 +1,157 @@
+.. _Sphinx:
https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html
+.. _Sphinx directives:
https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html
+.. _reStructuredText:
https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html
+.. _Markdown: https://www.sphinx-doc.org/en/master/usage/markdown.html
+.. _docstring: https://docs.python.org/3/glossary.html#term-docstring
+.. _autodoc: https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html
+
+.. _sphinx_deco:
+
+The "Sphinx" decorators
+=======================
+
+Overview
+--------
+
+Developers use the Deprecated library to decorate deprecated functions or
classes. This is very practical,
+but you know that this library does more: you can also document your source
code! How?
+It's very simple: instead of using the "classic" decorator, you can use one of
the "Sphinx" decorators.
+
+The "Sphinx" decorators have the same function as the "classic" decorator but
also allow you to add
+`Sphinx directives`_ in your functions or classes documentation (inside the
docstring_).
+
+.. attention::
+
+ In Python 3.3 and previous versions, the docstring of a class is immutable
[#f1]_, this means that you cannot
+ use the "Sphinx" decorators. Naturally, this limitation does not exist in
Python 3.4 and above.
+
+What is a Sphinx directive?
+---------------------------
+
+Sphinx_ is a tool that makes it easy to create intelligent and beautiful
documentation.
+This tool uses the reStructuredText_ (or Markdown_) syntax to generate the
documentation in different formats,
+the most common being HTML. Developers generally use this syntax to document
the source code of their applications.
+
+Sphinx_ offers several directives allowing to introduce a text block with a
predefined role.
+Among all the directives, the ones that interest us are those related to the
functions (or classes)
+life cycle, namely: ``versionadded``, ``versionchanged`` and ``deprecated``.
+
+In the following example, the *mean()* function can be documented as follows:
+
+.. literalinclude:: sphinx/calc_mean.py
+
+Therefore, the "Sphinx" decorators allow you to add a Sphinx directive to your
functions
+or classes documentation. In the case of the ``deprecated`` directive, it
obviously allows you to emit a
+:exc:`DeprecationWarning` warning.
+
+Using the "Sphinx" decorators
+-----------------------------
+
+The previous example can be writen using a "Sphinx" decorator:
+
+.. literalinclude:: sphinx/calc_mean_deco.py
+
+You can see the generated documentation with this simple call:
+
+.. literalinclude:: sphinx/use_calc_mean_deco.py
+
+The documentation of the *mean()* function looks like this:
+
+.. code-block:: rst
+
+ Compute the arithmetic mean (“average”) of values.
+
+ :type values: list[float]
+ :param values: List of floats
+ :return: Mean of values.
+
+ .. deprecated:: 2.5.0
+ Since Python 3.4, you can use the standard function
+ :func:`statistics.mean`.
+
+More elaborate example
+----------------------
+
+The Deprecated library offers you 3 decorators:
+
+- :func:`~deprecated.sphinx.deprecated`: insert a ``deprecated`` directive in
docstring, and emit a warning on each call.
+- :func:`~deprecated.sphinx.versionadded`: insert a ``versionadded`` directive
in docstring, don't emit warning.
+- :func:`~deprecated.sphinx.versionchanged`: insert a ``versionchanged``
directive in docstring, don't emit warning.
+
+The decorators can be combined to reflect the life cycle of a function:
+
+- When it is added in your API, with the ``@versionadded`` decorator,
+- When it has an important change, with the ``@versionchanged`` decorator,
+- When it is deprecated, with the ``@deprecated`` decorator.
+
+The example bellow illustrate this life cycle:
+
+.. literalinclude:: sphinx/sphinx_demo.py
+
+To see the result, you can use the builtin function :func:`help` to display a
formatted help message
+of the *successor()* function. It is something like this:
+
+.. code-block:: text
+
+ Help on function successor in module __main__:
+
+ successor(n)
+ Calculate the successor of a number.
+
+ :param n: a number
+ :return: number + 1
+
+
+ .. versionadded:: 0.1.0
+ Here is my new function.
+
+
+ .. versionchanged:: 0.2.0
+ Well, I add a new feature in this function. It is very useful as
+ you can see in the example below, so try it. This is a very very
+ very very very long sentence.
+
+
+ .. deprecated:: 0.3.0
+ This is deprecated, really. So you need to use another function.
+ But I don't know which one.
+
+ - The first,
+ - The second.
+
+ Just guess!
+
+.. note:: Decorators must be writen in reverse order: recent first, older last.
+
+Building the documentation
+--------------------------
+
+The easiest way to build your API documentation is to use the autodoc_ plugin.
+The directives like ``automodule``, ``autoclass``, ``autofunction`` scan your
source code
+and generate the documentation from your docstrings.
+
+Usually, the first thing that we need to do is indicate where the Python
package that contains your
+source code is in relation to the ``conf.py`` file.
+
+But here, that will not work! The reason is that your modules must be imported
during build:
+the Deprecated decorators must be interpreted.
+
+So, to build the API documentation of your project with Sphinx_ you need to
setup a virtualenv,
+and install Sphinx, external themes and/or plugins and also your project.
+Nowadays, this is the right way to do it.
+
+For instance, you can configure a documentation building task in your
``tox.ini`` file, for instance:
+
+.. code-block:: ini
+
+ [testenv:docs]
+ basepython = python
+ deps =
+ sphinx
+ commands =
+ sphinx-build -b html -d {envtmpdir}/doctrees docs/source/
{envtmpdir}/html
+
+
+.. rubric:: Footnotes
+
+.. [#f1] See Issue 12773: `classes should have mutable docstrings
<https://bugs.python.org/issue12773>`_.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Deprecated-1.2.7/docs/source/tutorial/v5/sphinx_demo.py
new/Deprecated-1.2.9/docs/source/tutorial/v5/sphinx_demo.py
--- old/Deprecated-1.2.7/docs/source/tutorial/v5/sphinx_demo.py 2019-10-27
16:32:40.000000000 +0100
+++ new/Deprecated-1.2.9/docs/source/tutorial/v5/sphinx_demo.py 1970-01-01
01:00:00.000000000 +0100
@@ -1,36 +0,0 @@
-# coding: utf-8
-from deprecated.sphinx import deprecated
-from deprecated.sphinx import versionadded
-from deprecated.sphinx import versionchanged
-
-
-@deprecated(
- reason="""
- This is deprecated, really. So you need to use another function.
- But I don\'t know which one.
-
- - The first,
- - The second.
-
- Just guess!
- """,
- version='0.3.0',
-)
-@versionchanged(
- reason='Well, I add a new feature in this function. '
- 'It is very useful as you can see in the example below, so try it. '
- 'This is a very very very very very long sentence.',
- version='0.2.0',
-)
-@versionadded(reason='Here is my new function.', version='0.1.0')
-def successor(n):
- """
- Calculate the successor of a number.
-
- :param n: a number
- :return: number + 1
- """
- return n + 1
-
-
-help(successor)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Deprecated-1.2.7/docs/source/tutorial/warning_ctrl/filter_action_demo.py
new/Deprecated-1.2.9/docs/source/tutorial/warning_ctrl/filter_action_demo.py
---
old/Deprecated-1.2.7/docs/source/tutorial/warning_ctrl/filter_action_demo.py
1970-01-01 01:00:00.000000000 +0100
+++
new/Deprecated-1.2.9/docs/source/tutorial/warning_ctrl/filter_action_demo.py
2020-02-22 18:04:29.000000000 +0100
@@ -0,0 +1,12 @@
+import warnings
+from deprecated import deprecated
+
+
+@deprecated(reason="do not call it", action="error")
+def foo():
+ print("foo")
+
+
+if __name__ == '__main__':
+ warnings.simplefilter("ignore")
+ foo()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Deprecated-1.2.7/docs/source/tutorial/warning_ctrl/filter_warnings_demo.py
new/Deprecated-1.2.9/docs/source/tutorial/warning_ctrl/filter_warnings_demo.py
---
old/Deprecated-1.2.7/docs/source/tutorial/warning_ctrl/filter_warnings_demo.py
1970-01-01 01:00:00.000000000 +0100
+++
new/Deprecated-1.2.9/docs/source/tutorial/warning_ctrl/filter_warnings_demo.py
2020-02-22 18:04:29.000000000 +0100
@@ -0,0 +1,12 @@
+import warnings
+from deprecated import deprecated
+
+
+@deprecated(version='1.2.1', reason="deprecated function")
+def fun():
+ print("fun")
+
+
+if __name__ == '__main__':
+ warnings.simplefilter("ignore", category=DeprecationWarning)
+ fun()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Deprecated-1.2.7/docs/source/tutorial/warning_ctrl/warning_classes_demo.py
new/Deprecated-1.2.9/docs/source/tutorial/warning_ctrl/warning_classes_demo.py
---
old/Deprecated-1.2.7/docs/source/tutorial/warning_ctrl/warning_classes_demo.py
1970-01-01 01:00:00.000000000 +0100
+++
new/Deprecated-1.2.9/docs/source/tutorial/warning_ctrl/warning_classes_demo.py
2020-02-22 18:04:29.000000000 +0100
@@ -0,0 +1,31 @@
+import warnings
+
+from deprecated import deprecated
+
+
+class MyDeprecationWarning(DeprecationWarning):
+ """ My DeprecationWarning """
+
+
+class DeprecatedIn26(MyDeprecationWarning):
+ """ deprecated in 2.6 """
+
+
+class DeprecatedIn30(MyDeprecationWarning):
+ """ deprecated in 3.0 """
+
+
+@deprecated(category=DeprecatedIn26, reason="deprecated function")
+def foo():
+ print("foo")
+
+
+@deprecated(category=DeprecatedIn30, reason="deprecated function")
+def bar():
+ print("bar")
+
+
+if __name__ == '__main__':
+ warnings.filterwarnings("ignore", category=DeprecatedIn30)
+ foo()
+ bar()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/docs/source/tutorial.rst
new/Deprecated-1.2.9/docs/source/tutorial.rst
--- old/Deprecated-1.2.7/docs/source/tutorial.rst 2019-10-02
20:18:27.000000000 +0200
+++ new/Deprecated-1.2.9/docs/source/tutorial.rst 2020-04-05
22:17:11.000000000 +0200
@@ -29,10 +29,10 @@
$ python use_liberty.py
- using_liberty.py:4: DeprecationWarning: Call to deprecated function
print_value.
+ using_liberty.py:4: DeprecationWarning: Call to deprecated function (or
staticmethod) print_value.
liberty.print_value("hello")
'hello'
- using_liberty.py:5: DeprecationWarning: Call to deprecated function
print_value.
+ using_liberty.py:5: DeprecationWarning: Call to deprecated function (or
staticmethod) print_value.
liberty.print_value("hello again")
'hello again'
'Hi Tom!'
@@ -52,10 +52,10 @@
$ python use_liberty.py
- using_liberty.py:4: DeprecationWarning: Call to deprecated function
print_value (This function is rotten, use 'better_print' instead).
+ using_liberty.py:4: DeprecationWarning: Call to deprecated function (or
staticmethod) print_value. (This function is rotten, use 'better_print' instead)
liberty.print_value("hello")
'hello'
- using_liberty.py:5: DeprecationWarning: Call to deprecated function
print_value (This function is rotten, use 'better_print' instead).
+ using_liberty.py:5: DeprecationWarning: Call to deprecated function (or
staticmethod) print_value. (This function is rotten, use 'better_print' instead)
liberty.print_value("hello again")
'hello again'
'Hi Tom!'
@@ -78,10 +78,10 @@
$ python use_liberty.py
- using_liberty.py:5: DeprecationWarning: Call to deprecated function
print_value (This method is rotten, use 'better_print' instead).
+ using_liberty.py:5: DeprecationWarning: Call to deprecated method
print_value. (This method is rotten, use 'better_print' instead)
obj.print_value()
'Greeting'
- using_liberty.py:6: DeprecationWarning: Call to deprecated function
print_value (This method is rotten, use 'better_print' instead).
+ using_liberty.py:6: DeprecationWarning: Call to deprecated method
print_value. (This method is rotten, use 'better_print' instead)
obj.print_value()
'Greeting'
'Greeting'
@@ -109,7 +109,7 @@
$ python use_liberty.py
- using_liberty.py:4: DeprecationWarning: Call to deprecated class Liberty
(This class is not perfect).
+ using_liberty.py:4: DeprecationWarning: Call to deprecated class Liberty.
(This class is not perfect)
obj = liberty.Liberty("Salutation")
'Salutation'
'Salutation'
@@ -121,3 +121,124 @@
Using this method you can customize the instance creation.
the :func:`~deprecated.deprecated` decorator patches the ``__new__`` method in
order to
emmit the warning message before instance creation.
+
+
+Controlling warnings
+--------------------
+
+.. _Python warning control: https://docs.python.org/3/library/warnings.html
+.. _-W: https://docs.python.org/3/using/cmdline.html#cmdoption-w
+.. _PYTHONWARNINGS:
https://docs.python.org/3/using/cmdline.html#envvar-PYTHONWARNINGS
+
+Warnings are emitted using the `Python warning control`_. By default, Python
installs several warning filters,
+which can be overridden by the `-W`_ command-line option, the
`PYTHONWARNINGS`_ environment variable and
+calls to :func:`warnings.filterwarnings`. The warnings filter controls whether
warnings are ignored, displayed,
+or turned into errors (raising an exception).
+
+For instance:
+
+.. literalinclude:: tutorial/warning_ctrl/filter_warnings_demo.py
+
+When the user runs this script, the deprecation warnings are ignored in the
main program,
+so no warning message are emitted:
+
+.. code-block:: sh
+
+ $ python filter_warnings_demo.py
+
+ fun
+
+
+Deprecation warning classes
+---------------------------
+
+The :func:`deprecated.classic.deprecated` and
:func:`deprecated.sphinx.deprecated` functions
+are using the :exc:`DeprecationWarning` category but you can customize them by
using your own category
+(or hierarchy of categories).
+
+* *category* classes which you can use (among other) are:
+
+
+----------------------------------+-----------------------------------------------+
+ | Class | Description
|
+
+==================================+===============================================+
+ | :exc:`DeprecationWarning` | Base category for warnings about
deprecated |
+ | | features when those warnings are
intended for |
+ | | other Python developers (ignored by
default, |
+ | | unless triggered by code in
``__main__``). |
+
+----------------------------------+-----------------------------------------------+
+ | :exc:`FutureWarning` | Base category for warnings about
deprecated |
+ | | features when those warnings are
intended for |
+ | | end users of applications that are
written in |
+ | | Python.
|
+
+----------------------------------+-----------------------------------------------+
+ | :exc:`PendingDeprecationWarning` | Base category for warnings about
features |
+ | | that will be deprecated in the future
|
+ | | (ignored by default).
|
+
+----------------------------------+-----------------------------------------------+
+
+You can define your own deprecation warning hierarchy based on the standard
deprecation classes.
+
+For instance:
+
+.. literalinclude:: tutorial/warning_ctrl/warning_classes_demo.py
+
+When the user runs this script, the deprecation warnings for the 3.0 version
are ignored:
+
+.. code-block:: sh
+
+ $ python warning_classes_demo.py
+
+ foo
+ bar
+ warning_classes_demo.py:30: DeprecatedIn26: Call to deprecated function
(or staticmethod) foo. (deprecated function)
+ foo()
+
+
+Filtering warnings locally
+--------------------------
+
+The :func:`deprecated.classic.deprecated` and
:func:`deprecated.sphinx.deprecated` functions
+can change the warning filtering locally (at function calls).
+
+* *action* is one of the following strings:
+
+ +---------------+----------------------------------------------+
+ | Value | Disposition |
+ +===============+==============================================+
+ | ``"default"`` | print the first occurrence of matching |
+ | | warnings for each location (module + |
+ | | line number) where the warning is issued |
+ +---------------+----------------------------------------------+
+ | ``"error"`` | turn matching warnings into exceptions |
+ +---------------+----------------------------------------------+
+ | ``"ignore"`` | never print matching warnings |
+ +---------------+----------------------------------------------+
+ | ``"always"`` | always print matching warnings |
+ +---------------+----------------------------------------------+
+ | ``"module"`` | print the first occurrence of matching |
+ | | warnings for each module where the warning |
+ | | is issued (regardless of line number) |
+ +---------------+----------------------------------------------+
+ | ``"once"`` | print only the first occurrence of matching |
+ | | warnings, regardless of location |
+ +---------------+----------------------------------------------+
+
+You can define the *action* keyword parameter to override the filtering
warnings locally.
+
+For instance:
+
+.. literalinclude:: tutorial/warning_ctrl/filter_action_demo.py
+
+In this example, even if the global filter is set to "ignore", a call to the
``foo()``
+function will raise an exception because the *action* is set to "error".
+
+.. code-block:: sh
+
+ $ python filter_action_demo.py
+
+ Traceback (most recent call last):
+ File "filter_action_demo.py", line 12, in <module>
+ foo()
+ File "path/to/deprecated/classic.py", line 274, in wrapper_function
+ warnings.warn(msg, category=category, stacklevel=_stacklevel)
+ DeprecationWarning: Call to deprecated function (or staticmethod) foo. (do
not call it)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/pyproject.toml
new/Deprecated-1.2.9/pyproject.toml
--- old/Deprecated-1.2.7/pyproject.toml 1970-01-01 01:00:00.000000000 +0100
+++ new/Deprecated-1.2.9/pyproject.toml 2020-02-23 18:51:31.000000000 +0100
@@ -0,0 +1,5 @@
+[tool.black]
+line-length = 120
+skip-string-normalization = true
+target-version = ['py27', 'py34', 'py35', 'py36', 'py37', 'py38']
+include = '\.pyi?$'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/python-deprecated.spec
new/Deprecated-1.2.9/python-deprecated.spec
--- old/Deprecated-1.2.7/python-deprecated.spec 1970-01-01 01:00:00.000000000
+0100
+++ new/Deprecated-1.2.9/python-deprecated.spec 2020-04-05 22:57:56.000000000
+0200
@@ -0,0 +1,49 @@
+%global srcname Deprecated
+%global pkgname deprecated
+
+Name: python-%{pkgname}
+Version: 1.2.9
+Release: 2%{?dist}
+Summary: Python decorator to deprecate old python classes, functions or
methods
+License: MIT
+URL: https://github.com/tantale/%{pkgname}
+Source0:
https://files.pythonhosted.org/packages/source/D/%{srcname}/%{srcname}-%{version}.tar.gz
+BuildArch: noarch
+
+%description
+Python @deprecated decorator to deprecate old python classes,
+functions or methods.
+
+%package -n python3-%{pkgname}
+Summary: %{summary}
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+%{?python_provide:%python_provide python3-%{pkgname}}
+
+%description -n python3-%{pkgname}
+Python @deprecated decorator to deprecate old python classes,
+functions or methods.
+
+%prep
+%autosetup -n %{srcname}-%{version}
+rm -rf %{pkgname}.egg-info
+
+%build
+%py3_build
+
+%install
+%py3_install
+
+%files -n python3-%{pkgname}
+%license LICENSE.rst
+%doc README.md
+%{python3_sitelib}/%{pkgname}/
+%{python3_sitelib}/%{srcname}-%{version}-*.egg-info/
+
+
+%changelog
+* Fri Jul 26 2019 Petr Hracek <[email protected]> - 1.2.6-2
+- Fix python3_sitelib issue
+
+* Fri Jul 26 2019 Petr Hracek <[email protected]> - 1.2.6-1
+- Initial package
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/setup.py
new/Deprecated-1.2.9/setup.py
--- old/Deprecated-1.2.7/setup.py 2019-10-27 16:32:40.000000000 +0100
+++ new/Deprecated-1.2.9/setup.py 2020-04-10 10:30:23.000000000 +0200
@@ -143,7 +143,7 @@
setup(
name='Deprecated',
- version='1.2.7',
+ version='1.2.9',
url='https://github.com/tantale/deprecated',
project_urls={
"Documentation": "https://deprecated.readthedocs.io/en/latest/",
@@ -155,6 +155,7 @@
author_email='[email protected]',
description='Python @deprecated decorator to deprecate old python classes,
functions or methods.',
long_description=__doc__,
+ long_description_content_type="text/x-rst",
keywords='deprecate,deprecated,deprecation,warning,warn,decorator',
packages=['deprecated'],
install_requires=['wrapt < 2, >= 1.10'],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/tests/test_deprecated.py
new/Deprecated-1.2.9/tests/test_deprecated.py
--- old/Deprecated-1.2.7/tests/test_deprecated.py 2019-11-11
14:45:11.000000000 +0100
+++ new/Deprecated-1.2.9/tests/test_deprecated.py 2020-02-22
18:04:29.000000000 +0100
@@ -241,3 +241,15 @@
foo()
warn = warns[0]
assert issubclass(warn.category, MyDeprecationWarning)
+
+
+def test_respect_global_filter():
+ @deprecated.classic.deprecated(version='1.2.1', reason="deprecated
function")
+ def fun():
+ print("fun")
+
+ warnings.simplefilter("ignore", category=DeprecationWarning)
+
+ with warnings.catch_warnings(record=True) as warns:
+ fun()
+ assert len(warns) == 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Deprecated-1.2.7/tox.ini new/Deprecated-1.2.9/tox.ini
--- old/Deprecated-1.2.7/tox.ini 2019-11-11 14:45:11.000000000 +0100
+++ new/Deprecated-1.2.9/tox.ini 2020-04-10 09:53:24.000000000 +0200
@@ -8,9 +8,12 @@
[tox]
# py32 not supported by tox and pytest
+# PyPy configuration (on Linux/OSX):
+# - /usr/local/bin/pypy -> /opt/pypy2.7-v7.3.0-osx64/bin/pypy
+# - /usr/local/bin/pypy3 -> /opt/pypy3.6-v7.3.0-osx64/bin/pypy3
envlist =
- py{27,34,35,36,37,38}-wrapt{1.10,1.11}
- pypy
+ py{27,34,35,36,37,38}-wrapt{1.10,1.11,1.12}
+ pypy, pypy3
docs
[testenv]
@@ -18,11 +21,12 @@
deps =
py27,py34,py35: pip >= 9.0.3, < 19.2
py27,py34: PyTest < 5
- py35,py36,py37,py38,pypy: PyTest
+ py35,py36,py37,py38,pypy,pypy3: PyTest
py27,py34: PyTest-Cov < 2.6
- py35,py36,py37,py38,pypy: PyTest-Cov
+ py35,py36,py37,py38,pypy,pypy3: PyTest-Cov
wrapt1.10: wrapt ~= 1.10.0
wrapt1.11: wrapt ~= 1.11.0
+ wrapt1.12: wrapt ~= 1.12.0
[testenv:docs]
basepython = python