commit 49e00c83b85aafb4d813cbc5f9474a991da013d0 Author: MSVSphere Packaging Team Date: Tue Nov 26 19:02:13 2024 +0300 import python-tornado-6.3.3-5.el10 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c30c2f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/tornado-6.3.3.tar.gz diff --git a/.python-tornado.metadata b/.python-tornado.metadata new file mode 100644 index 0000000..d35cbac --- /dev/null +++ b/.python-tornado.metadata @@ -0,0 +1 @@ +4db49c4d5570e6fdc7ec845335bb341ebd5346a7 SOURCES/tornado-6.3.3.tar.gz diff --git a/SOURCES/Do-not-turn-DeprecationWarning-into-Exception.patch b/SOURCES/Do-not-turn-DeprecationWarning-into-Exception.patch new file mode 100644 index 0000000..af56162 --- /dev/null +++ b/SOURCES/Do-not-turn-DeprecationWarning-into-Exception.patch @@ -0,0 +1,12 @@ +diff --git a/tornado/test/runtests.py b/tornado/test/runtests.py +index 6075b1e..dc4fb89 100644 +--- a/tornado/test/runtests.py ++++ b/tornado/test/runtests.py +@@ -123,7 +123,6 @@ def main(): + # Tornado generally shouldn't use anything deprecated, but some of + # our dependencies do (last match wins). + warnings.filterwarnings("ignore", category=DeprecationWarning) +- warnings.filterwarnings("error", category=DeprecationWarning, module=r"tornado\..*") + warnings.filterwarnings("ignore", category=PendingDeprecationWarning) + warnings.filterwarnings( + "error", category=PendingDeprecationWarning, module=r"tornado\..*" diff --git a/SOURCES/python-tornado-Python-3.12.patch b/SOURCES/python-tornado-Python-3.12.patch new file mode 100644 index 0000000..8ff07b1 --- /dev/null +++ b/SOURCES/python-tornado-Python-3.12.patch @@ -0,0 +1,404 @@ +diff --git a/requirements.txt b/requirements.txt +index 349db21..e96c870 100644 +--- a/requirements.txt ++++ b/requirements.txt +@@ -12,7 +12,7 @@ black==22.12.0 + # via -r requirements.in + build==0.10.0 + # via pip-tools +-cachetools==5.2.1 ++cachetools==5.3.1 + # via tox + certifi==2022.12.7 + # via requests +@@ -32,7 +32,7 @@ docutils==0.17.1 + # via + # sphinx + # sphinx-rtd-theme +-filelock==3.9.0 ++filelock==3.12.0 + # via + # tox + # virtualenv +@@ -54,7 +54,7 @@ mypy-extensions==0.4.3 + # via + # black + # mypy +-packaging==23.0 ++packaging==23.1 + # via + # build + # pyproject-api +@@ -64,7 +64,7 @@ pathspec==0.10.3 + # via black + pip-tools==6.12.1 + # via -r requirements.in +-platformdirs==2.6.2 ++platformdirs==3.5.1 + # via + # black + # tox +@@ -77,7 +77,7 @@ pyflakes==3.0.1 + # via flake8 + pygments==2.14.0 + # via sphinx +-pyproject-api==1.5.0 ++pyproject-api==1.5.1 + # via tox + pyproject-hooks==1.0.0 + # via build +@@ -115,7 +115,7 @@ tomli==2.0.1 + # mypy + # pyproject-api + # tox +-tox==4.3.5 ++tox==4.6.0 + # via -r requirements.in + types-pycurl==7.45.2.0 + # via -r requirements.in +@@ -123,7 +123,7 @@ typing-extensions==4.4.0 + # via mypy + urllib3==1.26.14 + # via requests +-virtualenv==20.17.1 ++virtualenv==20.23.0 + # via tox + wheel==0.38.4 + # via pip-tools +diff --git a/tornado/httputil.py b/tornado/httputil.py +index 9c341d4..b21d804 100644 +--- a/tornado/httputil.py ++++ b/tornado/httputil.py +@@ -856,7 +856,8 @@ def format_timestamp( + + The argument may be a numeric timestamp as returned by `time.time`, + a time tuple as returned by `time.gmtime`, or a `datetime.datetime` +- object. ++ object. Naive `datetime.datetime` objects are assumed to represent ++ UTC; aware objects are converted to UTC before formatting. + + >>> format_timestamp(1359312200) + 'Sun, 27 Jan 2013 18:43:20 GMT' +diff --git a/tornado/locale.py b/tornado/locale.py +index 55072af..c552670 100644 +--- a/tornado/locale.py ++++ b/tornado/locale.py +@@ -333,7 +333,7 @@ class Locale(object): + shorter: bool = False, + full_format: bool = False, + ) -> str: +- """Formats the given date (which should be GMT). ++ """Formats the given date. + + By default, we return a relative time (e.g., "2 minutes ago"). You + can return an absolute date string with ``relative=False``. +@@ -343,10 +343,16 @@ class Locale(object): + + This method is primarily intended for dates in the past. + For dates in the future, we fall back to full format. ++ ++ .. versionchanged:: 6.4 ++ Aware `datetime.datetime` objects are now supported (naive ++ datetimes are still assumed to be UTC). + """ + if isinstance(date, (int, float)): +- date = datetime.datetime.utcfromtimestamp(date) +- now = datetime.datetime.utcnow() ++ date = datetime.datetime.fromtimestamp(date, datetime.timezone.utc) ++ if date.tzinfo is None: ++ date = date.replace(tzinfo=datetime.timezone.utc) ++ now = datetime.datetime.now(datetime.timezone.utc) + if date > now: + if relative and (date - now).seconds < 60: + # Due to click skew, things are some things slightly +diff --git a/tornado/test/httpclient_test.py b/tornado/test/httpclient_test.py +index a71ec0a..a41040e 100644 +--- a/tornado/test/httpclient_test.py ++++ b/tornado/test/httpclient_test.py +@@ -28,7 +28,7 @@ from tornado.iostream import IOStream + from tornado.log import gen_log, app_log + from tornado import netutil + from tornado.testing import AsyncHTTPTestCase, bind_unused_port, gen_test, ExpectLog +-from tornado.test.util import skipOnTravis ++from tornado.test.util import skipOnTravis, ignore_deprecation + from tornado.web import Application, RequestHandler, url + from tornado.httputil import format_timestamp, HTTPHeaders + +@@ -887,7 +887,15 @@ class HTTPRequestTestCase(unittest.TestCase): + self.assertEqual(request.body, utf8("foo")) + + def test_if_modified_since(self): +- http_date = datetime.datetime.utcnow() ++ http_date = datetime.datetime.now(datetime.timezone.utc) ++ request = HTTPRequest("http://example.com", if_modified_since=http_date) ++ self.assertEqual( ++ request.headers, {"If-Modified-Since": format_timestamp(http_date)} ++ ) ++ ++ def test_if_modified_since_naive_deprecated(self): ++ with ignore_deprecation(): ++ http_date = datetime.datetime.utcnow() + request = HTTPRequest("http://example.com", if_modified_since=http_date) + self.assertEqual( + request.headers, {"If-Modified-Since": format_timestamp(http_date)} +diff --git a/tornado/test/httputil_test.py b/tornado/test/httputil_test.py +index 8424491..aa9b6ee 100644 +--- a/tornado/test/httputil_test.py ++++ b/tornado/test/httputil_test.py +@@ -13,6 +13,7 @@ from tornado.httputil import ( + from tornado.escape import utf8, native_str + from tornado.log import gen_log + from tornado.testing import ExpectLog ++from tornado.test.util import ignore_deprecation + + import copy + import datetime +@@ -412,8 +413,29 @@ class FormatTimestampTest(unittest.TestCase): + self.assertEqual(9, len(tup)) + self.check(tup) + +- def test_datetime(self): +- self.check(datetime.datetime.utcfromtimestamp(self.TIMESTAMP)) ++ def test_utc_naive_datetime(self): ++ self.check( ++ datetime.datetime.fromtimestamp( ++ self.TIMESTAMP, datetime.timezone.utc ++ ).replace(tzinfo=None) ++ ) ++ ++ def test_utc_naive_datetime_deprecated(self): ++ with ignore_deprecation(): ++ self.check(datetime.datetime.utcfromtimestamp(self.TIMESTAMP)) ++ ++ def test_utc_aware_datetime(self): ++ self.check( ++ datetime.datetime.fromtimestamp(self.TIMESTAMP, datetime.timezone.utc) ++ ) ++ ++ def test_other_aware_datetime(self): ++ # Other timezones are ignored; the timezone is always printed as GMT ++ self.check( ++ datetime.datetime.fromtimestamp( ++ self.TIMESTAMP, datetime.timezone(datetime.timedelta(hours=-4)) ++ ) ++ ) + + + # HTTPServerRequest is mainly tested incidentally to the server itself, +diff --git a/tornado/test/locale_test.py b/tornado/test/locale_test.py +index ee74cb0..a2e0872 100644 +--- a/tornado/test/locale_test.py ++++ b/tornado/test/locale_test.py +@@ -91,45 +91,55 @@ class EnglishTest(unittest.TestCase): + locale.format_date(date, full_format=True), "April 28, 2013 at 6:35 pm" + ) + +- now = datetime.datetime.utcnow() +- +- self.assertEqual( +- locale.format_date(now - datetime.timedelta(seconds=2), full_format=False), +- "2 seconds ago", +- ) +- self.assertEqual( +- locale.format_date(now - datetime.timedelta(minutes=2), full_format=False), +- "2 minutes ago", +- ) +- self.assertEqual( +- locale.format_date(now - datetime.timedelta(hours=2), full_format=False), +- "2 hours ago", +- ) +- +- self.assertEqual( +- locale.format_date( +- now - datetime.timedelta(days=1), full_format=False, shorter=True +- ), +- "yesterday", +- ) +- +- date = now - datetime.timedelta(days=2) +- self.assertEqual( +- locale.format_date(date, full_format=False, shorter=True), +- locale._weekdays[date.weekday()], +- ) +- +- date = now - datetime.timedelta(days=300) +- self.assertEqual( +- locale.format_date(date, full_format=False, shorter=True), +- "%s %d" % (locale._months[date.month - 1], date.day), +- ) +- +- date = now - datetime.timedelta(days=500) +- self.assertEqual( +- locale.format_date(date, full_format=False, shorter=True), +- "%s %d, %d" % (locale._months[date.month - 1], date.day, date.year), +- ) ++ aware_dt = datetime.datetime.now(datetime.timezone.utc) ++ naive_dt = aware_dt.replace(tzinfo=None) ++ for name, now in {"aware": aware_dt, "naive": naive_dt}.items(): ++ with self.subTest(dt=name): ++ self.assertEqual( ++ locale.format_date( ++ now - datetime.timedelta(seconds=2), full_format=False ++ ), ++ "2 seconds ago", ++ ) ++ self.assertEqual( ++ locale.format_date( ++ now - datetime.timedelta(minutes=2), full_format=False ++ ), ++ "2 minutes ago", ++ ) ++ self.assertEqual( ++ locale.format_date( ++ now - datetime.timedelta(hours=2), full_format=False ++ ), ++ "2 hours ago", ++ ) ++ ++ self.assertEqual( ++ locale.format_date( ++ now - datetime.timedelta(days=1), ++ full_format=False, ++ shorter=True, ++ ), ++ "yesterday", ++ ) ++ ++ date = now - datetime.timedelta(days=2) ++ self.assertEqual( ++ locale.format_date(date, full_format=False, shorter=True), ++ locale._weekdays[date.weekday()], ++ ) ++ ++ date = now - datetime.timedelta(days=300) ++ self.assertEqual( ++ locale.format_date(date, full_format=False, shorter=True), ++ "%s %d" % (locale._months[date.month - 1], date.day), ++ ) ++ ++ date = now - datetime.timedelta(days=500) ++ self.assertEqual( ++ locale.format_date(date, full_format=False, shorter=True), ++ "%s %d, %d" % (locale._months[date.month - 1], date.day, date.year), ++ ) + + def test_friendly_number(self): + locale = tornado.locale.get("en_US") +diff --git a/tornado/test/web_test.py b/tornado/test/web_test.py +index c2d057c..a9bce04 100644 +--- a/tornado/test/web_test.py ++++ b/tornado/test/web_test.py +@@ -404,10 +404,10 @@ class CookieTest(WebTestCase): + match = re.match("foo=bar; expires=(?P.+); Path=/", header) + assert match is not None + +- expires = datetime.datetime.utcnow() + datetime.timedelta(days=10) +- parsed = email.utils.parsedate(match.groupdict()["expires"]) +- assert parsed is not None +- header_expires = datetime.datetime(*parsed[:6]) ++ expires = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta( ++ days=10 ++ ) ++ header_expires = email.utils.parsedate_to_datetime(match.groupdict()["expires"]) + self.assertTrue(abs((expires - header_expires).total_seconds()) < 10) + + def test_set_cookie_false_flags(self): +@@ -1697,11 +1697,10 @@ class DateHeaderTest(SimpleHandlerTestCase): + + def test_date_header(self): + response = self.fetch("/") +- parsed = email.utils.parsedate(response.headers["Date"]) +- assert parsed is not None +- header_date = datetime.datetime(*parsed[:6]) ++ header_date = email.utils.parsedate_to_datetime(response.headers["Date"]) + self.assertTrue( +- header_date - datetime.datetime.utcnow() < datetime.timedelta(seconds=2) ++ header_date - datetime.datetime.now(datetime.timezone.utc) ++ < datetime.timedelta(seconds=2) + ) + + +@@ -3010,10 +3009,12 @@ class XSRFCookieKwargsTest(SimpleHandlerTestCase): + match = re.match(".*; expires=(?P.+);.*", header) + assert match is not None + +- expires = datetime.datetime.utcnow() + datetime.timedelta(days=2) +- parsed = email.utils.parsedate(match.groupdict()["expires"]) +- assert parsed is not None +- header_expires = datetime.datetime(*parsed[:6]) ++ expires = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta( ++ days=2 ++ ) ++ header_expires = email.utils.parsedate_to_datetime(match.groupdict()["expires"]) ++ if header_expires.tzinfo is None: ++ header_expires = header_expires.replace(tzinfo=datetime.timezone.utc) + self.assertTrue(abs((expires - header_expires).total_seconds()) < 10) + + +diff --git a/tornado/web.py b/tornado/web.py +index 5651404..439e02c 100644 +--- a/tornado/web.py ++++ b/tornado/web.py +@@ -647,7 +647,9 @@ class RequestHandler(object): + if domain: + morsel["domain"] = domain + if expires_days is not None and not expires: +- expires = datetime.datetime.utcnow() + datetime.timedelta(days=expires_days) ++ expires = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta( ++ days=expires_days ++ ) + if expires: + morsel["expires"] = httputil.format_timestamp(expires) + if path: +@@ -698,7 +700,9 @@ class RequestHandler(object): + raise TypeError( + f"clear_cookie() got an unexpected keyword argument '{excluded_arg}'" + ) +- expires = datetime.datetime.utcnow() - datetime.timedelta(days=365) ++ expires = datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta( ++ days=365 ++ ) + self.set_cookie(name, value="", expires=expires, **kwargs) + + def clear_all_cookies(self, **kwargs: Any) -> None: +@@ -2812,12 +2816,12 @@ class StaticFileHandler(RequestHandler): + # content has not been modified + ims_value = self.request.headers.get("If-Modified-Since") + if ims_value is not None: +- date_tuple = email.utils.parsedate(ims_value) +- if date_tuple is not None: +- if_since = datetime.datetime(*date_tuple[:6]) +- assert self.modified is not None +- if if_since >= self.modified: +- return True ++ if_since = email.utils.parsedate_to_datetime(ims_value) ++ if if_since.tzinfo is None: ++ if_since = if_since.replace(tzinfo=datetime.timezone.utc) ++ assert self.modified is not None ++ if if_since >= self.modified: ++ return True + + return False + +@@ -2981,6 +2985,10 @@ class StaticFileHandler(RequestHandler): + object or None. + + .. versionadded:: 3.1 ++ ++ .. versionchanged:: 6.4 ++ Now returns an aware datetime object instead of a naive one. ++ Subclasses that override this method may return either kind. + """ + stat_result = self._stat() + # NOTE: Historically, this used stat_result[stat.ST_MTIME], +@@ -2991,7 +2999,9 @@ class StaticFileHandler(RequestHandler): + # consistency with the past (and because we have a unit test + # that relies on this), we truncate the float here, although + # I'm not sure that's the right thing to do. +- modified = datetime.datetime.utcfromtimestamp(int(stat_result.st_mtime)) ++ modified = datetime.datetime.fromtimestamp( ++ int(stat_result.st_mtime), datetime.timezone.utc ++ ) + return modified + + def get_content_type(self) -> str: diff --git a/SPECS/python-tornado.spec b/SPECS/python-tornado.spec new file mode 100644 index 0000000..42b79fb --- /dev/null +++ b/SPECS/python-tornado.spec @@ -0,0 +1,370 @@ +%global srcname tornado +%global common_description %{expand: +Tornado is an open source version of the scalable, non-blocking web +server and tools. + +The framework is distinct from most mainstream web server frameworks +(and certainly most Python frameworks) because it is non-blocking and +reasonably fast. Because it is non-blocking and uses epoll, it can +handle thousands of simultaneous standing connections, which means it is +ideal for real-time web services.} + +Name: python-%{srcname} +Version: 6.3.3 +Release: 5%{?dist} +Summary: Scalable, non-blocking web server and tools + +License: Apache-2.0 +URL: https://www.tornadoweb.org +Source0: https://github.com/tornadoweb/tornado/archive/v%{version}/%{srcname}-%{version}.tar.gz + +# Do not turn DeprecationWarning in tornado module into Exception +# fixes FTBFS with Python 3.8 +Patch1: Do-not-turn-DeprecationWarning-into-Exception.patch +# Fixes for Python 3.12 - rebased +# https://github.com/tornadoweb/tornado/pull/3288 +Patch2: python-tornado-Python-3.12.patch + +BuildRequires: gcc +BuildRequires: python3-devel + +%description %{common_description} + +%package -n python3-%{srcname} +Summary: %{summary} + +%description -n python3-%{srcname} %{common_description} + +%package doc +Summary: Examples for %{name} + +%description doc %{common_description} + +This package contains some example applications. + +%prep +%autosetup -p1 -n %{srcname}-%{version} + +%generate_buildrequires +%pyproject_buildrequires + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files %{srcname} + +%check +# Skip the same timing-related tests that upstream skips when run in Travis CI. +# https://github.com/tornadoweb/tornado/commit/abc5780a06a1edd0177a399a4dd4f39497cb0c57 +export TRAVIS=true + +# Increase timeout for tests on riscv64 +%ifarch riscv64 +export ASYNC_TEST_TIMEOUT=80 +%endif + +%{py3_test_envvars} %{python3} -m tornado.test + +%files -n python3-%{srcname} -f %{pyproject_files} +%doc README.rst + +%files doc +%license LICENSE +%doc demos + +%changelog +* Mon Jun 24 2024 Troy Dawson - 6.3.3-5 +- Bump release for June 2024 mass rebuild + +* Fri Jun 07 2024 Richard W.M. Jones - 6.3.3-4 +- Increase timeout for tests on riscv64 + +* Fri Jan 26 2024 Fedora Release Engineering - 6.3.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Jan 22 2024 Fedora Release Engineering - 6.3.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Aug 11 2023 Gwyn Ciesla - 6.3.3-1 +- 6.3.3 + +* Fri Jul 21 2023 Fedora Release Engineering - 6.3.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jun 22 2023 Orion Poplawski - 6.3.2-4 +- Add upstream patch for Python 3.12 support + +* Tue Jun 13 2023 Python Maint - 6.3.2-3 +- Rebuilt for Python 3.12 + +* Tue May 23 2023 Yaakov Selkowitz - 6.3.2-2 +- Avoid tox dependency + +* Tue May 16 2023 Orion Poplawski - 6.3.2-1 +- Update to 6.3.2 + +* Wed Mar 08 2023 Gwyn Ciesla - 6.2.0-4 +- migrated to SPDX license + +* Fri Jan 20 2023 Fedora Release Engineering - 6.2.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Jul 22 2022 Fedora Release Engineering - 6.2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jul 07 2022 Carl George - 6.2.0-1 +- Latest upstream, resolves rhbz#1883858 + +* Mon Jun 13 2022 Python Maint - 6.1.0-7 +- Rebuilt for Python 3.11 + +* Tue Feb 08 2022 Carl George - 6.1.0-6 +- Convert to pyproject macros + +* Fri Jan 21 2022 Fedora Release Engineering - 6.1.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 6.1.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Jun 03 2021 Python Maint - 6.1.0-3 +- Rebuilt for Python 3.10 + +* Wed Jan 27 2021 Fedora Release Engineering - 6.1.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Nov 03 2020 Fabian Affolter -6.1.0-1 +- Update to latest upstream release 6.1.0 (#1883858) + +* Sun Sep 13 2020 Fabian Affolter - 6.0.4-1 +- Update to latest upstream release 6.0.3 (#1809858) + +* Wed Jul 29 2020 Fedora Release Engineering - 6.0.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Sat May 23 2020 Miro Hrončok - 6.0.3-2 +- Rebuilt for Python 3.9 + +* Mon Feb 24 2020 Peter Robinson - 6.0.3-1 +- Update to 6.0.3 + +* Thu Jan 30 2020 Fedora Release Engineering - 6.0.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Oct 03 2019 Miro Hrončok - 6.0.2-4 +- Rebuilt for Python 3.8.0rc1 (#1748018) + +* Thu Aug 15 2019 Miro Hrončok - 6.0.2-3 +- Rebuilt for Python 3.8 + +* Fri Jul 26 2019 Fedora Release Engineering - 6.0.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon Jun 03 2019 Miro Hrončok - 6.0.2-1 +- Update to 6.0.2 (#1600318) + +* Thu May 16 2019 Lumír Balhar - 5.1.1-2 +- New patch to not turn DeprecationWarning in tornado module into Exception +- Fixes FTBFS with Python 3.8 + +* Wed Mar 27 2019 Miro Hrončok - 5.1.1-1 +- Update to 5.1.1 +- Fix SyntaxWarnings (turned into SyntaxErrors) on Python 3.8 + +* Sat Feb 02 2019 Fedora Release Engineering - 5.0.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Jul 14 2018 Fedora Release Engineering - 5.0.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Jun 15 2018 Miro Hrončok - 5.0.2-3 +- Rebuilt for Python 3.7 + +* Sat May 19 2018 Miro Hrončok - 5.0.2-2 +- Require python2-futures + +* Fri May 18 2018 Charalampos Stratakis - 5.0.2-1 +- Update to 5.0.2 + +* Thu Apr 26 2018 Lumír Balhar - 4.5.2-5 +- New conditionals for Python 2 +- Drop Python 3 conditional + +* Mon Feb 12 2018 Iryna Shcherbina - 4.5.2-4 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Fri Feb 09 2018 Fedora Release Engineering - 4.5.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Nov 07 2017 Charalampos Stratakis - 4.5.2-2 +- Fix dist tag and bump release for rebuild + +* Tue Nov 07 2017 Charalampos Stratakis - 4.5.2-1 +- Update to 4.5.2 + +* Fri Sep 29 2017 Troy Dawson - 4.5.1-4 +- Cleanup spec file conditionals + +* Thu Aug 03 2017 Fedora Release Engineering - 4.5.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 4.5.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Apr 20 2017 Orion Poplawski - 4.5.1-1 +- Update to 4.5.1 + +* Mon Apr 17 2017 Orion Poplawski - 4.5-1 +- Update to 4.5 + +* Sat Feb 11 2017 Fedora Release Engineering - 4.4.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Dec 13 2016 Stratakis Charalampos - 4.4.2-2 +- Rebuild for Python 3.6 +- Added patch to fix Python 3.6 test failures + +* Sun Oct 2 2016 Orion Poplawski - 4.4.2-1 +- Update to 4.4.2 + +* Thu Sep 15 2016 Orion Poplawski - 4.4.1-1 +- Update to 4.4.1 +- Drop requires patch, fixed upstream + +* Thu Sep 15 2016 Orion Poplawski - 4.3-5 +- Remove backports.ssl_match_hostname from python2-tornado egg requires (bug #1372887) + +* Thu Sep 15 2016 Orion Poplawski - 4.3-4 +- Remove certifi from python2-tornado egg requires (bug #1372886) + +* Tue Jul 19 2016 Fedora Release Engineering - 4.3-3 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Mon Feb 22 2016 Orion Poplawski - 4.3-2 +- Properly build python2-tornado + +* Thu Feb 18 2016 Orion Poplawski - 4.3-1 +- Update to 4.3 +- Drop upstream patches + +* Thu Feb 04 2016 Fedora Release Engineering - 4.2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Nov 10 2015 Orion Poplawski - 4.2.1-3 +- Build python2 packages, drop separate python3 doc package + +* Wed Oct 14 2015 Robert Kuska - 4.2.1-2 +- Rebuilt for Python3.5 rebuild +- Add patch to use getfullargspec on python3 +- Add patch to fix failing tests with python3.5 + +* Fri Sep 18 2015 Orion Poplawski - 4.2.1-1 +- Update to 4.2.1 +- Modernize spec + +* Fri Jul 10 2015 Orion Poplawski - 4.1-3 +- Do not require python-backports-ssl_match_hostname for F22+ (bug #1231368) + +* Thu Jun 18 2015 Fedora Release Engineering - 4.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun Mar 1 2015 Orion Poplawski - 4.1-1 +- Update to 4.1 +- Modernize spec + +* Fri Dec 5 2014 Orion Poplawski - 3.2.1-4 +- Drop requires python-simplejson + +* Sun Aug 17 2014 Fedora Release Engineering - 3.2.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 3.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu May 22 2014 Thomas Spura - 3.2.1-1 +- update to 3.2.1 +- no noarch anymore +- remove defattr + +* Wed May 14 2014 Bohuslav Kabrda - 2.2.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Python_3.4 + +* Sun Aug 04 2013 Fedora Release Engineering - 2.2.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Fri Jun 14 2013 Thomas Spura - 2.2.1-5 +- remove rhel conditional for with_python3: + https://fedorahosted.org/fpc/ticket/200 + +* Thu Feb 14 2013 Fedora Release Engineering - 2.2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sat Aug 04 2012 David Malcolm - 2.2.1-3 +- rebuild for https://fedoraproject.org/wiki/Features/Python_3.3 + +* Sat Jul 21 2012 Fedora Release Engineering - 2.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sun May 20 2012 Thomas Spura - 2.2.1-1 +- update to upstream release 2.2.1 (fixes CVE-2012-2374) +- fix typo for epel6 macro bug #822972 (Florian La Roche) + +* Thu Feb 9 2012 Ionuț C. Arțăriși - 2.2-1 +- upgrade to upstream release 2.2 + +* Thu Feb 9 2012 Ionuț C. Arțăriși - 2.1.1-4 +- remove python3-simplejson dependency + +* Fri Jan 27 2012 Thomas Spura - 2.1.1-3 +- build python3 package + +* Sat Jan 14 2012 Fedora Release Engineering - 2.1.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Oct 25 2011 Ionuț C. Arțăriși - 2.1.1-1 +- new upstream version 2.1.1 +- remove double word in description and rearrange it (#715272) +- fixed removal of shebangs +- added %%check section to run unittests during package build + +* Tue Mar 29 2011 Ionuț C. Arțăriși - 1.2.1-1 +- new upstream version 1.2.1 + +* Wed Feb 09 2011 Fedora Release Engineering - 1.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Sep 8 2010 Ionuț C. Arțăriși - 1.1-1 +- new upstream release 1.1 + +* Tue Aug 17 2010 Ionuț Arțăriși - 1.0.1-1 +- new upstream bugfix release: 1.0.1 + +* Wed Aug 4 2010 Ionuț C. Arțăriși - 1.0-2 +- changed upstream source url + +* Wed Aug 4 2010 Ionuț C. Arțăriși - 1.0-1 +- new upstream release 1.0 +- there's no longer a problem with spurious permissions, so remove that fix + +* Thu Jul 22 2010 David Malcolm - 0.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Wed Oct 21 2009 Ionuț Arțăriși - 0.2-3 +- changed -doc package group to Documentation +- use global instead of define + +* Tue Oct 20 2009 Ionuț Arțăriși - 0.2-2 +- create -doc package for examples +- altered description to not include references to FriendFeed +- rename to python-tornado + +* Fri Sep 25 2009 Ionuț Arțăriși - 0.2-1 +- New upstream version +- Fixed macro usage and directory ownership in spec + +* Thu Sep 10 2009 Ionuț Arțăriși - 0.1-1 +- Initial release +