diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..05935074c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,27 @@ +name: CI +"on": + push: + branches: + - master + - '*-maint' + pull_request: + branches: + - master + - '*-maint' +jobs: + Build: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: "3.10" + cache: "pip" + cache-dependency-path: "**/setup.py" + - run: pip install build -e . + - run: make import-cldr + - run: python -m build + - uses: actions/upload-artifact@v3 + with: + name: dist + path: dist diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e346f04fb..49897129a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,9 +2,13 @@ name: Test on: push: - branches: [ master ] + branches: + - master + - '*-maint' pull_request: - branches: [ master ] + branches: + - master + - '*-maint' jobs: test: diff --git a/CHANGES.rst b/CHANGES.rst index 8ffd67328..d3b960811 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,6 +1,16 @@ Babel Changelog =============== +Version 2.10.3 +-------------- + +This is a bugfix release for Babel 2.10.2, which was mistakenly packaged with outdated locale data. + +Thanks to Michał Górny for pointing this out and Jun Omae for verifying. + +This and future Babel PyPI packages will be built by a more automated process, +which should make problems like this less likely to occur. + Version 2.10.2 -------------- diff --git a/Makefile b/Makefile index 8db98912c..114f0c753 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,4 @@ develop: tox-test: import-cldr tox -release: import-cldr - python scripts/make-release.py - -.PHONY: test develop tox-test clean-pyc clean-cldr import-cldr clean release clean-test-env standalone-test +.PHONY: test develop tox-test clean-pyc clean-cldr import-cldr clean clean-test-env standalone-test diff --git a/babel/__init__.py b/babel/__init__.py index 3d5b85412..081178a5c 100644 --- a/babel/__init__.py +++ b/babel/__init__.py @@ -20,4 +20,4 @@ negotiate_locale, parse_locale, get_locale_identifier -__version__ = '2.10.2' +__version__ = '2.10.3' diff --git a/scripts/make-release.py b/scripts/make-release.py deleted file mode 100755 index d8963f2cb..000000000 --- a/scripts/make-release.py +++ /dev/null @@ -1,155 +0,0 @@ -#!/usr/bin/env python -""" - make-release - ~~~~~~~~~~~~ - - Helper script that performs a release. Does pretty much everything - automatically for us. - - :copyright: (c) 2013 by Armin Ronacher. - :license: BSD, see LICENSE for more details. -""" -import sys -import os -import re -from datetime import datetime, date -from subprocess import Popen, PIPE - -_date_clean_re = re.compile(r'(\d+)(st|nd|rd|th)') - - -def parse_changelog(): - with open('CHANGES.rst') as f: - lineiter = iter(f) - for line in lineiter: - match = re.search(r'^Version\s+(.*)', line.strip()) - if match is None: - continue - version = match.group(1).strip() - if lineiter.next().count('-') != len(match.group(0)): - continue - while 1: - change_info = lineiter.next().strip() - if change_info: - break - - match = re.search(r'released on (\w+\s+\d+\w+\s+\d+)' - r'(?:, codename (.*))?', change_info, - flags=re.IGNORECASE) - if match is None: - continue - - datestr, codename = match.groups() - return version, parse_date(datestr), codename - - -def bump_version(version): - try: - parts = map(int, version.split('.')) - except ValueError: - fail('Current version is not numeric') - if parts[-1] != 0: - parts[-1] += 1 - else: - parts[0] += 1 - return '.'.join(map(str, parts)) - - -def parse_date(string): - string = _date_clean_re.sub(r'\1', string) - return datetime.strptime(string, '%B %d %Y') - - -def set_filename_version(filename, version_number, pattern): - changed = [] - - def inject_version(match): - before, old, after = match.groups() - changed.append(True) - return before + version_number + after - with open(filename) as f: - contents = re.sub(r"^(\s*%s\s*=\s*')(.+?)(')" % pattern, - inject_version, f.read(), - flags=re.DOTALL | re.MULTILINE) - - if not changed: - fail('Could not find %s in %s', pattern, filename) - - with open(filename, 'w') as f: - f.write(contents) - - -def set_init_version(version): - info('Setting __init__.py version to %s', version) - set_filename_version('babel/__init__.py', version, '__version__') - - -def set_setup_version(version): - info('Setting setup.py version to %s', version) - set_filename_version('setup.py', version, 'version') - - -def build_and_upload(): - Popen([sys.executable, 'setup.py', 'release', 'sdist', 'upload']).wait() - - -def fail(message, *args): - print >> sys.stderr, 'Error:', message % args - sys.exit(1) - - -def info(message, *args): - print >> sys.stderr, message % args - - -def get_git_tags(): - return set(Popen(['git', 'tag'], stdout=PIPE).communicate()[0].splitlines()) - - -def git_is_clean(): - return Popen(['git', 'diff', '--quiet']).wait() == 0 - - -def make_git_commit(message, *args): - message = message % args - Popen(['git', 'commit', '-am', message]).wait() - - -def make_git_tag(tag): - info('Tagging "%s"', tag) - Popen(['git', 'tag', tag]).wait() - - -def main(): - os.chdir(os.path.join(os.path.dirname(__file__), '..')) - - rv = parse_changelog() - if rv is None: - fail('Could not parse changelog') - - version, release_date, codename = rv - dev_version = bump_version(version) + '-dev' - - info('Releasing %s (codename %s, release date %s)', - version, codename, release_date.strftime('%d/%m/%Y')) - tags = get_git_tags() - - if version in tags: - fail('Version "%s" is already tagged', version) - if release_date.date() != date.today(): - fail('Release date is not today (%s != %s)') - - if not git_is_clean(): - fail('You have uncommitted changes in git') - - set_init_version(version) - set_setup_version(version) - make_git_commit('Bump version number to %s', version) - make_git_tag(version) - build_and_upload() - set_init_version(dev_version) - set_setup_version(dev_version) - - -if __name__ == '__main__': - main() diff --git a/setup.cfg b/setup.cfg index 87c8e963d..ac49ca54e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,3 @@ -[aliases] -release = sdist bdist_wheel - [tool:pytest] norecursedirs = venv* .* _* scripts {args} doctest_optionflags = ELLIPSIS NORMALIZE_WHITESPACE ALLOW_UNICODE IGNORE_EXCEPTION_DETAIL @@ -11,4 +8,4 @@ filterwarnings = ignore:babel.numbers.format_decimal:DeprecationWarning [metadata] -license_file = LICENSE +license_files = LICENSE