Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-aiohttp-jinja2 for 
openSUSE:Factory checked in at 2023-02-10 14:36:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-aiohttp-jinja2 (Old)
 and      /work/SRC/openSUSE:Factory/.python-aiohttp-jinja2.new.1848 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-aiohttp-jinja2"

Fri Feb 10 14:36:04 2023 rev:4 rq:1064213 version:1.5.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-aiohttp-jinja2/python-aiohttp-jinja2.changes  
    2022-05-05 23:07:41.309654300 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-aiohttp-jinja2.new.1848/python-aiohttp-jinja2.changes
    2023-02-10 14:36:14.826252799 +0100
@@ -1,0 +2,8 @@
+Fri Feb 10 10:29:21 UTC 2023 - Dirk Müller <[email protected]>
+
+- update to 1.5.1:
+  * Add support for Python 3.11.
+  * Drop support for decorating non-async functions with
+    @template (deprecated since 0.16).
+
+-------------------------------------------------------------------

Old:
----
  aiohttp-jinja2-1.5.tar.gz

New:
----
  aiohttp-jinja2-1.5.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-aiohttp-jinja2.spec ++++++
--- /var/tmp/diff_new_pack.eji3am/_old  2023-02-10 14:36:16.302261619 +0100
+++ /var/tmp/diff_new_pack.eji3am/_new  2023-02-10 14:36:16.326261762 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-aiohttp-jinja2
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python3-%{**}}
 %define skip_python2 1
 Name:           python-aiohttp-jinja2
-Version:        1.5
+Version:        1.5.1
 Release:        0
 Summary:        Jinja2 template renderer for aiohttp.web
 License:        Apache-2.0

++++++ aiohttp-jinja2-1.5.tar.gz -> aiohttp-jinja2-1.5.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/.codecov.yml 
new/aiohttp-jinja2-1.5.1/.codecov.yml
--- old/aiohttp-jinja2-1.5/.codecov.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/aiohttp-jinja2-1.5.1/.codecov.yml       2023-02-01 17:02:28.000000000 
+0100
@@ -0,0 +1,3 @@
+codecov:
+  notify:
+    after_n_builds: 10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/.github/dependabot.yml 
new/aiohttp-jinja2-1.5.1/.github/dependabot.yml
--- old/aiohttp-jinja2-1.5/.github/dependabot.yml       2021-08-21 
15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/.github/dependabot.yml     2023-02-01 
17:02:28.000000000 +0100
@@ -1,7 +1,11 @@
 version: 2
 updates:
-- package-ecosystem: pip
-  directory: "/"
-  schedule:
-    interval: daily
-  open-pull-requests-limit: 10
+  - package-ecosystem: pip
+    directory: "/"
+    schedule:
+      interval: daily
+
+  - package-ecosystem: "github-actions"
+    directory: "/"
+    schedule:
+      interval: "monthly"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/.github/workflows/auto-merge.yml 
new/aiohttp-jinja2-1.5.1/.github/workflows/auto-merge.yml
--- old/aiohttp-jinja2-1.5/.github/workflows/auto-merge.yml     2021-08-21 
15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/.github/workflows/auto-merge.yml   2023-02-01 
17:02:28.000000000 +0100
@@ -12,7 +12,7 @@
     steps:
       - name: Dependabot metadata
         id: metadata
-        uses: dependabot/[email protected]
+        uses: dependabot/[email protected]
         with:
           github-token: "${{ secrets.GITHUB_TOKEN }}"
       - name: Enable auto-merge for Dependabot PRs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/.github/workflows/ci.yml 
new/aiohttp-jinja2-1.5.1/.github/workflows/ci.yml
--- old/aiohttp-jinja2-1.5/.github/workflows/ci.yml     2021-08-21 
15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/.github/workflows/ci.yml   2023-02-01 
17:02:28.000000000 +0100
@@ -10,84 +10,66 @@
     branches:
       - master
       - '[0-9].[0-9]+'
-  schedule:
-    - cron:  '0 6 * * *'  # Daily 6AM UTC build
 
 
 jobs:
-
   lint:
     name: Linter
     runs-on: ubuntu-latest
     timeout-minutes: 5
     steps:
     - name: Checkout
-      uses: actions/checkout@v2
-    - name: Setup Python 3.8
-      uses: actions/setup-python@v2
+      uses: actions/checkout@v3
+    - name: Setup Python
+      uses: actions/setup-python@v4
       with:
         python-version: 3.8
-    - name: Cache PyPI
-      uses: actions/cache@v2
-      with:
-        key: pip-lint-${{ hashFiles('requirements-dev.txt') }}
-        path: ~/.cache/pip
-        restore-keys: |
-            pip-lint-
+        cache: 'pip'
+        cache-dependency-path: '**/requirements*.txt'
     - name: Pre-Commit hooks
-      uses: pre-commit/[email protected]
+      uses: pre-commit/[email protected]
     - name: Install dependencies
-      uses: py-actions/py-dependency-install@v2
+      uses: py-actions/py-dependency-install@v4
       with:
         path: requirements-dev.txt
     - name: Install itself
       run: |
-        python setup.py install
+        pip install .
     - name: Run linter
       run: |
         make lint
     - name: Prepare twine checker
       run: |
-        pip install -U twine wheel
-        python setup.py sdist bdist_wheel
+        pip install -U build twine wheel
+        python -m build
     - name: Run twine checker
       run: |
         twine check dist/*
 
   test:
     name: Test
-    needs: lint
     strategy:
       matrix:
-        pyver: [3.6, 3.7, 3.8, 3.9]
+        pyver: ['3.7', '3.8', '3.9', '3.10', '3.11']
         os: [ubuntu, macos, windows]
         include:
-          - pyver: pypy3
+          - pyver: pypy-3.8
             os: ubuntu
     runs-on: ${{ matrix.os }}-latest
     timeout-minutes: 15
     steps:
     - name: Checkout
-      uses: actions/checkout@v2
+      uses: actions/checkout@v3
     - name: Setup Python ${{ matrix.pyver }}
-      uses: actions/setup-python@v2
+      uses: actions/setup-python@v4
       with:
         python-version: ${{ matrix.pyver }}
-    - name: Get pip cache dir
-      id: pip-cache
-      run: |
-        echo "::set-output name=dir::$(pip cache dir)"    # - name: Cache
-    - name: Cache PyPI
-      uses: actions/cache@v2
-      with:
-        key: pip-ci-${{ runner.os }}-${{ matrix.pyver }}-${{ 
hashFiles('requirements-dev.txt') }}
-        path: ${{ steps.pip-cache.outputs.dir }}
-        restore-keys: |
-            pip-ci-${{ runner.os }}-${{ matrix.pyver }}-
+        cache: 'pip'
+        cache-dependency-path: '**/requirements*.txt'
     - name: Install dependencies
-      uses: py-actions/py-dependency-install@v2
+      uses: py-actions/py-dependency-install@v4
       with:
-        path: requirements-dev.txt
+        path: requirements.txt
     - name: Run unittests
       env:
         COLOR: 'yes'
@@ -95,34 +77,51 @@
         pytest tests
         python -m coverage xml
     - name: Upload coverage
-      uses: codecov/codecov-action@v1
+      uses: codecov/codecov-action@v3
       with:
         file: ./coverage.xml
         flags: unit
-        fail_ci_if_error: false
+
+  check:  # This job does nothing and is only used for the branch protection
+    if: always()
+
+    needs: [lint, test]
+
+    runs-on: ubuntu-latest
+
+    steps:
+    - name: Decide whether the needed jobs succeeded or failed
+      uses: re-actors/alls-green@release/v1
+      with:
+        jobs: ${{ toJSON(needs) }}
 
   deploy:
     name: Deploy
+    environment: release
     runs-on: ubuntu-latest
-    needs: test
-    # Run only on pushing a tag
+    needs: [check]
     if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
     steps:
     - name: Checkout
-      uses: actions/checkout@v2
-    - name: Setup Python 3.8
-      uses: actions/setup-python@v2
+      uses: actions/checkout@v3
+    - name: Setup Python
+      uses: actions/setup-python@v4
       with:
         python-version: 3.8
     - name: Install dependencies
       run:
-        python -m pip install -U pip wheel twine
-    - name: Make dists
-      run:
-        python setup.py sdist bdist_wheel
-    - name: PyPI upload
-      env:
-        TWINE_USERNAME: __token__
-        TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
+        python -m pip install -U pip wheel setuptools build twine
+    - name: Build dists
       run: |
-        twine upload dist/*
+        python -m build
+    - name: Make Release
+      uses: aio-libs/[email protected]
+      with:
+        changes_file: CHANGES.rst
+        name: aiohttp-jinja2
+        version_file: aiohttp_jinja2/__init__.py
+        github_token: ${{ secrets.GITHUB_TOKEN }}
+        pypi_token: ${{ secrets.PYPI_API_TOKEN }}
+        dist_dir: dist
+        fix_issue_regex: "`#(\\d+) 
<https://github.com/aio-libs/aiohttp-jinja2/issues/\\1>`"
+        fix_issue_repl: "(#\\1)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/.github/workflows/codeql.yml 
new/aiohttp-jinja2-1.5.1/.github/workflows/codeql.yml
--- old/aiohttp-jinja2-1.5/.github/workflows/codeql.yml 1970-01-01 
01:00:00.000000000 +0100
+++ new/aiohttp-jinja2-1.5.1/.github/workflows/codeql.yml       2023-02-01 
17:02:28.000000000 +0100
@@ -0,0 +1,41 @@
+name: "CodeQL"
+
+on:
+  push:
+    branches: [ "master" ]
+  pull_request:
+    branches: [ "master" ]
+  schedule:
+    - cron: "33 2 * * 2"
+
+jobs:
+  analyze:
+    name: Analyze
+    runs-on: ubuntu-latest
+    permissions:
+      actions: read
+      contents: read
+      security-events: write
+
+    strategy:
+      fail-fast: false
+      matrix:
+        language: [ python ]
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v3
+
+      - name: Initialize CodeQL
+        uses: github/codeql-action/init@v2
+        with:
+          languages: ${{ matrix.language }}
+          queries: +security-and-quality
+
+      - name: Autobuild
+        uses: github/codeql-action/autobuild@v2
+
+      - name: Perform CodeQL Analysis
+        uses: github/codeql-action/analyze@v2
+        with:
+          category: "/language:${{ matrix.language }}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/.gitignore 
new/aiohttp-jinja2-1.5.1/.gitignore
--- old/aiohttp-jinja2-1.5/.gitignore   2021-08-21 15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/.gitignore 2023-02-01 17:02:28.000000000 +0100
@@ -1,3 +1,5 @@
+*~
+
 # Byte-compiled / optimized / DLL files
 __pycache__/
 *.py[cod]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/.mypy.ini 
new/aiohttp-jinja2-1.5.1/.mypy.ini
--- old/aiohttp-jinja2-1.5/.mypy.ini    2021-08-21 15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/.mypy.ini  2023-02-01 17:02:28.000000000 +0100
@@ -4,21 +4,24 @@
 follow_imports_for_stubs = True
 disallow_any_decorated = True
 disallow_any_generics = True
+disallow_any_unimported = True
 disallow_incomplete_defs = True
 disallow_subclassing_any = True
 disallow_untyped_calls = True
 disallow_untyped_decorators = True
 disallow_untyped_defs = True
+enable_error_code = redundant-expr, truthy-bool, ignore-without-code, 
unused-awaitable
 implicit_reexport = False
 no_implicit_optional = True
+pretty = True
+show_column_numbers = True
 show_error_codes = True
 strict_equality = True
 warn_incomplete_stub = True
 warn_redundant_casts = True
+warn_return_any = True
 warn_unreachable = True
 warn_unused_ignores = True
-disallow_any_unimported = True
-warn_return_any = True
 
 [mypy-tests.*]
 disallow_any_decorated = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/.pre-commit-config.yaml 
new/aiohttp-jinja2-1.5.1/.pre-commit-config.yaml
--- old/aiohttp-jinja2-1.5/.pre-commit-config.yaml      2021-08-21 
15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/.pre-commit-config.yaml    2023-02-01 
17:02:28.000000000 +0100
@@ -1,23 +1,23 @@
 repos:
 - repo: https://github.com/pre-commit/pre-commit-hooks
-  rev: 'v3.3.0'
+  rev: 'v4.4.0'
   hooks:
   - id: check-merge-conflict
 - repo: https://github.com/asottile/yesqa
-  rev: v1.2.2
+  rev: v1.4.0
   hooks:
   - id: yesqa
-- repo: https://github.com/pre-commit/mirrors-isort
-  rev: 'v5.6.4'
+- repo: https://github.com/PyCQA/isort
+  rev: '5.12.0'
   hooks:
   - id: isort
 - repo: https://github.com/psf/black
-  rev: '20.8b1'
+  rev: '22.12.0'
   hooks:
     - id: black
-      language_version: python3 # Should be a command that runs python3.6+
+      language_version: python3 # Should be a command that runs python
 - repo: https://github.com/pre-commit/pre-commit-hooks
-  rev: 'v3.3.0'
+  rev: 'v4.4.0'
   hooks:
   - id: end-of-file-fixer
     exclude: >-
@@ -45,19 +45,18 @@
     args: ['--allow-missing-credentials']
   - id: detect-private-key
     exclude: ^examples/
+- repo: https://github.com/PyCQA/flake8
+  rev: '6.0.0'
+  hooks:
+  - id: flake8
+    exclude: "^docs/"
 - repo: https://github.com/asottile/pyupgrade
-  rev: 'v2.7.3'
+  rev: 'v3.3.1'
   hooks:
   - id: pyupgrade
     args: ['--py36-plus']
-- repo: https://gitlab.com/pycqa/flake8
-  rev: '3.8.4'
-  hooks:
-  - id: flake8
-    exclude: "^docs/"
-
-- repo: git://github.com/Lucas-C/pre-commit-hooks-markup
-  rev: v1.0.0
+- repo: https://github.com/Lucas-C/pre-commit-hooks-markup
+  rev: v1.0.1
   hooks:
   - id: rst-linter
     files: >-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/CHANGES.rst 
new/aiohttp-jinja2-1.5.1/CHANGES.rst
--- old/aiohttp-jinja2-1.5/CHANGES.rst  2021-08-21 15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/CHANGES.rst        2023-02-01 17:02:28.000000000 
+0100
@@ -1,24 +1,33 @@
+=======
 CHANGES
 =======
 
+.. towncrier release notes start
+
+1.5.1 (2023-02-01)
+==================
+
+- Add support for Python 3.11.
+- Drop support for decorating non-async functions with @template (deprecated 
since 0.16).
+
 1.5 (2021-08-21)
-----------------
+================
 
 - Drop support for jinaj2 <3. Add support for 3+.
 - Don't require ``typing_extensions`` on Python 3.8+.
 
 1.4.2 (2020-11-23)
-------------------
+==================
 
 - Add CHANGES.rst to MANIFEST.in and sdist #402
 
 1.4.1 (2020-11-22)
-------------------
+==================
 
 - Document async rendering functions #396
 
 1.4.0 (2020-11-12)
-------------------
+==================
 
 - Fix type annotation for ``context_processors`` argument #354
 
@@ -28,7 +37,7 @@
 - Add async rendering support #393
 
 1.3.0 (2020-10-30)
-------------------
+==================
 
 - Remove Any from template annotations #343
 
@@ -38,18 +47,18 @@
 
 
 1.2.0 (2019-10-21)
-------------------
+==================
 
 - Add type hints #285
 
 1.1.1 (2019-04-25)
-------------------
+==================
 
 - Bump minimal supported ``jinja2`` version to 2.10.1 to avoid security 
vulnerability problem.
 
 
 1.1.0 (2018-09-05)
-------------------
+==================
 
 - Bump minimal supported ``aiohttp`` version to 3.2
 
@@ -57,24 +66,24 @@
   allows to reuse jinja rendering engine from parent application.
 
 1.0.0 (2018-03-12)
--------------------
+==================
 
 - Allow context_processors to compose from parent apps #195
 
 0.17.0 (2018-03-12)
--------------------
+===================
 
 - Auto-cast ``int`` values in ``url()`` jinja function to ``str`` #191
 
 0.16.0 (2018-02-12)
--------------------
+===================
 
 - Pin to aiohttp 3.0+
 
 - Deprecate non-async handlers support
 
 0.15.0 (2018-01-30)
--------------------
+===================
 
 - Upgrade middleware to new style from aiohttp 2.3+ #182
 
@@ -82,50 +91,50 @@
 
 
 0.13.0 (2016-12-14)
--------------------
+===================
 
 - Avoid subtle errors by copying context processor data #51
 
 0.12.0 (2016-12-02)
--------------------
+===================
 
 - Add autodeploy script #46
 
 0.11.0 (2016-11-24)
--------------------
+===================
 
 - Add jinja2 filters support #41
 
 0.10.0 (2016-10-20)
--------------------
+===================
 
 - Rename package to aiohttp-jinja2 #31
 
 0.9.0 (2016-09-26)
-------------------
+==================
 
 - Fix reason parameter in HTTPInternalServerError when template is not
   found #33
 
 0.8.0 (2016-07-12)
-------------------
+==================
 
 - Add ability to render template without context #28
 
 0.7.0 (2015-12-30)
-------------------
+==================
 
 - Add ability to decorate class based views (available in aiohttp 0.20) #18
 
 - Upgrade aiohttp requirement to version 0.20.0+
 
 0.6.2 (2015-11-22)
-------------------
+==================
 
 - Make app_key parameter from render_string coroutine optional
 
 0.6.0 (2015-10-29)
-------------------
+==================
 
 - Fix a bug in middleware (missed coroutine decorator) #16
 
@@ -134,35 +143,35 @@
 - Simplify context processors initialization by adding parameter to `setup()`
 
 0.5.0 (2015-07-09)
-------------------
+==================
 
 - Introduce context processors #14
 
 - Bypass StreamResponse #15
 
 0.4.3 (2015-06-01)
-------------------
+==================
 
 - Fix distribution building: add manifest file
 
 0.4.2 (2015-05-21)
-------------------
+==================
 
 - Make HTTPInternalServerError exceptions more verbose on console
   output
 
 0.4.1 (2015-04-05)
-------------------
+==================
 
 - Documentation update
 
 0.4.0 (2015-04-02)
-------------------
+==================
 
 - Add `render_string` method
 
 0.3.1 (2015-04-01)
-------------------
+==================
 
 - Don't allow non-mapping context
 
@@ -171,17 +180,17 @@
 - Change the library logo
 
 0.3.0 (2015-03-15)
-------------------
+==================
 
 - Documentation release
 
 0.2.1 (2015-02-15)
-------------------
+==================
 
 - Fix `render_template` function
 
 0.2.0 (2015-02-05)
-------------------
+==================
 
 - Migrate to aiohttp 0.14
 
@@ -190,6 +199,6 @@
 - Drop optional `response` parameter
 
 0.1.0 (2015-01-08)
-------------------
+==================
 
 - Initial release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/Makefile 
new/aiohttp-jinja2-1.5.1/Makefile
--- old/aiohttp-jinja2-1.5/Makefile     2021-08-21 15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/Makefile   2023-02-01 17:02:28.000000000 +0100
@@ -15,7 +15,7 @@
 
 .PHONY: test
 test:
-       py.test -s ./tests/
+       pytest -s ./tests/
 
 .PHONY: clean
 clean:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/README.rst 
new/aiohttp-jinja2-1.5.1/README.rst
--- old/aiohttp-jinja2-1.5/README.rst   2021-08-21 15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/README.rst 2023-02-01 17:02:28.000000000 +0100
@@ -32,7 +32,7 @@
 Install requirement and launch tests::
 
     pip install -r requirements-dev.txt
-    py.test tests
+    pytest tests
 
 
 Usage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/aiohttp_jinja2/__init__.py 
new/aiohttp-jinja2-1.5.1/aiohttp_jinja2/__init__.py
--- old/aiohttp-jinja2-1.5/aiohttp_jinja2/__init__.py   2021-08-21 
15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/aiohttp_jinja2/__init__.py 2023-02-01 
17:02:28.000000000 +0100
@@ -1,15 +1,13 @@
-import asyncio
 import functools
 import sys
-import warnings
 from typing import (
     Any,
     Awaitable,
     Callable,
     Dict,
-    Iterable,
     Mapping,
     Optional,
+    Sequence,
     Tuple,
     TypeVar,
     Union,
@@ -29,7 +27,7 @@
 from .helpers import GLOBAL_HELPERS
 from .typedefs import Filters
 
-__version__ = "1.5"
+__version__ = "1.5.1"
 
 __all__ = ("setup", "get_env", "render_template", "render_string", "template")
 
@@ -70,7 +68,7 @@
     app: web.Application,
     *args: Any,
     app_key: str = APP_KEY,
-    context_processors: Iterable[_ContextProcessor] = (),
+    context_processors: Sequence[_ContextProcessor] = (),
     filters: Optional[Filters] = None,
     default_helpers: bool = True,
     **kwargs: Any,
@@ -118,7 +116,7 @@
         text = f"Template '{template_name}' not found"
         raise web.HTTPInternalServerError(reason=text, text=text) from e
     if not isinstance(context, Mapping):
-        text = "context should be mapping, not {}".format(type(context))
+        text = f"context should be mapping, not {type(context)}"  # type: 
ignore[unreachable]
         # same reason as above
         raise web.HTTPInternalServerError(reason=text, text=text)
     if request.get(REQUEST_CONTEXT_KEY):
@@ -219,17 +217,11 @@
     def wrapper(
         func: Callable[..., _TemplateReturnType]
     ) -> Callable[..., Awaitable[web.StreamResponse]]:
+        # TODO(PY310): ParamSpec
+
         @functools.wraps(func)
         async def wrapped(*args: Any) -> web.StreamResponse:  # type: 
ignore[misc]
-            if asyncio.iscoroutinefunction(func):
-                coro = func
-            else:
-                warnings.warn(
-                    "Bare functions are deprecated, use async ones",
-                    DeprecationWarning,
-                )
-                coro = asyncio.coroutine(func)
-            context = await coro(*args)
+            context = await func(*args)
             if isinstance(context, web.StreamResponse):
                 return context
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/aiohttp_jinja2/helpers.py 
new/aiohttp-jinja2-1.5.1/aiohttp_jinja2/helpers.py
--- old/aiohttp-jinja2-1.5/aiohttp_jinja2/helpers.py    2021-08-21 
15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/aiohttp_jinja2/helpers.py  2023-02-01 
17:02:28.000000000 +0100
@@ -15,7 +15,6 @@
     class _Context(TypedDict, total=False):
         app: web.Application
 
-
 else:
     _Context = Dict[str, Any]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/docs/api.rst 
new/aiohttp-jinja2-1.5.1/docs/api.rst
--- old/aiohttp-jinja2-1.5/docs/api.rst 2021-08-21 15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/docs/api.rst       2023-02-01 17:02:28.000000000 
+0100
@@ -7,7 +7,24 @@
 .. highlight:: python
 
 
+APP_KEY
+-------
+
+.. data:: APP_KEY
+
+   The key name in :class:`aiohttp.web.Application` dictionary,
+   ``'aiohttp_jinja2_environment'`` for storing :term:`jinja2`
+   environment object (:class:`jinja2.Environment`).
+
+   Usually you don't need to operate with *application* manually, left
+   it to :mod:`aiohttp_jinja2` functions.
+
+
+setup
+-----
+
 .. function:: setup(app, *args, app_key=APP_KEY, context_processors=(), \
+                    autoescape=True, \
                     filters=None, default_helpers=True, **kwargs)
 
    Function responsible for initializing templating system on application. It
@@ -26,6 +43,9 @@
                               variables during the processing of a request.
    :type context_processors: :class:`list`
 
+   :param autoescape: the argument is passed to :class:`jinja2.Environemnt`, 
see
+                           `Autoescaping` for more details.
+
    :param filters: extra jinja filters (`link to docs
                    <http://jinja.pocoo.org/docs/2.10/templates/#filters>`).
    :type filters: :class:`list`
@@ -38,19 +58,24 @@
    :param ``**kwargs``: any arbitrary keyword arguments you want to pass to
                         :class:`jinja2.Environment` environment.
 
+   Simple initialization::
 
-.. function:: get_env(app, *, app_key)
-
-   Get aiohttp-jinja2 environment from an application instance by key.
+      import jinja2
+      import aiohttp_jinja2
+      from aiohttp import web
 
-   :param app: :class:`aiohttp.web.Application` instance to get variables from.
+      app = web.Application()
+      aiohttp_jinja2.setup(
+         app,
+         loader=jinja2.FileSystemLoader('/path/to/templates/folder'),
+      )
 
-   :param str app_key: optional key that will be used to access templating
-                           environment from application dictionary object. 
Defaults
-                           to `aiohttp_jinja2_environment`.
 
+@template
+--------
 
-.. function:: template(template_name, *, app_key, encoding, status)
+.. decorator:: template(template_name, *, app_key=APP_KEY, \
+                        encoding='utf-8', status=200)
 
    Behaves as a decorator around view functions accepting template name that
    should be used to render the response. Supports both synchronous and
@@ -70,21 +95,17 @@
    :params int status: http status code that will be set on resulting response.
 
 
-Example of usage
-^^^^^^^^^^^^^^^^
-Simple initialization::
-
-   import jinja2
-   import aiohttp_jinja2
-   from aiohttp import web
+   Simple usage example::
 
+      @jinja2.template('tmpl.jinja2')
+      async def handler(request):
+         context = {'foo': 'bar'}
+         return context
 
-   app = web.Application()
-   aiohttp_jinja2.setup(
-      app,
-      loader=jinja2.FileSystemLoader('/path/to/templates/folder'),
-   )
+      app.router.add_get('/tmpl', handler)
 
+render_string
+-------------
 
 .. function:: render_string(template_name, request, context, *, \
                             app_key=APP_KEY)
@@ -104,6 +125,9 @@
                        to `aiohttp_jinja2_environment`.
 
 
+render_string_async
+-------------------
+
 .. function:: render_string_async(template_name, request, context, *, \
                                   app_key=APP_KEY)
     :async:
@@ -116,6 +140,10 @@
     See ``render_string()`` for parameter usage.
 
 
+
+render_template
+---------------
+
 .. function:: render_template(template_name, request, context, *, \
                               app_key=APP_KEY, encoding='utf-8', status=200)
 
@@ -130,6 +158,20 @@
                        to `aiohttp_jinja2_environment`.
    :param int status: http status code that will be set on resulting response.
 
+   Assuming the initialization from the example above has been done::
+
+      async def handler(request):
+         context = {'foo': 'bar'}
+         response = aiohttp_jinja2.render_template('tmpl.jinja2',
+                                                request,
+                                                context)
+         return response
+
+      app.router.add_get('/tmpl', handler)
+
+
+render_template_async
+---------------------
 
 .. function:: render_template_async( \
         template_name, request, context, *, \
@@ -144,15 +186,13 @@
     See ``render_template()`` for parameter usage.
 
 
-Example of usage
-^^^^^^^^^^^^^^^^
-Assuming the initialization from the example above has been done::
-
-   async def handler(request):
-      context = {'foo': 'bar'}
-      response = aiohttp_jinja2.render_template('tmpl.jinja2',
-                                                request,
-                                                context)
-      return response
 
-   app.router.add_get('/tmpl', handler)
+.. function:: get_env(app, *, app_key=APP_KEY)
+
+   Get aiohttp-jinja2 environment from an application instance by key.
+
+   :param app: :class:`aiohttp.web.Application` instance to get variables from.
+
+   :param str app_key: optional key that will be used to access templating
+                           environment from application dictionary object. 
Defaults
+                           to `aiohttp_jinja2_environment`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/docs/conf.py 
new/aiohttp-jinja2-1.5.1/docs/conf.py
--- old/aiohttp-jinja2-1.5/docs/conf.py 2021-08-21 15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/docs/conf.py       2023-02-01 17:02:28.000000000 
+0100
@@ -11,7 +11,6 @@
 # All configuration values have a default; values that are commented out
 # serve to show the default.
 
-import codecs
 import os
 import re
 import sys
@@ -22,22 +21,18 @@
         os.path.dirname(__file__), "..", "aiohttp_jinja2", "__init__.py"
     )
 
-    with codecs.open(PATH_TO_INIT_PY, "r", "latin1") as fp:
+    with open(PATH_TO_INIT_PY, encoding="latin1") as fp:
         try:
-            for line in fp.readlines():
-                if line:
-                    line = line.strip()
-                    version = re.search(
-                        r'^__version__ = "'
-                        r"(?P<major>\d+)"
-                        r"\.(?P<minor>\d+)"
-                        r"\.(?P<patch>\d+)"
-                        r'(?P<tag>.*)?"$',
-                        line,
-                        re.M,
-                    )
-                    if version:
-                        return version.groupdict()
+            version = re.search(
+                r'^__version__ = "'
+                r"(?P<major>\d+)"
+                r"\.(?P<minor>\d+)"
+                r"(\.(?P<patch>\d+)"
+                r'(?P<tag>.*)?)?"$',
+                fp.read(),
+                re.M,
+            )
+            return version.groupdict()
         except IndexError:
             raise RuntimeError("Unable to determine version.")
 
@@ -80,7 +75,7 @@
 
 # General information about the project.
 project = "aiohttp_jinja2"
-copyright = "2015-2018 Andrew Svetlov and aio-libs team"
+copyright = "2015-2021 Andrew Svetlov and aio-libs team"
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -327,5 +322,5 @@
 intersphinx_mapping = {
     "http://docs.python.org/3": None,
     "https://aiohttp.readthedocs.io/en/stable": None,
-    "http://jinja2.pocoo.org/docs/dev": None,
+    "https://jinja.palletsprojects.com/en/latest": None,
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/docs/index.rst 
new/aiohttp-jinja2-1.5.1/docs/index.rst
--- old/aiohttp-jinja2-1.5/docs/index.rst       2021-08-21 15:12:08.000000000 
+0200
+++ new/aiohttp-jinja2-1.5.1/docs/index.rst     2023-02-01 17:02:28.000000000 
+0100
@@ -6,7 +6,6 @@
 aiohttp_jinja2
 ==============
 
-.. module:: aiohttp_jinja2
 .. currentmodule:: aiohttp_jinja2
 .. highlight:: python
 
@@ -243,117 +242,27 @@
 The library uses `Travis <https://travis-ci.org/aio-libs/aiohttp-jinja2>`_ for
 Continuous Integration.
 
-IRC channel
------------
-
-You can discuss the library on Freenode_ at **#aio-libs** channel.
-
-.. _Freenode: http://freenode.net
-
-
-.. _aiohttp_jinja2-reference:
-
-Reference
----------
-
-
-.. data:: APP_KEY
-
-   The key name in :class:`aiohttp.web.Application` dictionary,
-   ``'aiohttp_jinja2_environment'`` for storing :term:`jinja2`
-   environment object (:class:`jinja2.Environment`).
-
-   Usually you don't need to operate with *application* manually, left
-   it to :mod:`aiohttp_jinja2` functions.
-
-
-.. function:: get_env(app, app_key=APP_KEY)
-
-   Return :class:`jinja2.Environment` object which has stored in the
-   *app* (:class:`aiohttp.web.Application` instance).
-
-   *app_key* is an optional key for application dict, :const:`APP_KEY`
-   by default.
-
-
-.. function:: render_string(template_name, request, context, *, \
-                            app_key=APP_KEY)
-
-   Return :class:`str` which contains template
-   *template_name* filled with *context*.
-
-   *request* is a parameter from :term:`web-handler`,
-   :class:`aiohttp.web.Request` instance.
-
-   *app_key* is an optional key for application dict, :const:`APP_KEY`
-   by default.
-
-
-.. function:: render_template(template_name, request, context, *, \
-                              app_key=APP_KEY, encoding='utf-8', status=200)
-
-   Return :class:`aiohttp.web.Response` which contains template
-   *template_name* filled with *context*.
-
-   *request* is a parameter from :term:`web-handler`,
-   :class:`aiohttp.web.Request` instance.
-
-   *app_key* is an optional key for application dict, :const:`APP_KEY`
-   by default.
-
-   *encoding* is response encoding, ``'utf-8'`` by default.
-
-   Returned response has *Content-Type* header set to ``'text/html'``.
-
-
-.. function:: setup(app, *args, app_key=APP_KEY, autoescape=True, \
-                    context_processors=(), filters=None, \
-                    deault_helpers=True, **kwargs)
-
-   Initialize :class:`jinja2.Environment` object.
-
-   *app* is :class:`aiohttp.web.Application` instance.
-
-   *args* and *kawargs* are passed into environment constructor.
-
-   *app_key* is an optional key for application dict, :const:`APP_KEY`
-   by default.
-
-   *autoescape* is passed to :class:`jinja2.Environemnt`, see
-    `Autoescaping` for more details.
-
-   *context_processors* is a collection of context processors to be
-   called before rendering a template.
 
-   *filters* is a collection of custom filters, see
-   :ref:`writing-filters` for details.
-
-   *default_helpers* is a boolean flag, ``static_url`` and ``url``
-   jinja2 functions are added to environment if ``True`` (default).
-
-
-.. decorator:: template(template_name, *, app_key=APP_KEY, encoding='utf-8',\
-                        status=200)
+License
+-------
 
-   Decorate :term:`web-handler` to convert returned :class:`dict`
-   context into :class:`aiohtttp.web.Response` filled with
-   *template_name* template.
+:mod:`aiohttp_jinja2` is offered under the Apache 2 license.
 
-   *app_key* is an optional key for application dict, :const:`APP_KEY`
-   by default.
+Contents
+--------
 
-   *encoding* is response encoding, ``'utf-8'`` by default.
+.. toctree::
+   :maxdepth: 2
 
-   *status* is *HTTP status code* for returned response, *200* (OK) by
-   default.
+   api
 
-   Returned response has *Content-Type* header set to ``'text/html'``.
 
+Indices and tables
+------------------
 
-License
--------
+* :ref:`genindex`
+* :ref:`search`
 
-:mod:`aiohttp_jinja2` is offered under the Apache 2 license.
 
 Glossary
 --------
@@ -371,19 +280,3 @@
    web-handler
 
        An endpoint that returns http response.
-
-
-Contents
---------
-
-.. toctree::
-   :maxdepth: 2
-
-   api
-
-
-Indices and tables
-------------------
-
-* :ref:`genindex`
-* :ref:`search`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/requirements-dev.txt 
new/aiohttp-jinja2-1.5.1/requirements-dev.txt
--- old/aiohttp-jinja2-1.5/requirements-dev.txt 2021-08-21 15:12:08.000000000 
+0200
+++ new/aiohttp-jinja2-1.5.1/requirements-dev.txt       2023-02-01 
17:02:28.000000000 +0100
@@ -1,21 +1,10 @@
--e .
-aiohttp==3.7.4.post0
-alabaster>=0.6.2
-attrs==21.2.0
-coverage==5.5
-flake8==3.9.2
-flake8-bandit==2.1.2
-flake8-bugbear==21.4.3
-flake8-import-order==0.18.1
-flake8-requirements==1.5.1
-jinja2==3.0.1
-multidict==5.1.0
-mypy==0.910; implementation_name=="cpython"
-pre-commit==2.14.0
-pytest==6.2.4
-pytest-aiohttp==0.3.0
-pytest-cov==2.12.1
-pytest-cov==2.12.1
-pytest-sugar==0.9.4
-sphinx==4.1.2
-yarl==1.6.3
+-r requirements.txt
+
+flake8==6.0.0
+flake8-bandit==4.1.1
+flake8-bugbear==23.1.20
+flake8-import-order==0.18.2
+flake8-requirements==1.7.6
+mypy==0.991; implementation_name=="cpython"
+pre-commit==3.0.2
+sphinx==6.1.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/requirements.txt 
new/aiohttp-jinja2-1.5.1/requirements.txt
--- old/aiohttp-jinja2-1.5/requirements.txt     1970-01-01 01:00:00.000000000 
+0100
+++ new/aiohttp-jinja2-1.5.1/requirements.txt   2023-02-01 17:02:28.000000000 
+0100
@@ -0,0 +1,10 @@
+-e .
+aiohttp==3.8.3
+alabaster>=0.6.2
+coverage==7.1.0
+jinja2==3.1.2
+pytest==7.2.1
+pytest-aiohttp==1.0.4
+pytest-cov==4.0.0
+pytest-sugar==0.9.6
+yarl==1.8.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/setup.cfg 
new/aiohttp-jinja2-1.5.1/setup.cfg
--- old/aiohttp-jinja2-1.5/setup.cfg    2021-08-21 15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/setup.cfg  2023-02-01 17:02:28.000000000 +0100
@@ -1,7 +1,3 @@
-[flake8]
-ignore = N801,N802,N803,E203,E226,E305,W504,E252,E301,E302,E704,W503,W504,F811
-max-line-length = 88
-
 [isort]
 line_length=88
 include_trailing_comma=True
@@ -11,6 +7,7 @@
 
 [tool:pytest]
 addopts = --cov=aiohttp_jinja2 --cov-report xml --cov-report html --cov-report 
term
+asyncio_mode = auto
 junit_suite_name = aiohttp_test_suite
 filterwarnings=
     error
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/setup.py 
new/aiohttp-jinja2-1.5.1/setup.py
--- old/aiohttp-jinja2-1.5/setup.py     2021-08-21 15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/setup.py   2023-02-01 17:02:28.000000000 +0100
@@ -1,15 +1,12 @@
 import codecs
-import os
 import re
+from pathlib import Path
 
 from setuptools import setup
 
 
 def _get_version():
-    PATH_TO_INIT_PY = os.path.join(
-        os.path.abspath(os.path.dirname(__file__)), "aiohttp_jinja2", 
"__init__.py"
-    )
-
+    PATH_TO_INIT_PY = Path(__file__).parent / "aiohttp_jinja2" / "__init__.py"
     with codecs.open(PATH_TO_INIT_PY, "r", "latin1") as fp:
         try:
             for line in fp.readlines():
@@ -20,13 +17,14 @@
                         return version[0]
         except IndexError:
             raise RuntimeError("Unable to determine version.")
+    raise RuntimeError("Unable to find version.")
 
 
 version = _get_version()
 
 
 def read(f):
-    return open(os.path.join(os.path.dirname(__file__), f)).read().strip()
+    return Path(__file__).with_name(f).read_text()
 
 
 install_requires = [
@@ -39,19 +37,18 @@
 setup(
     name="aiohttp-jinja2",
     version=version,
-    description=(
-        "jinja2 template renderer for aiohttp.web " "(http server for asyncio)"
-    ),
+    description="jinja2 template renderer for aiohttp.web (http server for 
asyncio)",
     long_description="\n\n".join((read("README.rst"), read("CHANGES.rst"))),
     classifiers=[
         "License :: OSI Approved :: Apache Software License",
         "Intended Audience :: Developers",
         "Programming Language :: Python",
         "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.6",
         "Programming Language :: Python :: 3.7",
         "Programming Language :: Python :: 3.8",
         "Programming Language :: Python :: 3.9",
+        "Programming Language :: Python :: 3.10",
+        "Programming Language :: Python :: 3.11",
         "Development Status :: 5 - Production/Stable",
         "Topic :: Internet :: WWW/HTTP",
         "Framework :: AsyncIO",
@@ -62,7 +59,7 @@
     url="https://github.com/aio-libs/aiohttp_jinja2/";,
     license="Apache 2",
     packages=["aiohttp_jinja2"],
-    python_requires=">=3.6",
+    python_requires=">=3.7",
     install_requires=install_requires,
     include_package_data=True,
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiohttp-jinja2-1.5/tests/test_simple_renderer.py 
new/aiohttp-jinja2-1.5.1/tests/test_simple_renderer.py
--- old/aiohttp-jinja2-1.5/tests/test_simple_renderer.py        2021-08-21 
15:12:08.000000000 +0200
+++ new/aiohttp-jinja2-1.5.1/tests/test_simple_renderer.py      2023-02-01 
17:02:28.000000000 +0100
@@ -1,4 +1,4 @@
-from typing import Awaitable, Callable, Dict, TypeVar
+from typing import Dict
 
 import jinja2
 import pytest
@@ -7,8 +7,6 @@
 
 import aiohttp_jinja2
 
-_T = TypeVar("_T")
-
 
 @pytest.mark.parametrize("enable_async", (False, True))
 async def test_func(aiohttp_client, enable_async):
@@ -302,36 +300,6 @@
     assert "<html><script>alert(1)</script></html>" == txt
 
 
-async def test_render_bare_funcs_deprecated(aiohttp_client):
-    def wrapper(
-        func: Callable[[web.Request], Awaitable[_T]]
-    ) -> Callable[[web.Request], Awaitable[_T]]:
-        async def wrapped(request: web.Request) -> _T:
-            with pytest.warns(
-                DeprecationWarning, match="Bare functions are deprecated"
-            ):
-                return await func(request)
-
-        return wrapped
-
-    @wrapper  # type: ignore[arg-type]  # Deprecated functionality
-    @aiohttp_jinja2.template("tmpl.jinja2")
-    def func(request: web.Request) -> Dict[str, str]:
-        return {"text": "OK"}
-
-    app = web.Application()
-    aiohttp_jinja2.setup(app, loader=jinja2.DictLoader({"tmpl.jinja2": 
"{{text}}"}))
-
-    app.router.add_route("GET", "/", func)
-
-    client = await aiohttp_client(app)
-    resp = await client.get("/")
-
-    assert 200 == resp.status
-    txt = await resp.text()
-    assert "OK" == txt
-
-
 async def test_skip_render_for_response_from_handler(aiohttp_client):
     @aiohttp_jinja2.template("tmpl.jinja2")
     async def func(request):

Reply via email to