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):