Follow our blog, Twitter, or GitHub to see future announcements.
This represents a significant amount of work, and there are quite a few changes. Be sure to carefully read the changelog, and use tools such as pip-compile and Dependabot to pin your dependencies and control your updates.
3.0.0rc2
Fixes an issue with the deprecated Markup subclass, #1401.
Use 451 API to load templates with ~loaders.PackageLoader. 1168
Fix a bug that caused imported macros to not have access to the current template's globals. 688
Add ability to ignore trim_blocks using +%}. 1036
Fix a bug that caused custom async-only filters to fail with constant input. 1279
Fix UndefinedError incorrectly being thrown on an undefined variable instead of Undefined being returned on NativeEnvironment on Python 3.10. 1335
Blocks can be marked as required. They must be overridden at some point, but not necessarily by the direct child. 1147
Deprecate the autoescape and with extensions, they are built-in to the compiler. 1203
The urlize filter recognizes mailto: links and takes extra_schemes (or env.policies["urlize.extra_schemes"]) to recognize other schemes. It tries to balance parentheses within a URL instead of ignoring trailing characters. The parsing in general has been updated to be more efficient and match more cases. URLs without a scheme are linked as https:// instead of http://. 522, 827, 1172, 1195
Filters that get attributes, such as map and groupby, can use a false or empty value as a default. 1331
Fix a bug that prevented variables set in blocks or loops from being accessed in custom context functions. 768
Fix a bug that caused scoped blocks from accessing special loop variables. 1088
Update the template globals when calling Environment.get_template(globals=...) even if the template was already loaded. 295
Do not raise an error for undefined filters in unexecuted if-statements and conditional expressions. 842
Add is filter and is test tests to test if a name is a registered filter or test. This allows checking if a filter is available in a template before using it. Test functions can be decorated with @pass_environment, @pass_eval_context, or @pass_context. 842, 1248
Support pgettext and npgettext (message contexts) in i18n extension. 441
The |indent filter's width argument can be a string to indent by. 1167
The parser understands hex, octal, and binary integer literals. 1170
Undefined.__contains__ (in) raises an UndefinedError instead of a TypeError. 1198
Undefined is iterable in an async environment. 1294
NativeEnvironment supports async mode. 1362
Template rendering only treats \n, \r\n and \r as line breaks. Other characters are left unchanged. 769, 952, 1313
|groupby filter takes an optional default argument. 1359
The function and filter decorators have been renamed and unified. The old names are deprecated. 1381
pass_context replaces contextfunction and contextfilter.
pass_eval_context replaces evalcontextfunction and evalcontextfilter
pass_environment replaces environmentfunction and environmentfilter.
Async support no longer requires Jinja to patch itself. It must still be enabled with Environment(enable_async=True). 1390
Overriding Context.resolve is deprecated, override resolve_or_missing instead. 1380
Commits
417f822 Merge pull request #1417 from pallets/release-3.0.0
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
Bumps jinja2 from 2.11.3 to 3.0.0.
Release notes
Sourced from jinja2's releases.
Changelog
Sourced from jinja2's changelog.
Commits
417f822
Merge pull request #1417 from pallets/release-3.0.0b15fd1c
release version 3.0.0eed1546
update requirements9627e73
Merge pull request #1416 from pallets/pre-commit-ci-schedule6630044
update pre-commit monthlye1bf3bc
Merge pull request #1415 from pallets/pre-commit-ci-update-config0798a66
[pre-commit.ci] pre-commit autoupdate53fea33
Merge pull request #1414 from pallets/typing-markerba1f27e
fix py.typed in manifest1a3342b
Merge pull request #1412 from pallets/typingDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)