From b35b8fd0385e7bfc327d98cce69f4e3f29becfdd Mon Sep 17 00:00:00 2001
From: MSVSphere Packaging Team <packager@msvsphere-os.ru>
Date: Wed, 3 Apr 2024 17:01:49 +0300
Subject: [PATCH] import python-nose-1.3.7-31.module+el8.10.0+20784+edafcd43

---
 .gitignore                            |   1 +
 .python-nose.metadata                 |   1 +
 SOURCES/python-nose-coverage4.patch   |  21 ++
 SOURCES/python-nose-py35.patch        |  33 ++
 SOURCES/python-nose-py36.patch        |  69 ++++
 SOURCES/python-nose-readunicode.patch |  20 +
 SOURCES/python-nose-unicode.patch     | 128 +++++++
 SPECS/python-nose.spec                | 517 ++++++++++++++++++++++++++
 8 files changed, 790 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 .python-nose.metadata
 create mode 100644 SOURCES/python-nose-coverage4.patch
 create mode 100644 SOURCES/python-nose-py35.patch
 create mode 100644 SOURCES/python-nose-py36.patch
 create mode 100644 SOURCES/python-nose-readunicode.patch
 create mode 100644 SOURCES/python-nose-unicode.patch
 create mode 100644 SPECS/python-nose.spec

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2cb3a71
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/nose-1.3.7.tar.gz
diff --git a/.python-nose.metadata b/.python-nose.metadata
new file mode 100644
index 0000000..6e25e36
--- /dev/null
+++ b/.python-nose.metadata
@@ -0,0 +1 @@
+97f2a04c9d43b29ddf4794a1a1d1ba803f1074c6 SOURCES/nose-1.3.7.tar.gz
diff --git a/SOURCES/python-nose-coverage4.patch b/SOURCES/python-nose-coverage4.patch
new file mode 100644
index 0000000..94d3f3c
--- /dev/null
+++ b/SOURCES/python-nose-coverage4.patch
@@ -0,0 +1,21 @@
+diff -up nose-1.3.7/nose/plugins/cover.py.coverage4 nose-1.3.7/nose/plugins/cover.py
+--- nose-1.3.7/nose/plugins/cover.py.coverage4	2015-04-04 03:28:20.000000000 -0600
++++ nose-1.3.7/nose/plugins/cover.py	2016-11-09 16:16:32.832927855 -0700
+@@ -187,7 +187,7 @@ class Coverage(Plugin):
+                     for name, module in sys.modules.items()
+                     if self.wantModuleCoverage(name, module)]
+         log.debug("Coverage report will cover modules: %s", modules)
+-        self.coverInstance.report(modules, file=stream)
++        self.coverInstance.report(modules, file=stream, show_missing=True)
+ 
+         import coverage
+         if self.coverHtmlDir:
+@@ -207,7 +207,7 @@ class Coverage(Plugin):
+         # make sure we have minimum required coverage
+         if self.coverMinPercentage:
+             f = StringIO.StringIO()
+-            self.coverInstance.report(modules, file=f)
++            self.coverInstance.report(modules, file=f, show_missing=True)
+ 
+             multiPackageRe = (r'-------\s\w+\s+\d+\s+\d+(?:\s+\d+\s+\d+)?'
+                               r'\s+(\d+)%\s+\d*\s{0,1}$')
diff --git a/SOURCES/python-nose-py35.patch b/SOURCES/python-nose-py35.patch
new file mode 100644
index 0000000..604f60e
--- /dev/null
+++ b/SOURCES/python-nose-py35.patch
@@ -0,0 +1,33 @@
+diff -up nose-1.3.7/functional_tests/test_load_tests_from_test_case.py.py35 nose-1.3.7/functional_tests/test_load_tests_from_test_case.py
+--- nose-1.3.7/functional_tests/test_load_tests_from_test_case.py.py35	2012-09-29 02:18:54.000000000 -0600
++++ nose-1.3.7/functional_tests/test_load_tests_from_test_case.py	2016-11-15 13:42:27.946707472 -0700
+@@ -29,6 +29,7 @@ class NoFixturePlug(Plugin):
+                 pass
+             def tearDown(self):
+                 pass
++        Derived.__qualname__ = Derived.__name__
+         # must use nose loader here because the default loader in 2.3
+         # won't load tests from base classes
+         l = loader.TestLoader()
+diff -up nose-1.3.7/nose/util.py.py35 nose-1.3.7/nose/util.py
+--- nose-1.3.7/nose/util.py.py35	2015-04-04 02:52:52.000000000 -0600
++++ nose-1.3.7/nose/util.py	2016-11-15 13:42:27.946707472 -0700
+@@ -643,6 +643,7 @@ def transplant_class(cls, module):
+         pass
+     C.__module__ = module
+     C.__name__ = cls.__name__
++    C.__qualname__ = cls.__name__
+     return C
+ 
+ 
+diff -up nose-1.3.7/unit_tests/test_xunit.py.py35 nose-1.3.7/unit_tests/test_xunit.py
+--- nose-1.3.7/unit_tests/test_xunit.py.py35	2015-04-04 02:52:52.000000000 -0600
++++ nose-1.3.7/unit_tests/test_xunit.py	2016-11-15 13:42:27.946707472 -0700
+@@ -16,6 +16,7 @@ def mktest():
+     class TC(unittest.TestCase):
+         def runTest(self):
+             pass
++    TC.__qualname__ = TC.__name__
+     test = TC()
+     return test
+ 
diff --git a/SOURCES/python-nose-py36.patch b/SOURCES/python-nose-py36.patch
new file mode 100644
index 0000000..75a47c0
--- /dev/null
+++ b/SOURCES/python-nose-py36.patch
@@ -0,0 +1,69 @@
+From acf7c4e073030a69712172b133076101e2b7d81f Mon Sep 17 00:00:00 2001
+From: Tomas Orsava <torsava@redhat.com>
+Date: Mon, 12 Dec 2016 12:09:47 +0100
+Subject: [PATCH] Patch for compatibility with Python 3.6
+
+Python 3.6 returns a ModuleNotFoundError instead of the previous ImportError.
+---
+ functional_tests/test_loader.py           |  2 +-
+ functional_tests/test_withid_failures.rst | 12 ++++++------
+ 2 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/functional_tests/test_loader.py b/functional_tests/test_loader.py
+index 81aaa7b..3f82122 100644
+--- a/functional_tests/test_loader.py
++++ b/functional_tests/test_loader.py
+@@ -369,7 +369,7 @@ class TestNoseTestLoader(unittest.TestCase):
+         assert res.errors, "Expected errors but got none"
+         assert not res.failures, res.failures
+         err = res.errors[0][0].test.exc_class
+-        assert err is ImportError, \
++        assert issubclass(err, ImportError), \
+             "Expected import error, got %s" % err
+ 
+     def test_load_nonsense_name(self):
+diff --git a/functional_tests/test_withid_failures.rst b/functional_tests/test_withid_failures.rst
+index cf09d4f..cb20886 100644
+--- a/functional_tests/test_withid_failures.rst
++++ b/functional_tests/test_withid_failures.rst
+@@ -7,16 +7,16 @@
+     >>> support = os.path.join(os.path.dirname(__file__), 'support', 'id_fails')
+     >>> argv = [__file__, '-v', '--with-id', '--id-file', idfile, support]
+     >>> run(argv=argv, plugins=[TestId()]) # doctest: +ELLIPSIS
+-    #1 Failure: ImportError (No module ...apackagethatdoesntexist...) ... ERROR
++    #1 Failure: ... (No module ...apackagethatdoesntexist...) ... ERROR
+     #2 test_b.test ... ok
+     #3 test_b.test_fail ... FAIL
+     <BLANKLINE>
+     ======================================================================
+-    ERROR: Failure: ImportError (No module ...apackagethatdoesntexist...)
++    ERROR: Failure: ... (No module ...apackagethatdoesntexist...)
+     ----------------------------------------------------------------------
+     Traceback (most recent call last):
+     ...
+-    ImportError: No module ...apackagethatdoesntexist...
++    ...: No module ...apackagethatdoesntexist...
+     <BLANKLINE>
+     ======================================================================
+     FAIL: test_b.test_fail
+@@ -35,14 +35,14 @@ Addressing failures works (sometimes).
+     >>> argv.append('1')
+     >>> _junk = sys.modules.pop('test_a', None) # 2.3 requires
+     >>> run(argv=argv, plugins=[TestId()]) #doctest: +ELLIPSIS
+-    #1 Failure: ImportError (No module ...apackagethatdoesntexist...) ... ERROR
++    #1 Failure: ... (No module ...apackagethatdoesntexist...) ... ERROR
+     <BLANKLINE>
+     ======================================================================
+-    ERROR: Failure: ImportError (No module ...apackagethatdoesntexist...)
++    ERROR: Failure: ... (No module ...apackagethatdoesntexist...)
+     ----------------------------------------------------------------------
+     Traceback (most recent call last):
+     ...
+-    ImportError: No module ...apackagethatdoesntexist...
++    ...: No module ...apackagethatdoesntexist...
+     <BLANKLINE>
+     ----------------------------------------------------------------------
+     Ran 1 test in ...s
+-- 
+2.11.0
+
diff --git a/SOURCES/python-nose-readunicode.patch b/SOURCES/python-nose-readunicode.patch
new file mode 100644
index 0000000..61d4cd2
--- /dev/null
+++ b/SOURCES/python-nose-readunicode.patch
@@ -0,0 +1,20 @@
+diff -up nose-1.3.7/nose/plugins/doctests.py.readunicode nose-1.3.7/nose/plugins/doctests.py
+--- nose-1.3.7/nose/plugins/doctests.py.readunicode	2015-04-04 02:52:52.000000000 -0600
++++ nose-1.3.7/nose/plugins/doctests.py	2016-11-15 14:24:54.298239018 -0700
+@@ -49,6 +49,7 @@ test.
+ """
+ from __future__ import generators
+ 
++import codecs
+ import logging
+ import os
+ import sys
+@@ -259,7 +260,7 @@ class Doctest(Plugin):
+         """
+         if self.extension and anyp(filename.endswith, self.extension):
+             name = os.path.basename(filename)
+-            dh = open(filename)
++            dh = codecs.open(filename, encoding='utf-8')
+             try:
+                 doc = dh.read()
+             finally:
diff --git a/SOURCES/python-nose-unicode.patch b/SOURCES/python-nose-unicode.patch
new file mode 100644
index 0000000..a103da8
--- /dev/null
+++ b/SOURCES/python-nose-unicode.patch
@@ -0,0 +1,128 @@
+diff -up nose-1.3.7/AUTHORS.unicode nose-1.3.7/AUTHORS
+diff -up nose-1.3.7/CHANGELOG.unicode nose-1.3.7/CHANGELOG
+diff -up nose-1.3.7/nose/plugins/capture.py.unicode nose-1.3.7/nose/plugins/capture.py
+--- nose-1.3.7/nose/plugins/capture.py.unicode	2015-04-04 02:52:52.000000000 -0600
++++ nose-1.3.7/nose/plugins/capture.py	2016-11-15 13:58:18.713025335 -0700
+@@ -12,6 +12,7 @@ the options ``-s`` or ``--nocapture``.
+ import logging
+ import os
+ import sys
++import traceback
+ from nose.plugins.base import Plugin
+ from nose.pyversion import exc_to_unicode, force_unicode
+ from nose.util import ln
+@@ -71,26 +72,56 @@ class Capture(Plugin):
+     def formatError(self, test, err):
+         """Add captured output to error report.
+         """
+-        test.capturedOutput = output = self.buffer
++        test.capturedOutput = output = ''
++        output_exc_info = None
++        try:
++            test.capturedOutput = output = self.buffer
++        except UnicodeError:
++            # python2's StringIO.StringIO [1] class has this warning:
++            #
++            #     The StringIO object can accept either Unicode or 8-bit strings,
++            #     but mixing the two may take some care. If both are used, 8-bit
++            #     strings that cannot be interpreted as 7-bit ASCII (that use the
++            #     8th bit) will cause a UnicodeError to be raised when getvalue()
++            #     is called.
++            #
++            # This exception handler is a protection against issue #816 [2].
++            # Capturing the exception info allows us to display it back to the
++            # user.
++            #
++            # [1] <https://github.com/python/cpython/blob/2.7/Lib/StringIO.py#L258>
++            # [2] <https://github.com/nose-devs/nose/issues/816>
++            output_exc_info = sys.exc_info()
+         self._buf = None
+-        if not output:
++        if (not output) and (not output_exc_info):
+             # Don't return None as that will prevent other
+             # formatters from formatting and remove earlier formatters
+             # formats, instead return the err we got
+             return err
+         ec, ev, tb = err
+-        return (ec, self.addCaptureToErr(ev, output), tb)
++        return (ec, self.addCaptureToErr(ev, output, output_exc_info=output_exc_info), tb)
+ 
+     def formatFailure(self, test, err):
+         """Add captured output to failure report.
+         """
+         return self.formatError(test, err)
+ 
+-    def addCaptureToErr(self, ev, output):
++    def addCaptureToErr(self, ev, output, output_exc_info=None):
++        # If given, output_exc_info should be a 3-tuple from sys.exc_info(),
++        # from an exception raised while trying to get the captured output.
+         ev = exc_to_unicode(ev)
+         output = force_unicode(output)
+-        return u'\n'.join([ev, ln(u'>> begin captured stdout <<'),
+-                           output, ln(u'>> end captured stdout <<')])
++        error_text = [ev, ln(u'>> begin captured stdout <<'),
++                      output, ln(u'>> end captured stdout <<')]
++        if output_exc_info:
++            error_text.extend([u'OUTPUT ERROR: Could not get captured output.',
++                               # <https://github.com/python/cpython/blob/2.7/Lib/StringIO.py#L258>
++                               # <https://github.com/nose-devs/nose/issues/816>
++                               u"The test might've printed both 'unicode' strings and non-ASCII 8-bit 'str' strings.",
++                               ln(u'>> begin captured stdout exception traceback <<'),
++                               u''.join(traceback.format_exception(*output_exc_info)),
++                               ln(u'>> end captured stdout exception traceback <<')])
++        return u'\n'.join(error_text)
+ 
+     def start(self):
+         self.stdout.append(sys.stdout)
+diff -up nose-1.3.7/unit_tests/test_capture_plugin.py.unicode nose-1.3.7/unit_tests/test_capture_plugin.py
+--- nose-1.3.7/unit_tests/test_capture_plugin.py.unicode	2012-09-29 02:18:54.000000000 -0600
++++ nose-1.3.7/unit_tests/test_capture_plugin.py	2016-11-15 13:58:18.714025330 -0700
+@@ -4,6 +4,12 @@ import unittest
+ from optparse import OptionParser
+ from nose.config import Config
+ from nose.plugins.capture import Capture
++from nose.pyversion import force_unicode
++
++if sys.version_info[0] == 2:
++    py2 = True
++else:
++    py2 = False
+ 
+ class TestCapturePlugin(unittest.TestCase):
+ 
+@@ -62,6 +68,35 @@ class TestCapturePlugin(unittest.TestCas
+         c.end()
+         self.assertEqual(c.buffer, "test 日本\n")
+ 
++    def test_does_not_crash_with_mixed_unicode_and_nonascii_str(self):
++        class Dummy:
++            pass
++        d = Dummy()
++        c = Capture()
++        c.start()
++        printed_nonascii_str = force_unicode("test 日本").encode('utf-8')
++        printed_unicode = force_unicode("Hello")
++        print printed_nonascii_str
++        print printed_unicode
++        try:
++            raise Exception("boom")
++        except:
++            err = sys.exc_info()
++        formatted = c.formatError(d, err)
++        _, fev, _ = formatted
++
++        if py2:
++            for string in [force_unicode(printed_nonascii_str, encoding='utf-8'), printed_unicode]:
++                assert string not in fev, "Output unexpectedly found in error message"
++            assert d.capturedOutput == '', "capturedOutput unexpectedly non-empty"
++            assert "OUTPUT ERROR" in fev
++            assert "captured stdout exception traceback" in fev
++            assert "UnicodeDecodeError" in fev
++        else:
++            for string in [repr(printed_nonascii_str), printed_unicode]:
++                assert string in fev, "Output not found in error message"
++                assert string in d.capturedOutput, "Output not attached to test"
++
+     def test_format_error(self):
+         class Dummy:
+             pass
diff --git a/SPECS/python-nose.spec b/SPECS/python-nose.spec
new file mode 100644
index 0000000..024b89b
--- /dev/null
+++ b/SPECS/python-nose.spec
@@ -0,0 +1,517 @@
+%bcond_without python3
+%bcond_with python36_module
+
+%global modname nose
+
+# Enable building without docs to avoid a circular dependency between this and python-sphinx
+#
+# Docs disabled permanently because the docs build config is not ported to
+# Python 3 and thus cannot be built with Python 3 version of Sphinx.
+%bcond_with docs
+
+# python2X and python3X are built form the same module, so we need a conditional for python2 bits
+# the state of the conditional is not important in the spec, it is set in modulemd
+%bcond_with python2
+
+%global desc nose extends the test loading and running features of unit test, making\
+it easier to write, find and run tests.\
+\
+By default, nose will run tests in files or directories under the\
+current working directory whose names include "test" or "Test" at a\
+word boundary (like "test_this" or "functional_test" or "TestClass"\
+but not "libtest"). Test output is similar to that of unit test, but\
+also includes captured stdout output from failing tests, for easy\
+print-style debugging.\
+\
+These features, and many more, are customizable through the use of\
+plugins. Plugins included with nose provide support for doctest, code\
+coverage and profiling, flexible attribute-based test selection,\
+output capture and more.\
+
+
+Name:           python-%{modname}
+Version:        1.3.7
+Release:        31%{?dist}
+BuildArch:      noarch
+
+License:        LGPLv2+ and Public Domain
+Summary:        Discovery-based unit test extension for Python
+URL:            https://nose.readthedocs.org/en/latest/
+Source0:        http://pypi.python.org/packages/source/n/nose/nose-%{version}.tar.gz
+# Make compatible with coverage 4.1
+# https://github.com/nose-devs/nose/pull/1004
+Patch0:         python-nose-coverage4.patch
+# Fix python 3.5 compat
+# https://github.com/nose-devs/nose/pull/983
+Patch1:         python-nose-py35.patch
+# Fix UnicodeDecodeError with captured output
+# https://github.com/nose-devs/nose/pull/988
+Patch2:         python-nose-unicode.patch
+# Allow docutils to read utf-8 source
+Patch3:         python-nose-readunicode.patch
+# Fix Python 3.6 compatibility
+# Python now returns ModuleNotFoundError instead of the previous ImportError
+# https://github.com/nose-devs/nose/pull/1029
+Patch4:         python-nose-py36.patch
+
+BuildRequires:  dos2unix
+
+%description
+%{desc}
+
+%package docs
+Summary:        Nose Documentation
+%if %{with python3}
+%if %{with docs}
+BuildRequires:  %{_bindir}/sphinx-build-3
+%endif
+%endif
+
+%description docs
+Documentation for Nose.
+
+%if %{with python2}
+%package -n python2-%{modname}
+Summary:        %{summary}
+BuildRequires:  python2-devel
+BuildRequires:  python2-setuptools
+BuildRequires:  python2-coverage >= 3.4-1
+Requires:       python2-setuptools
+%{?python_provide:%python_provide python2-%{modname}}
+
+%description -n python2-%{modname}
+%{desc}
+%endif
+
+%if %{with python3}
+%package -n python3-%{modname}
+Summary:        %{summary}
+%if %{with python36_module}
+BuildRequires:  python36-devel
+BuildRequires:  python36-rpm-macros
+%else
+BuildRequires:  python3-devel
+%endif
+BuildRequires:  python3-setuptools
+BuildRequires:  python3-coverage >= 3.4-1
+
+# Require alternatives version that implements the --keep-foreign flag
+Requires(postun): alternatives >= 1.19.1-1
+# For alternatives
+Requires:       python36
+Requires(post): python36
+Requires(postun): python36
+Requires:       python3-setuptools
+%{?python_provide:%python_provide python3-%{modname}}
+Obsoletes:      platform-python-%{modname} < %{version}-%{release}
+
+%description -n python3-%{modname}
+%{desc}
+
+This package installs the nose module and nosetests3 program that can discover
+python3 unit tests.
+%endif
+
+%prep
+%setup -qc
+pushd %{modname}-%{version}
+%autopatch -p1
+dos2unix examples/attrib_plugin.py
+cp -pr lgpl.txt AUTHORS CHANGELOG examples NEWS README.txt ..
+popd
+
+%if %{with python3}
+mv %{modname}-%{version} python3
+%endif
+%if %{with python2}
+mv %{modname}-%{version} python2
+%endif
+
+%build
+%if %{with python2}
+pushd python2
+%py2_build
+popd
+%endif
+
+%if %{with python3}
+pushd python3
+%py3_build
+popd
+%endif
+
+%install
+mkdir -p %{buildroot}%{_mandir}/man1
+
+%if %{with python2}
+pushd python2
+%py2_install
+mv %{buildroot}%{_bindir}/nosetests{,-%{python2_version}}
+ln -sf nosetests-%{python2_version} %{buildroot}%{_bindir}/nosetests-2
+mv %{buildroot}%{_prefix}/man/man1/nosetests.1 %{buildroot}%{_mandir}/man1/nosetests-%{python2_version}.1
+ln -sf nosetests-%{python2_version}.1 %{buildroot}%{_mandir}/man1/nosetests-2.1
+popd
+%endif
+
+%if %{with python3}
+pushd python3
+%py3_install
+mv %{buildroot}%{_bindir}/nosetests{,-%{python3_version}}
+touch %{buildroot}%{_bindir}/nosetests-3 # for alternatives
+mv %{buildroot}%{_prefix}/man/man1/nosetests.1 %{buildroot}%{_mandir}/man1/nosetests-%{python3_version}.1
+touch %{buildroot}%{_mandir}/man1/nosetests-3.1 # for alternatives
+popd
+%endif
+
+%if %{with python2}
+ln -sf nosetests-2.1 %{buildroot}%{_mandir}/man1/nosetests.1
+%endif
+
+%if %{with python3}
+%if %{with docs}
+pushd python3/doc
+  sphinx-build-3 -b html -d .build/doctrees . .build/html
+  rm -vrf .build/html/.buildinfo .build/html/_sources
+  mv .build/html ../..
+  rm -vrf .build
+popd
+%endif
+cp -a python3/doc reST
+rm -vrf reST/{.static,.templates}
+%endif
+
+%check
+%if %{with python2}
+pushd python2
+%{__python2} selftest.py
+popd
+%endif
+
+%if %{with python3}
+pushd python3
+%{__python3} setup.py build_tests
+%{__python3} selftest.py
+popd
+%endif
+
+%if %{with python3}
+%post -n python3-%{modname}
+alternatives --add-slave python3 %{_bindir}/python%{python3_version} \
+    %{_bindir}/nosetests-3 \
+    nosetests-3 \
+    %{_bindir}/nosetests-%{python3_version}
+
+alternatives --add-slave python3 %{_bindir}/python%{python3_version} \
+    %{_mandir}/man1/nosetests-3.1.gz \
+    nosetests-3-man \
+    %{_mandir}/man1/nosetests-%{python3_version}.1.gz
+
+%postun -n python3-%{modname}
+if [ $1 -eq 0 ]; then
+  alternatives --keep-foreign --remove-slave python3 \
+      %{_bindir}/python%{python3_version} nosetests-3
+
+  alternatives --keep-foreign --remove-slave python3 \
+      %{_bindir}/python%{python3_version} nosetests-3-man
+fi
+%endif
+
+%if %{with python2}
+%files -n python2-%{modname}
+%license lgpl.txt
+%{_bindir}/nosetests-2
+%{_bindir}/nosetests-%{python2_version}
+%{_mandir}/man1/nosetests.1*
+%{_mandir}/man1/nosetests-2.1*
+%{_mandir}/man1/nosetests-%{python2_version}.1*
+%{python2_sitelib}/nose-*.egg-info/
+%{python2_sitelib}/nose/
+%endif
+
+%if %{with python3}
+%files -n python3-%{modname}
+%license lgpl.txt
+%ghost %{_bindir}/nosetests-3
+%{_bindir}/nosetests-%{python3_version}
+%ghost %{_mandir}/man1/nosetests-3.1*
+%{_mandir}/man1/nosetests-%{python3_version}.1*
+%{python3_sitelib}/nose-*.egg-info/
+%{python3_sitelib}/nose/
+%endif
+
+%files docs
+%license lgpl.txt
+%doc AUTHORS CHANGELOG examples NEWS README.txt
+%if %{with python3}
+%if %{with docs}
+%doc html reST
+%endif  # with docs
+%endif  # with python3
+
+%changelog
+* Wed Apr 03 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 1.3.7-31
+- Rebuilt for MSVSphere 8.10 beta
+
+* Fri Jul 30 2021 Tomas Orsava <torsava@redhat.com> - 1.3.7-31
+- Adjusted the postun scriptlets to enable upgrading to RHEL 9
+- Resolves: rhbz#1933055
+
+* Thu Apr 25 2019 Tomas Orsava <torsava@redhat.com> - 1.3.7-30
+- Bumping due to problems with modular RPM upgrade path
+- Resolves: rhbz#1695587
+
+* Thu Oct 04 2018 Lumír Balhar <lbalhar@redhat.com> - 1.3.7-29
+- Fix alternatives - post and postun sections only with python3
+- Resolves: rhbz#1633534
+
+* Tue Oct 02 2018 Lumír Balhar <lbalhar@redhat.com> - 1.3.7-28
+- Add alternatives for the executable and manpage
+- Resolves: rhbz#1633534
+
+* Wed Aug 15 2018 Lumír Balhar <lbalhar@redhat.com> - 1.3.7-27
+- Remove nosetest-3 executable/manpage. This will be provided by python3 module.
+- Resolves: rhbz#1615727
+
+* Wed Aug 08 2018 Lumír Balhar <lbalhar@redhat.com> - 1.3.7-26
+- Remove unversioned binaries from python2 subpackage
+- Resolves: rhbz#1613343
+
+* Tue Jul 31 2018 Lumír Balhar <lbalhar@redhat.com> - 1.3.7-25
+- Make possible to disable python3 subpackage
+
+* Wed Jul 18 2018 Tomas Orsava <torsava@redhat.com> - 1.3.7-24
+- BuildRequire also python36-rpm-macros as part of the python36 module build
+
+* Wed Jul 04 2018 Miro Hrončok <mhroncok@redhat.com> - 1.3.7-23
+- Add a bcond for python2
+- Build docs with python3 explicitly
+
+* Tue Jun 26 2018 Tomas Orsava <torsava@redhat.com> - 1.3.7-22
+- Use python2 macros instead of unversioned python macros
+
+* Mon Jun 18 2018 Tomas Orsava <torsava@redhat.com> - 1.3.7-21
+- Disabled docs because the docs build config is not ported to Python 3 and
+  thus cannot be built with Python 3 version of Sphinx
+
+* Mon Apr 30 2018 Tomas Orsava <torsava@redhat.com> - 1.3.7-20
+- Require the python36-devel package when building for the python36 module
+
+* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.7-19
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Tue Nov 07 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.3.7-18
+- Use better Obsoletes for platform-python
+
+* Sat Nov 04 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.3.7-17
+- Remove platform-python subpackage
+- Cleanup spec
+
+* Fri Sep 29 2017 Troy Dawson <tdawson@redhat.com> - 1.3.7-16
+- Cleanup spec file conditionals
+
+* Thu Aug 10 2017 Miro Hrončok <mhroncok@redhat.com> - 1.3.7-15
+- Add platform-python subpackage
+
+* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.7-14
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.7-13
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Mon Dec 12 2016 Tomas Orsava <torsava@redhat.com> - 1.3.7-12
+- Patched to fix compatibility with Python 3.6
+
+* Mon Dec 05 2016 Randy Barlow <bowlofeggs@fedoraproject.org> - 1.3.7-11
+- Provide nosetests-3 (#1289820).
+- Rename python-nose to python2-nose and use Python provides macro.
+- Include the license with the -docs subpackage.
+- Use symlinks to provide man pages for all the Python version variants of /usr/bin/nosetests.
+- The -docs subpackage no longer requires python-nose since that doesn't make sense.
+
+* Tue Nov 15 2016 Orion Poplawski <orion@cora.nwra.com> 1.3.7-10
+- Add upstream patch to fix python 3.5 compat
+- Add patch to allow docutils to read unicode source
+- Update spec
+
+* Wed Nov 9 2016 Orion Poplawski <orion@cora.nwra.com> 1.3.7-9
+- Add patch to fix build with coverage 4.1
+
+* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.7-8
+- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
+
+* Tue Feb 2 2016 Orion Poplawski <orion@cora.nwra.com> 1.3.7-7
+- Fix URL
+
+* Thu Sep 24 2015 Robert Kuska <rkuska@redhat.com> 1.3.7-6
+- Rebuilt for Python3.5 rebuild with disabled tests under python3
+
+* Sun Aug 09 2015 Kevin Fenzi <kevin@scrye.com> 1.3.7-5
+- Add conditional for python-sphinx buildrequires when with_docs is not set. 
+- Fixes bug #1251700
+
+* Fri Jul 24 2015 Kevin Fenzi <kevin@scrye.com> 1.3.7-4
+- Version provides correctly for python2-nose.
+
+* Fri Jul 17 2015 Kevin Fenzi <kevin@scrye.com> 1.3.7-3
+- Add provides for python2-nose. Fixes bug #1241670
+
+* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.7-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Wed Jun 03 2015 Kevin Fenzi <kevin@scrye.com> 1.3.7-1
+- Update to 1.3.7 (#1227345)
+
+* Sat Apr 04 2015 Ralph Bean <rbean@redhat.com> - 1.3.6-1
+- new version
+
+* Wed Aug 27 2014 Luke Macken <lmacken@redhat.com> - 1.3.4-1
+- Update to 1.3.4 (#1094718)
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.2-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Mon May 19 2014 Bohuslav Kabrda <bkabrda@redhat.com> - 1.3.2-2
+- Add patch for issue https://github.com/nose-devs/nose/pull/811,
+which makes tests of python-billiard and python-falcon fail with Python 3.4
+
+* Sat May 03 2014 Orion Poplawski <orion@cora.nwra.com> - 1.3.2-1
+- Update to 1.3.2 for Python 3.4 suport
+
+* Fri May 02 2014 Orion Poplawski <orion@cora.nwra.com> - 1.3.1-2
+- Rebuild for Python 3.4
+
+* Fri Mar 14 2014 Luke Macken <lmacken@redhat.com> - 1.3.1-1
+- Update to 1.3.1 (#1074971)
+
+* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Tue Apr  9 2013 Toshio Kuratomi <toshio@fedoraproject.org> - 1.3.0-1
+- Update to 1.3.0 upstream with python-3.3 fixes
+
+* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Wed Sep 12 2012 Toshio Kuratomi <toshio@fedoraproject.org> - 1.2.1-1
+- New upsream 1.2.1 that just bumps the version properly
+
+* Mon Sep 10 2012 Toshio Kuratomi <toshio@fedoraproject.org> - 1.2.0-1
+- Update to nose-1.2.0.
+- Two less python3 test failures than 1.1.2
+
+* Sat Aug  4 2012 David Malcolm <dmalcolm@redhat.com> - 1.1.2-5
+- rebuild for https://fedoraproject.org/wiki/Features/Python_3.3
+- disable selftests that fail under 3.3
+
+* Fri Aug  3 2012 David Malcolm <dmalcolm@redhat.com> - 1.1.2-4
+- remove rhel logic from with_python3 conditional
+
+* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.1.2-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.1.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Mon Aug 1 2011 Toshio Kuratomi <toshio@fedoraproject.org> - 1.1.2-1
+- Upstream bugfix release
+
+* Wed Jul 27 2011 Toshio Kuratomi <toshio@fedoraproject.org> - 1.1.1-1
+- Upstream bugfix release
+
+* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Sun Dec 26 2010 Toshio Kuratomi <toshio@fedoraproject.org> - 1.0.0-1
+- Update to 1.0.0
+- Create the docs subpackage for text docs even if we don't create the html docs.
+- Make python3 subpackage
+
+* Tue Dec 7 2010 Toshio Kuratomi <toshio@fedoraproject.org> - 0.11.4-2
+- Fix FTBFS with newer coverage
+
+* Thu Oct 21 2010 Luke Macken <lmacken@redhat.com> - 0.11.4-1
+- Update to 0.11.4 (#3630722)
+
+* Wed Jul 21 2010 David Malcolm <dmalcolm@redhat.com> - 0.11.3-5
+- add support for building without docs, to avoid a circular build-time
+dependency between this and python-sphinx; disable docs subpackage for now
+- add (apparently) missing BR on python-coverage (appears to be needed
+for %%check)
+- cherrypick upstream compatibility fixes for 2.7
+
+* Wed Jul 21 2010 David Malcolm <dmalcolm@redhat.com> - 0.11.3-4
+- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild
+
+* Thu May 20 2010 Luke Macken <lmacken@redhat.com> - 0.11.3-3
+- Update URL to http://code.google.com/p/python-nose/
+- Align description to reflect that in setup.py
+- Create a docs subpackage containing HTML & reST documentation
+- Thanks to Gareth Armstrong at HP for the patch
+
+* Thu May 06 2010 Luke Macken <lmacken@redhat.com> - 0.11.3-2
+- Don't hardcode the python version
+
+* Thu May 06 2010 Luke Macken <lmacken@redhat.com> - 0.11.3-1
+- Update to 0.11.3
+- Enable the self tests
+
+* Mon Oct 05 2009 Luke Macken <lmacken@redhat.com> - 0.11.1-2
+- Include the new nosetests-2.6 script as well
+
+* Mon Oct 05 2009 Luke Macken <lmacken@redhat.com> - 0.11.1-1
+- Update to 0.11.1
+
+* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.10.4-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.10.4-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Sat Nov 29 2008 Ignacio Vazquez-Abrams <ivazqueznet+rpm@gmail.com> - 0.10.4-1
+- Update to 0.10.4 to fix 2.6 issues
+
+* Sat Nov 29 2008 Ignacio Vazquez-Abrams <ivazqueznet+rpm@gmail.com> - 0.10.3-2
+- Rebuild for Python 2.6
+
+* Sat Aug 02 2008 Luke Macken <lmacken@redhat.com> 0.10.3-1
+- Update to 0.10.3
+
+* Thu Feb 28 2008 Luke Macken <lmacken@redhat.com> 0.10.1-1
+- Update to 0.10.1
+
+* Mon Dec  3 2007 Luke Macken <lmacken@redhat.com> 0.10.0-2
+- Add python-setuptools to Requires (Bug #408491)
+
+* Tue Nov 27 2007 Luke Macken <lmacken@redhat.com> 0.10.0-1
+- 0.10.0
+
+* Sun Sep  2 2007 Luke Macken <lmacken@redhat.com> 0.10.0-0.3.b1
+- Update for python-setuptools changes in rawhide
+
+* Tue Aug 21 2007 Luke Macken <lmacken@redhat.com> 0.10.0-0.2.b1
+- 0.10.0b1
+- Update license tag to LGPLv2
+
+* Wed Jun 20 2007 Luke Macken <lmacken@redhat.com> 0.10.0-0.1.a2
+- 0.10.0a2
+
+* Sat Jun  2 2007 Luke Macken <lmacken@redhat.com> 0.9.3-1
+- Latest upstream release
+- Remove python-nose-0.9.2-mandir.patch
+
+* Sat Mar  3 2007 Luke Macken <lmacken@redhat.com> 0.9.2-1
+- Add nosetests(1) manpage, and python-nose-0.9.2-mandir.patch to put it in
+  the correct location.
+- 0.9.2
+
+* Sat Dec  9 2006 Luke Macken <lmacken@redhat.com> 0.9.1-2
+- Rebuild for python 2.5
+
+* Fri Nov 24 2006 Luke Macken <lmacken@redhat.com> 0.9.1-1
+- 0.9.1
+
+* Fri Sep  8 2006 Luke Macken <lmacken@redhat.com> 0.9.0-1
+- 0.9.0
+
+* Wed Apr 19 2006 Ignacio Vazquez-Abrams <ivazquez@ivazquez.net> 0.8.7.2-1
+- Initial RPM release