python3-babel: bumped for python 3.9

This commit is contained in:
Tim Biermann 2020-10-17 10:40:39 +00:00
parent 68e48d2e94
commit a58baf09bd
Signed by: tb
GPG Key ID: 42F8B4E30B673606
6 changed files with 1107 additions and 853 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,8 @@
untrusted comment: verify with /etc/ports/contrib.pub
RWSagIOpLGJF34eV1JdtyOrkNA8OBfDipGXHh44lX5GG1SMdwjKJ51b+igWw6Xkes9jQ/r3SJpT+o+ycbRHHWm1ovnAJIx2OjAU=
SHA256 (Pkgfile) = ae46657ad12c4bbc0eee4940022dd74f792495a34c36e75ec7133589d8d22b61
SHA256 (.footprint) = a96cba421200fea53b0e6fa7586017ab053cc088e1c6eb293299300294a2ff07
RWSagIOpLGJF38+xpkrGoSnM1V7IZt/EeaHxCF1doNQhFW3R45FVztiHWA6tIysSHxpFSOa2HesKy3+7SZDuml1XHmOzgLTbdQk=
SHA256 (Pkgfile) = 77347cfb1f54146861dc4ac64b4661cf65e0766434ea8873bffc02ce1f98db5f
SHA256 (.footprint) = 862f0d5e1f8afa5a91e17a2774f3be1bac0ea1ce85564ce626c96f8dd2a43534
SHA256 (python3-babel-2.8.0.tar.gz) = 2d4d29e73e85afd10ff260579303b5479b332eadc393663089dceb14ff6f8b9c
SHA256 (cldr-common-36.0.zip) = 07279e56c1f4266d140b907ef3ec379dce0a99542303a9628562ac5fe460ba43
SHA256 (0001-py39.patch) = 4baa6c5b336a357e39402c4b9ec8badcbb5c1eb75481f7c20a36e85461f8a3d4
SHA256 (0002-py39.patch) = 9196e74a2f53bc29ce7674f949c2345891632a6423284d47f73d86773a8b287d

View File

@ -0,0 +1,101 @@
From 167b71421f113e2210e4deefef5020402492e5be Mon Sep 17 00:00:00 2001
From: Felix Schwarz <felix.schwarz@oss.schwarz.eu>
Date: Tue, 5 May 2020 09:58:01 +0200
Subject: [PATCH] stop using deprecated ElementTree methods "getchildren()" and
"getiterator()"
Both methods were removed in Python 3.9 as mentioned in the release notes:
> Methods getchildren() and getiterator() of classes ElementTree and Element in
> the ElementTree module have been removed. They were deprecated in Python 3.2.
> Use iter(x) or list(x) instead of x.getchildren() and x.iter() or
> list(x.iter()) instead of x.getiterator().
---
scripts/import_cldr.py | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/scripts/import_cldr.py b/scripts/import_cldr.py
index 8993b68e..2ed3af91 100755
--- a/scripts/import_cldr.py
+++ b/scripts/import_cldr.py
@@ -598,7 +598,7 @@ def parse_calendar_months(data, calendar):
for width in ctxt.findall('monthWidth'):
width_type = width.attrib['type']
widths = ctxts.setdefault(width_type, {})
- for elem in width.getiterator():
+ for elem in width.iter():
if elem.tag == 'month':
_import_type_text(widths, elem, int(elem.attrib['type']))
elif elem.tag == 'alias':
@@ -616,7 +616,7 @@ def parse_calendar_days(data, calendar):
for width in ctxt.findall('dayWidth'):
width_type = width.attrib['type']
widths = ctxts.setdefault(width_type, {})
- for elem in width.getiterator():
+ for elem in width.iter():
if elem.tag == 'day':
_import_type_text(widths, elem, weekdays[elem.attrib['type']])
elif elem.tag == 'alias':
@@ -634,7 +634,7 @@ def parse_calendar_quarters(data, calendar):
for width in ctxt.findall('quarterWidth'):
width_type = width.attrib['type']
widths = ctxts.setdefault(width_type, {})
- for elem in width.getiterator():
+ for elem in width.iter():
if elem.tag == 'quarter':
_import_type_text(widths, elem, int(elem.attrib['type']))
elif elem.tag == 'alias':
@@ -649,7 +649,7 @@ def parse_calendar_eras(data, calendar):
for width in calendar.findall('eras/*'):
width_type = NAME_MAP[width.tag]
widths = eras.setdefault(width_type, {})
- for elem in width.getiterator():
+ for elem in width.iter():
if elem.tag == 'era':
_import_type_text(widths, elem, type=int(elem.attrib.get('type')))
elif elem.tag == 'alias':
@@ -676,7 +676,7 @@ def parse_calendar_periods(data, calendar):
def parse_calendar_date_formats(data, calendar):
date_formats = data.setdefault('date_formats', {})
for format in calendar.findall('dateFormats'):
- for elem in format.getiterator():
+ for elem in format.iter():
if elem.tag == 'dateFormatLength':
type = elem.attrib.get('type')
if _should_skip_elem(elem, type, date_formats):
@@ -696,7 +696,7 @@ def parse_calendar_date_formats(data, calendar):
def parse_calendar_time_formats(data, calendar):
time_formats = data.setdefault('time_formats', {})
for format in calendar.findall('timeFormats'):
- for elem in format.getiterator():
+ for elem in format.iter():
if elem.tag == 'timeFormatLength':
type = elem.attrib.get('type')
if _should_skip_elem(elem, type, time_formats):
@@ -717,7 +717,7 @@ def parse_calendar_datetime_skeletons(data, calendar):
datetime_formats = data.setdefault('datetime_formats', {})
datetime_skeletons = data.setdefault('datetime_skeletons', {})
for format in calendar.findall('dateTimeFormats'):
- for elem in format.getiterator():
+ for elem in format.iter():
if elem.tag == 'dateTimeFormatLength':
type = elem.attrib.get('type')
if _should_skip_elem(elem, type, datetime_formats):
@@ -880,7 +880,7 @@ def parse_interval_formats(data, tree):
interval_formats[None] = elem.text
elif elem.tag == "intervalFormatItem":
skel_data = interval_formats.setdefault(elem.attrib["id"], {})
- for item_sub in elem.getchildren():
+ for item_sub in elem:
if item_sub.tag == "greatestDifference":
skel_data[item_sub.attrib["id"]] = split_interval_pattern(item_sub.text)
else:
@@ -903,7 +903,7 @@ def parse_currency_formats(data, tree):
type = '%s:%s' % (type, curr_length_type)
if _should_skip_elem(elem, type, currency_formats):
continue
- for child in elem.getiterator():
+ for child in elem.iter():
if child.tag == 'alias':
currency_formats[type] = Alias(
_translate_alias(['currency_formats', elem.attrib['type']],

View File

@ -0,0 +1,68 @@
From 7bdaa28a55e8d8228d5434effa4b1473ab7b3669 Mon Sep 17 00:00:00 2001
From: Felix Schwarz <felix.schwarz@oss.schwarz.eu>
Date: Tue, 5 May 2020 08:05:56 +0000
Subject: [PATCH] fix tests when using Python 3.9a6
In Python 3.9a6 integer values for future flags were changed to prevent
collision with compiler flags. We need to retrieve these at runtime so
the test suite works with Python <= 3.8 as well as Python 3.9.
---
tests/test_util.py | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/tests/test_util.py b/tests/test_util.py
index a6a4450c..b9343aaa 100644
--- a/tests/test_util.py
+++ b/tests/test_util.py
@@ -11,6 +11,7 @@
# individuals. For the exact contribution history, see the revision
# history and logs, available at http://babel.edgewall.org/log/.
+import __future__
import unittest
import pytest
@@ -20,6 +21,12 @@
from babel.util import parse_future_flags
+class _FF:
+ division = __future__.division.compiler_flag
+ print_function = __future__.print_function.compiler_flag
+ with_statement = __future__.with_statement.compiler_flag
+ unicode_literals = __future__.unicode_literals.compiler_flag
+
def test_distinct():
assert list(util.distinct([1, 2, 1, 3, 4, 4])) == [1, 2, 3, 4]
assert list(util.distinct('foobar')) == ['f', 'o', 'b', 'a', 'r']
@@ -70,25 +77,25 @@ def test_parse_encoding_non_ascii():
from __future__ import print_function,
division, with_statement,
unicode_literals
-''', 0x10000 | 0x2000 | 0x8000 | 0x20000),
+''', _FF.print_function | _FF.division | _FF.with_statement | _FF.unicode_literals),
('''
from __future__ import print_function, division
print('hello')
-''', 0x10000 | 0x2000),
+''', _FF.print_function | _FF.division),
('''
from __future__ import print_function, division, unknown,,,,,
print 'hello'
-''', 0x10000 | 0x2000),
+''', _FF.print_function | _FF.division),
('''
from __future__ import (
print_function,
division)
-''', 0x10000 | 0x2000),
+''', _FF.print_function | _FF.division),
('''
from __future__ import \\
print_function, \\
division
-''', 0x10000 | 0x2000),
+''', _FF.print_function | _FF.division),
])
def test_parse_future(source, result):
fp = BytesIO(source.encode('latin-1'))

View File

@ -9,7 +9,8 @@ release=1
cldrver=36.0 # $SRC/babel-$version/scripts/download_import_cldr.py
source=(https://github.com/python-babel/babel/archive/v$version/$name-$version.tar.gz
https://unicode.org/Public/cldr/${cldrver::2}/cldr-common-$cldrver.zip)
https://unicode.org/Public/cldr/${cldrver::2}/cldr-common-$cldrver.zip
0001-py39.patch 0002-py39.patch)
unpack_source() {
for file in ${source[@]}; do
@ -27,6 +28,8 @@ unpack_source() {
build() {
cd babel-$version
patch -Np1 -i $SRC/0001-py39.patch
patch -Np1 -i $SRC/0002-py39.patch
python3 setup.py import_cldr
python3 setup.py build
python3 setup.py install --root=$PKG \

View File

@ -0,0 +1,80 @@
From 2a826bb1ad9996a1c1e2d3e86a493d01d7f12c09 Mon Sep 17 00:00:00 2001
From: Felix Schwarz <felix.schwarz@oss.schwarz.eu>
Date: Tue, 5 May 2020 21:32:52 +0000
Subject: [PATCH] simplify iteration code in "import_cldr.py"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
As Miro Hrončok pointed out we don't need ".iter()" in the script.
---
scripts/import_cldr.py | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/scripts/import_cldr.py b/scripts/import_cldr.py
index 2ed3af91..7ea6481a 100755
--- a/scripts/import_cldr.py
+++ b/scripts/import_cldr.py
@@ -598,7 +598,7 @@ def parse_calendar_months(data, calendar):
for width in ctxt.findall('monthWidth'):
width_type = width.attrib['type']
widths = ctxts.setdefault(width_type, {})
- for elem in width.iter():
+ for elem in width:
if elem.tag == 'month':
_import_type_text(widths, elem, int(elem.attrib['type']))
elif elem.tag == 'alias':
@@ -616,7 +616,7 @@ def parse_calendar_days(data, calendar):
for width in ctxt.findall('dayWidth'):
width_type = width.attrib['type']
widths = ctxts.setdefault(width_type, {})
- for elem in width.iter():
+ for elem in width:
if elem.tag == 'day':
_import_type_text(widths, elem, weekdays[elem.attrib['type']])
elif elem.tag == 'alias':
@@ -634,7 +634,7 @@ def parse_calendar_quarters(data, calendar):
for width in ctxt.findall('quarterWidth'):
width_type = width.attrib['type']
widths = ctxts.setdefault(width_type, {})
- for elem in width.iter():
+ for elem in width:
if elem.tag == 'quarter':
_import_type_text(widths, elem, int(elem.attrib['type']))
elif elem.tag == 'alias':
@@ -649,7 +649,7 @@ def parse_calendar_eras(data, calendar):
for width in calendar.findall('eras/*'):
width_type = NAME_MAP[width.tag]
widths = eras.setdefault(width_type, {})
- for elem in width.iter():
+ for elem in width:
if elem.tag == 'era':
_import_type_text(widths, elem, type=int(elem.attrib.get('type')))
elif elem.tag == 'alias':
@@ -676,7 +676,7 @@ def parse_calendar_periods(data, calendar):
def parse_calendar_date_formats(data, calendar):
date_formats = data.setdefault('date_formats', {})
for format in calendar.findall('dateFormats'):
- for elem in format.iter():
+ for elem in format:
if elem.tag == 'dateFormatLength':
type = elem.attrib.get('type')
if _should_skip_elem(elem, type, date_formats):
@@ -696,7 +696,7 @@ def parse_calendar_date_formats(data, calendar):
def parse_calendar_time_formats(data, calendar):
time_formats = data.setdefault('time_formats', {})
for format in calendar.findall('timeFormats'):
- for elem in format.iter():
+ for elem in format:
if elem.tag == 'timeFormatLength':
type = elem.attrib.get('type')
if _should_skip_elem(elem, type, time_formats):
@@ -717,7 +717,7 @@ def parse_calendar_datetime_skeletons(data, calendar):
datetime_formats = data.setdefault('datetime_formats', {})
datetime_skeletons = data.setdefault('datetime_skeletons', {})
for format in calendar.findall('dateTimeFormats'):
- for elem in format.iter():
+ for elem in format:
if elem.tag == 'dateTimeFormatLength':
type = elem.attrib.get('type')
if _should_skip_elem(elem, type, datetime_formats):