New Upstream Release - python-repoze.tm2

Ready changes

Summary

Merged new upstream version: 2.2.0 (was: 2.0).

Resulting package

Built on 2023-03-31T05:23 (took 4m48s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-releases python-repoze.tm2-docapt install -t fresh-releases python3-repoze.tm2

Lintian Result

Diff

diff --git a/.gitignore b/.gitignore
index c7ae50f..ab2e3f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,4 @@ docs/.build/
 nosetests.xml
 coverage.xml
 docs/_build
+build/
diff --git a/CHANGES.rst b/CHANGES.rst
index 195a70d..3afd857 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -1,6 +1,24 @@
 Changelog
 =========
 
+2.2.0 (2023-01-16)
+------------------
+
+- Add support for Python 3.7, 3.8, 3.9, 3.10, and 3.11.
+
+- Drop suppport for Python 2.7, 3.4, 3.5 and 3.6.
+
+- Add Github Actions workflow running unit tests / coverage for PRs.
+
+2.1 (2016-06-03)
+----------------
+
+- Add support for Python 3.4, 3.5 and PyPy3.
+
+- Drop support for Python 2.6 and 3.2.
+
+- Add support for testing under Travis.
+
 2.0 (2013-06-26)
 ----------------
 
diff --git a/PKG-INFO b/PKG-INFO
index 5efcf11..37fecfa 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: repoze.tm2
-Version: 2.0
+Version: 2.2.0
 Summary: Per-request transactions via WSGI middleware
 Home-page: http://www.repoze.org
 Author: Agendaless Consulting
@@ -9,17 +9,84 @@ License: BSD-derived (http://www.repoze.org/LICENSE.txt)
 Description: repoze.tm2 (Transaction Manager)
         ================================
         
+        .. image:: https://travis-ci.org/repoze/repoze.tm2.png?branch=master
+                :target: https://travis-ci.org/repoze/repoze.tm2
+        
+        .. image:: https://readthedocs.org/projects/repozetm2/badge/?version=latest
+                :target: http://repozetm2.readthedocs.org/en/latest/ 
+                :alt: Documentation Status
+        
+        .. image:: https://img.shields.io/pypi/v/repoze.tm2.svg
+                :target: https://pypi.python.org/pypi/repoze.tm2
+        
+        .. image:: https://img.shields.io/pypi/pyversions/repoze.tm2.svg
+                :target: https://pypi.python.org/pypi/repoze.tm2
+        
         Middleware which uses the ZODB transaction manager to wrap a call to
         its pipeline children inside a transaction.  This is a fork of the
         ``repoze.tm`` package which depends only on the ``transaction``
         package rather than the entirety of ZODB (for users who don't rely on ZODB).
         
-        See docs/index.rst for documentation.
+        Installation
+        ------------
+        
+        Install using setuptools, e.g. (within a virtualenv)::
+        
+         $ easy_install repoze.tm2
+        
+        or using pip::
+        
+         $ pip install repoze.tm2
+        
+        
+        Usage
+        -----
+        
+        For details on using the various components, please see the
+        documentation in ``docs/index.rst``.  A rendered version of that documentation
+        is also available online:
+        
+         - http://repozetm2.readthedocs.org/en/latest/
+        
+        
+        Reporting Bugs 
+        --------------
+        
+        Please report bugs in this package to
+        
+          https://github.com/repoze/repoze.tm2/issues
+        
+        
+        Obtaining Source Code
+        ---------------------
+        
+        Download development or tagged versions of the software by visiting:
+        
+          https://github.com/repoze/repoze.tm2
+        
         
         
         Changelog
         =========
         
+        2.2.0 (2023-01-16)
+        ------------------
+        
+        - Add support for Python 3.7, 3.8, 3.9, 3.10, and 3.11.
+        
+        - Drop suppport for Python 2.7, 3.4, 3.5 and 3.6.
+        
+        - Add Github Actions workflow running unit tests / coverage for PRs.
+        
+        2.1 (2016-06-03)
+        ----------------
+        
+        - Add support for Python 3.4, 3.5 and PyPy3.
+        
+        - Drop support for Python 2.6 and 3.2.
+        
+        - Add support for testing under Travis.
+        
         2.0 (2013-06-26)
         ----------------
         
@@ -180,16 +247,18 @@ Description: repoze.tm2 (Transaction Manager)
         
 Keywords: web application server wsgi zope repoze
 Platform: UNKNOWN
-Classifier: Development Status :: 3 - Alpha
+Classifier: Development Status :: 5 - Production/Stable
 Classifier: Intended Audience :: Developers
 Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Internet :: WWW/HTTP
 Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
 Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware
+Provides-Extra: docs
diff --git a/README.rst b/README.rst
index fb6d6e0..adc7844 100644
--- a/README.rst
+++ b/README.rst
@@ -1,9 +1,58 @@
 repoze.tm2 (Transaction Manager)
 ================================
 
+.. image:: https://travis-ci.org/repoze/repoze.tm2.png?branch=master
+        :target: https://travis-ci.org/repoze/repoze.tm2
+
+.. image:: https://readthedocs.org/projects/repozetm2/badge/?version=latest
+        :target: http://repozetm2.readthedocs.org/en/latest/ 
+        :alt: Documentation Status
+
+.. image:: https://img.shields.io/pypi/v/repoze.tm2.svg
+        :target: https://pypi.python.org/pypi/repoze.tm2
+
+.. image:: https://img.shields.io/pypi/pyversions/repoze.tm2.svg
+        :target: https://pypi.python.org/pypi/repoze.tm2
+
 Middleware which uses the ZODB transaction manager to wrap a call to
 its pipeline children inside a transaction.  This is a fork of the
 ``repoze.tm`` package which depends only on the ``transaction``
 package rather than the entirety of ZODB (for users who don't rely on ZODB).
 
-See docs/index.rst for documentation.
+Installation
+------------
+
+Install using setuptools, e.g. (within a virtualenv)::
+
+ $ easy_install repoze.tm2
+
+or using pip::
+
+ $ pip install repoze.tm2
+
+
+Usage
+-----
+
+For details on using the various components, please see the
+documentation in ``docs/index.rst``.  A rendered version of that documentation
+is also available online:
+
+ - http://repozetm2.readthedocs.org/en/latest/
+
+
+Reporting Bugs 
+--------------
+
+Please report bugs in this package to
+
+  https://github.com/repoze/repoze.tm2/issues
+
+
+Obtaining Source Code
+---------------------
+
+Download development or tagged versions of the software by visiting:
+
+  https://github.com/repoze/repoze.tm2
+
diff --git a/debian/changelog b/debian/changelog
index 75d2253..dc05a78 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+python-repoze.tm2 (2.2.0-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Fri, 31 Mar 2023 05:19:14 -0000
+
 python-repoze.tm2 (2.0-3) unstable; urgency=low
 
   [ Debian Janitor ]
diff --git a/debian/patches/build-apidoc.patch b/debian/patches/build-apidoc.patch
index a90ddc4..9c61d97 100644
--- a/debian/patches/build-apidoc.patch
+++ b/debian/patches/build-apidoc.patch
@@ -9,10 +9,10 @@ Patch-Name: build-apidoc.patch
  docs/conf.py | 2 ++
  1 file changed, 2 insertions(+)
 
-diff --git a/docs/conf.py b/docs/conf.py
-index 64c0aa9..9ef19e6 100644
---- a/docs/conf.py
-+++ b/docs/conf.py
+Index: python-repoze.tm2.git/docs/conf.py
+===================================================================
+--- python-repoze.tm2.git.orig/docs/conf.py
++++ python-repoze.tm2.git/docs/conf.py
 @@ -29,6 +29,8 @@ os.chdir(wd)
  for item in os.listdir(parent):
      if item.endswith('.egg'):
diff --git a/docs/.static/logo_hi.gif b/docs/.static/logo_hi.gif
deleted file mode 100644
index cb2a6aa..0000000
Binary files a/docs/.static/logo_hi.gif and /dev/null differ
diff --git a/docs/Makefile b/docs/Makefile
index e996997..e9c11d0 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -9,7 +9,7 @@ PAPER         =
 # Internal variables.
 PAPEROPT_a4     = -D latex_paper_size=a4
 PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS   = -d .build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+ALLSPHINXOPTS   = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
 
 .PHONY: help clean html web pickle htmlhelp latex changes linkcheck
 
@@ -23,48 +23,48 @@ help:
 	@echo "  linkcheck to check all external links for integrity"
 
 clean:
-	-rm -rf .build/*
+	-rm -rf _build/*
 
 html:
-	mkdir -p .build/html .build/doctrees
-	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) .build/html
+	mkdir -p _build/html _build/doctrees
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html
 	@echo
-	@echo "Build finished. The HTML pages are in .build/html."
+	@echo "Build finished. The HTML pages are in _build/html."
 
 pickle:
-	mkdir -p .build/pickle .build/doctrees
-	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) .build/pickle
+	mkdir -p _build/pickle _build/doctrees
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle
 	@echo
 	@echo "Build finished; now you can process the pickle files or run"
-	@echo "  sphinx-web .build/pickle"
+	@echo "  sphinx-web _build/pickle"
 	@echo "to start the sphinx-web server."
 
 web: pickle
 
 htmlhelp:
-	mkdir -p .build/htmlhelp .build/doctrees
-	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) .build/htmlhelp
+	mkdir -p _build/htmlhelp _build/doctrees
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp
 	@echo
 	@echo "Build finished; now you can run HTML Help Workshop with the" \
-	      ".hhp project file in .build/htmlhelp."
+	      ".hhp project file in _build/htmlhelp."
 
 latex:
-	mkdir -p .build/latex .build/doctrees
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) .build/latex
+	mkdir -p _build/latex _build/doctrees
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex
 	@echo
-	@echo "Build finished; the LaTeX files are in .build/latex."
+	@echo "Build finished; the LaTeX files are in _build/latex."
 	@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
 	      "run these through (pdf)latex."
 
 changes:
-	mkdir -p .build/changes .build/doctrees
-	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) .build/changes
+	mkdir -p _build/changes _build/doctrees
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes
 	@echo
-	@echo "The overview file is in .build/changes."
+	@echo "The overview file is in _build/changes."
 
 linkcheck:
-	mkdir -p .build/linkcheck .build/doctrees
-	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) .build/linkcheck
+	mkdir -p _build/linkcheck _build/doctrees
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck
 	@echo
 	@echo "Link check complete; look for any errors in the above output " \
-	      "or in .build/linkcheck/output.txt."
+	      "or in _build/linkcheck/output.txt."
diff --git a/docs/_static/logo_hi.png b/docs/_static/logo_hi.png
new file mode 100644
index 0000000..1db5180
Binary files /dev/null and b/docs/_static/logo_hi.png differ
diff --git a/docs/.static/repoze.css b/docs/_static/repoze.css
similarity index 100%
rename from docs/.static/repoze.css
rename to docs/_static/repoze.css
diff --git a/docs/api.rst b/docs/api.rst
index a32e9d6..44b9659 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -1,5 +1,5 @@
-:mod:`repoze.tm`
-----------------
+:mod:`repoze.tm2` API
+---------------------
 
 .. automodule:: repoze.tm
 
diff --git a/docs/changes.rst b/docs/changes.rst
index da1a2e7..3729ebc 100644
--- a/docs/changes.rst
+++ b/docs/changes.rst
@@ -1,4 +1,4 @@
-:mod:`repoze.tm` Change History
-===============================
+:mod:`repoze.tm2` Change History
+================================
 
 .. include:: ../CHANGES.rst
diff --git a/docs/conf.py b/docs/conf.py
index 64c0aa9..de65130 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -38,7 +38,7 @@ for item in os.listdir(parent):
 extensions = ['sphinx.ext.autodoc']
 
 # Add any paths that contain templates here, relative to this directory.
-templates_path = ['.templates']
+templates_path = ['_templates']
 
 # The suffix of source filenames.
 source_suffix = '.rst'
@@ -56,7 +56,7 @@ copyright = '2008-2013, Repoze Developers <repoze-dev@lists.repoze.org>'
 # The short X.Y version.
 version = '2.0'
 # The full version, including alpha/beta/rc tags.
-release = '2.0b1'
+release = '2.0'
 
 # There are two options for replacing |today|: either, you set today to
 # some non-false value, then it is used:
@@ -108,7 +108,7 @@ html_style = 'repoze.css'
 
 # The name of an image file (within the static path) to place at the top of
 # the sidebar.
-html_logo = '.static/logo_hi.gif'
+html_logo = '_static/logo_hi.png'
 
 # The name of an image file (within the static path) to use as favicon of
 # the docs.  This file should be a Windows icon file (.ico) being 16x16 or
@@ -119,7 +119,7 @@ html_logo = '.static/logo_hi.gif'
 # here, relative to this directory. They are copied after the builtin
 # static files, so a file named "default.css" will overwrite the builtin
 # "default.css".
-html_static_path = ['.static']
+html_static_path = ['_static']
 
 # If not '', a 'Last updated on:' timestamp is inserted at every page
 # bottom, using the given strftime format.
@@ -180,7 +180,7 @@ latex_documents = [
 
 # The name of an image file (relative to this directory) to place at the
 # top of the title page.
-latex_logo = '.static/logo_hi.gif'
+latex_logo = '_static/logo_hi.png'
 
 # For "manual" documents, if this is true, then toplevel headings are
 # parts, not chapters.
diff --git a/docs/index.rst b/docs/index.rst
index c2edb71..8d95150 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -408,9 +408,7 @@ look in these places to see how to implement a more real-world
 transaction-aware database connector that uses this module in non-Zope
 applications:
 
-- http://svn.zope.org/ZODB/branches/3.7/src/transaction/
-
-- http://svn.zope.org/ZODB/branches/3.8/src/transaction/
+- http://www.zodb.org/en/latest/documentation/guide/transactions.html
 
 - http://mysql-python.sourceforge.net/ (ZMySQLDA)
 
@@ -423,6 +421,10 @@ The `repoze-dev maillist
 <http://lists.repoze.org/mailman/listinfo/repoze-dev>`_ should be used
 for communications about this software.
 
+Report bugs on Github:  https://github.com/repoze/repoze.tm2/issues
+
+Fork it on Github:  https://github.com/repoze/repoze.tm2/
+
 API Docs
 ------------------------
 
diff --git a/repoze.tm2.egg-info/PKG-INFO b/repoze.tm2.egg-info/PKG-INFO
index 5efcf11..37fecfa 100644
--- a/repoze.tm2.egg-info/PKG-INFO
+++ b/repoze.tm2.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: repoze.tm2
-Version: 2.0
+Version: 2.2.0
 Summary: Per-request transactions via WSGI middleware
 Home-page: http://www.repoze.org
 Author: Agendaless Consulting
@@ -9,17 +9,84 @@ License: BSD-derived (http://www.repoze.org/LICENSE.txt)
 Description: repoze.tm2 (Transaction Manager)
         ================================
         
+        .. image:: https://travis-ci.org/repoze/repoze.tm2.png?branch=master
+                :target: https://travis-ci.org/repoze/repoze.tm2
+        
+        .. image:: https://readthedocs.org/projects/repozetm2/badge/?version=latest
+                :target: http://repozetm2.readthedocs.org/en/latest/ 
+                :alt: Documentation Status
+        
+        .. image:: https://img.shields.io/pypi/v/repoze.tm2.svg
+                :target: https://pypi.python.org/pypi/repoze.tm2
+        
+        .. image:: https://img.shields.io/pypi/pyversions/repoze.tm2.svg
+                :target: https://pypi.python.org/pypi/repoze.tm2
+        
         Middleware which uses the ZODB transaction manager to wrap a call to
         its pipeline children inside a transaction.  This is a fork of the
         ``repoze.tm`` package which depends only on the ``transaction``
         package rather than the entirety of ZODB (for users who don't rely on ZODB).
         
-        See docs/index.rst for documentation.
+        Installation
+        ------------
+        
+        Install using setuptools, e.g. (within a virtualenv)::
+        
+         $ easy_install repoze.tm2
+        
+        or using pip::
+        
+         $ pip install repoze.tm2
+        
+        
+        Usage
+        -----
+        
+        For details on using the various components, please see the
+        documentation in ``docs/index.rst``.  A rendered version of that documentation
+        is also available online:
+        
+         - http://repozetm2.readthedocs.org/en/latest/
+        
+        
+        Reporting Bugs 
+        --------------
+        
+        Please report bugs in this package to
+        
+          https://github.com/repoze/repoze.tm2/issues
+        
+        
+        Obtaining Source Code
+        ---------------------
+        
+        Download development or tagged versions of the software by visiting:
+        
+          https://github.com/repoze/repoze.tm2
+        
         
         
         Changelog
         =========
         
+        2.2.0 (2023-01-16)
+        ------------------
+        
+        - Add support for Python 3.7, 3.8, 3.9, 3.10, and 3.11.
+        
+        - Drop suppport for Python 2.7, 3.4, 3.5 and 3.6.
+        
+        - Add Github Actions workflow running unit tests / coverage for PRs.
+        
+        2.1 (2016-06-03)
+        ----------------
+        
+        - Add support for Python 3.4, 3.5 and PyPy3.
+        
+        - Drop support for Python 2.6 and 3.2.
+        
+        - Add support for testing under Travis.
+        
         2.0 (2013-06-26)
         ----------------
         
@@ -180,16 +247,18 @@ Description: repoze.tm2 (Transaction Manager)
         
 Keywords: web application server wsgi zope repoze
 Platform: UNKNOWN
-Classifier: Development Status :: 3 - Alpha
+Classifier: Development Status :: 5 - Production/Stable
 Classifier: Intended Audience :: Developers
 Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Internet :: WWW/HTTP
 Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
 Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware
+Provides-Extra: docs
diff --git a/repoze.tm2.egg-info/SOURCES.txt b/repoze.tm2.egg-info/SOURCES.txt
index 854c778..a765a25 100644
--- a/repoze.tm2.egg-info/SOURCES.txt
+++ b/repoze.tm2.egg-info/SOURCES.txt
@@ -13,8 +13,8 @@ docs/api.rst
 docs/changes.rst
 docs/conf.py
 docs/index.rst
-docs/.static/logo_hi.gif
-docs/.static/repoze.css
+docs/_static/logo_hi.png
+docs/_static/repoze.css
 repoze/__init__.py
 repoze.tm2.egg-info/PKG-INFO
 repoze.tm2.egg-info/SOURCES.txt
diff --git a/repoze.tm2.egg-info/requires.txt b/repoze.tm2.egg-info/requires.txt
index 5c9c66c..21dc6f2 100644
--- a/repoze.tm2.egg-info/requires.txt
+++ b/repoze.tm2.egg-info/requires.txt
@@ -1,10 +1,5 @@
 transaction
 
 [docs]
-transaction
 Sphinx
-
-[testing]
 transaction
-nose
-coverage
\ No newline at end of file
diff --git a/repoze/tm/__init__.py b/repoze/tm/__init__.py
index 4c5ee3f..28764f1 100644
--- a/repoze/tm/__init__.py
+++ b/repoze/tm/__init__.py
@@ -1,33 +1,15 @@
 # repoze TransactionManager WSGI middleware
 import sys
+
 import transaction
 
 ekey = 'repoze.tm.active'
 
-PY3 = sys.version_info[0] >= 3
-
-if PY3: #pragma NO COVER Py3k
-    def reraise(tp, value, tb=None):
-        if value.__traceback__ is not tb:
-            raise value.with_traceback(tb)
-        raise value
-else:   #pragma NO COVER Python2
-    def exec_(_code_, _globs_=None, _locs_=None):
-        """Execute code in a namespace."""
-        if _globs_ is None:
-            frame = sys._getframe(1)
-            _globs_ = frame.f_globals
-            if _locs_ is None:
-                _locs_ = frame.f_locals
-            del frame
-        elif _locs_ is None: #pragma NO COVER
-            _locs_ = _globs_
-        exec("""exec _code_ in _globs_, _locs_""")
-
-    exec_("""def reraise(tp, value, tb=None):
-    raise tp, value, tb
-""")
-    del exec_
+
+def reraise(tp, value, tb=None):
+    if value.__traceback__ is not tb:  # pragma: NO COVER
+        raise value.with_traceback(tb)
+    raise value
 
 
 class TM:
@@ -174,6 +156,6 @@ def make_tm(app, global_conf, commit_veto=None):
     """ Paste filter_app_factory entry point for creation of a TM middleware."""
     from pkg_resources import EntryPoint
     if commit_veto is not None:
-        commit_veto = EntryPoint.parse('x=%s' % commit_veto).load(False)
+        commit_veto = EntryPoint.parse('x=%s' % commit_veto).resolve()
     return TM(app, commit_veto)
 
diff --git a/setup.cfg b/setup.cfg
index 481387b..ee48337 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -12,5 +12,4 @@ docs = develop easy_install repoze.tm2[docs]
 [egg_info]
 tag_build = 
 tag_date = 0
-tag_svn_revision = 0
 
diff --git a/setup.py b/setup.py
index e641527..d1c0996 100644
--- a/setup.py
+++ b/setup.py
@@ -1,29 +1,36 @@
-
 import os
-from setuptools import setup, find_packages
+
+from setuptools import find_packages
+from setuptools import setup
 
 install_requires = ['transaction']
 
-testing_extras = install_requires + ['nose', 'coverage']
 docs_extras = install_requires + ['Sphinx']
 
 here = os.path.abspath(os.path.dirname(__file__))
-README = open(os.path.join(here, 'README.rst')).read()
-CHANGES = open(os.path.join(here, 'CHANGES.rst')).read()
+def _read_file(filename):
+    try:
+        with open(os.path.join(here, filename)) as f:
+            return f.read()
+    except IOError:  # Travis???
+        return ''
+README = _read_file('README.rst')
+CHANGES = _read_file('CHANGES.rst')
 
 setup(name='repoze.tm2',
-      version='2.0',
+      version='2.2.0',
       description='Per-request transactions via WSGI middleware',
       long_description=README + "\n\n" + CHANGES,
       classifiers=[
-        "Development Status :: 3 - Alpha",
+        "Development Status :: 5 - Production/Stable",
         "Intended Audience :: Developers",
         "Programming Language :: Python",
-        "Programming Language :: Python :: 2.6",
-        "Programming Language :: Python :: 2.7",
         "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.2",
-        "Programming Language :: Python :: 3.3",
+        "Programming Language :: Python :: 3.7",
+        "Programming Language :: Python :: 3.8",
+        "Programming Language :: Python :: 3.9",
+        "Programming Language :: Python :: 3.10",
+        "Programming Language :: Python :: 3.11",
         "Programming Language :: Python :: Implementation :: CPython",
         "Programming Language :: Python :: Implementation :: PyPy",
         "Topic :: Internet :: WWW/HTTP",
@@ -47,7 +54,6 @@ setup(name='repoze.tm2',
       tm = repoze.tm:make_tm
       """,
       extras_require = {
-        'testing': testing_extras,
         'docs': docs_extras,
       }
 )
diff --git a/tox.ini b/tox.ini
index c82b8d9..a481273 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,25 +1,30 @@
 [tox]
 envlist = 
-    py26,py27,py32,py33,pypy,cover,docs
+    py37,py38,py39,py310,py311,pypy3,cover,docs
 
 [testenv]
 commands = 
-    python setup.py test -q
+    python -m pytest --cov=repoze.tm --cov-append --cov-report= {toxinidir}/repoze/tm/tests.py
+usedevelop = true
 deps =
     zope.interface
     transaction
+    pytest
+    pytest-cov
+setenv =
+    COVERAGE_FILE=.coverage.{envname}
 
 [testenv:cover]
+skip_install = true
 basepython =
-    python2.6
+    python3.10
 commands = 
-    nosetests --with-xunit --with-xcoverage
+    coverage combine
+    coverage report --fail-under=100 --show-missing
 deps =
-    zope.interface
-    transaction
-    nose
     coverage
-    nosexcover
+setenv =
+    COVERAGE_FILE=.coverage
 
 # we separate coverage into its own testenv because a) "last run wins" wrt
 # cobertura jenkins reporting and b) pypy and jython can't handle any
@@ -27,7 +32,7 @@ deps =
 
 [testenv:docs]
 basepython =
-    python2.6
+    python3.10
 commands = 
     sphinx-build -b html -d docs/_build/doctrees docs docs/_build/html
 deps =

Debdiff

[The following lists of changes regard files as different if they have different names, permissions or owners.]

Files in second set of .debs but not in first

-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.2.0-nspkg.pth
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.2.0.egg-info/PKG-INFO
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.2.0.egg-info/dependency_links.txt
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.2.0.egg-info/entry_points.txt
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.2.0.egg-info/namespace_packages.txt
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.2.0.egg-info/not-zip-safe
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.2.0.egg-info/requires.txt
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.2.0.egg-info/top_level.txt
-rw-r--r--  root/root   /usr/share/doc/python-repoze.tm2-doc/html/_static/logo_hi.png

Files in first set of .debs but not in second

-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.0-nspkg.pth
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.0.egg-info/PKG-INFO
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.0.egg-info/dependency_links.txt
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.0.egg-info/entry_points.txt
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.0.egg-info/namespace_packages.txt
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.0.egg-info/not-zip-safe
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.0.egg-info/requires.txt
-rw-r--r--  root/root   /usr/lib/python3/dist-packages/repoze.tm2-2.0.egg-info/top_level.txt
-rw-r--r--  root/root   /usr/share/doc/python-repoze.tm2-doc/html/_static/logo_hi.gif

No differences were encountered between the control files of package python-repoze.tm2-doc

No differences were encountered between the control files of package python3-repoze.tm2

More details

Full run details