diff --git a/.coveragerc b/.coveragerc index a3d8ae65e..f98d8023f 100644 --- a/.coveragerc +++ b/.coveragerc @@ -2,4 +2,4 @@ exclude_lines = NotImplemented pragma: no cover - warnings.warn \ No newline at end of file + warnings.warn diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f9a7bee0b..1e8986179 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,6 +11,11 @@ on: - '*-maint' jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: pre-commit/action@v3.0.0 test: runs-on: ${{ matrix.os }} strategy: @@ -27,9 +32,11 @@ jobs: path: cldr key: cldr-${{ hashFiles('scripts/*cldr*') }} - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} + cache: "pip" + cache-dependency-path: "**/setup.py" - name: Install dependencies run: | python -m pip install --upgrade pip setuptools wheel diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0a345cee9..b61dac46b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,19 +1,18 @@ -- repo: https://github.com/pre-commit/pre-commit-hooks - sha: 97b88d9610bcc03982ddac33caba98bb2b751f5f +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 hooks: - - id: autopep8-wrapper - exclude: (docs/conf.py|tests/messages/data/) - - id: check-added-large-files - - id: check-docstring-first + - id: check-added-large-files + - id: check-docstring-first exclude: (docs/conf.py) - - id: check-json - - id: check-yaml - - id: debug-statements - - id: end-of-file-fixer - - id: flake8 - exclude: (docs/conf.py|babel/messages/__init__.py|babel/__init__.py|tests/messages/data|scripts/import_cldr.py) - - id: name-tests-test - args: ['--django'] + - id: check-json + - id: check-yaml + - id: debug-statements exclude: (tests/messages/data/) - - id: requirements-txt-fixer - - id: trailing-whitespace + - id: end-of-file-fixer + exclude: (tests/messages/data/) + - id: name-tests-test + args: [ '--django' ] + exclude: (tests/messages/data/) + - id: requirements-txt-fixer + - id: trailing-whitespace diff --git a/babel/messages/pofile.py b/babel/messages/pofile.py index a213b2237..b366ccb44 100644 --- a/babel/messages/pofile.py +++ b/babel/messages/pofile.py @@ -575,7 +575,7 @@ def _write_message(message, prefix=''): # if no sorting possible, leave unsorted. # (see issue #606) try: - locations = sorted(message.locations, + locations = sorted(message.locations, key=lambda x: (x[0], isinstance(x[1], int) and x[1] or -1)) except TypeError: # e.g. "TypeError: unorderable types: NoneType() < int()" locations = message.locations diff --git a/docs/installation.rst b/docs/installation.rst index c1b7ab9fe..26fe23a47 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -86,7 +86,7 @@ Get the git checkout in a new virtualenv and run in development mode:: Finished processing dependencies for Babel Make sure to not forget about the ``pip install pytz`` and ``import_cldr`` steps -because otherwise you will be missing the locale data. +because otherwise you will be missing the locale data. The custom setup command will download the most appropriate CLDR release from the official website and convert it for Babel but will not work without ``pytz``.