Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-wheezy.template for
openSUSE:Factory checked in at 2026-03-24 18:48:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-wheezy.template (Old)
and /work/SRC/openSUSE:Factory/.python-wheezy.template.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-wheezy.template"
Tue Mar 24 18:48:04 2026 rev:7 rq:1342147 version:3.2.5
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-wheezy.template/python-wheezy.template.changes
2025-04-20 20:08:25.158247553 +0200
+++
/work/SRC/openSUSE:Factory/.python-wheezy.template.new.8177/python-wheezy.template.changes
2026-03-24 18:48:23.577286232 +0100
@@ -1,0 +2,18 @@
+Tue Mar 24 05:41:09 UTC 2026 - Steve Kowalik <[email protected]>
+
+- This is not a noarch package, install things to sitearch.
+
+-------------------------------------------------------------------
+Mon Mar 23 22:58:07 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to version 3.2.5:
+ * Increase minimum Python version to 3.10 and add support for
+ Python 3.14.
+ * Modernize build system using pyproject.toml.
+ * Refactor setup.py to improve Cython extension building and
+ handle PEP 420 namespace packages correctly.
+ * Remove explicit namespace package declarations in favor of
+ implicit ones (PEP 420).
+ * Update type hints to use built-in collection types.
+
+-------------------------------------------------------------------
Old:
----
wheezy.template-3.2.3.tar.gz
New:
----
wheezy.template-3.2.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-wheezy.template.spec ++++++
--- /var/tmp/diff_new_pack.MSIUJv/_old 2026-03-24 18:48:24.221312340 +0100
+++ /var/tmp/diff_new_pack.MSIUJv/_new 2026-03-24 18:48:24.225312502 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-wheezy.template
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,14 +18,15 @@
%{?sle15_python_module_pythons}
Name: python-wheezy.template
-Version: 3.2.3
+Version: 3.2.5
Release: 0
Summary: A lightweight template library
License: MIT
URL: https://github.com/akornatskyy/wheezy.template
Source:
https://files.pythonhosted.org/packages/source/w/wheezy_template/wheezy_template-%{version}.tar.gz#/wheezy.template-%{version}.tar.gz
+BuildRequires: %{python_module Cython >= 3.0}
BuildRequires: %{python_module pip}
-BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module setuptools >= 61.0}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
@@ -35,7 +36,6 @@
Suggests: python-pytest
Suggests: python-pytest-cov
Suggests: python-pytest-pep8
-BuildArch: noarch
%python_subpackages
%description
@@ -51,7 +51,8 @@
%install
%pyproject_install
%python_clone -a %{buildroot}%{_bindir}/wheezy.template
-%python_expand %fdupes %{buildroot}%{$python_sitelib}
+%python_expand rm %{buildroot}%{$python_sitearch}/wheezy/template/*.c
+%python_expand %fdupes %{buildroot}%{$python_sitearch}
%post
%python_install_alternative wheezy.template
@@ -63,8 +64,7 @@
%doc README.md
%license LICENSE
%python_alternative %{_bindir}/wheezy.template
-%dir %{python_sitelib}/wheezy
-%{python_sitelib}/wheezy/template
-%{python_sitelib}/wheezy.template-%{version}*.pth
-%{python_sitelib}/wheezy_template-%{version}.dist-info
+%dir %{python_sitearch}/wheezy
+%{python_sitearch}/wheezy/template
+%{python_sitearch}/wheezy_template-%{version}.dist-info
++++++ wheezy.template-3.2.3.tar.gz -> wheezy.template-3.2.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wheezy_template-3.2.3/PKG-INFO
new/wheezy_template-3.2.5/PKG-INFO
--- old/wheezy_template-3.2.3/PKG-INFO 2024-11-10 12:02:55.487447300 +0100
+++ new/wheezy_template-3.2.5/PKG-INFO 2026-02-18 10:05:21.401159300 +0100
@@ -1,24 +1,23 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: wheezy.template
-Version: 3.2.3
+Version: 3.2.5
Summary: A lightweight template library
-Home-page: https://github.com/akornatskyy/wheezy.template
-Author: Andriy Kornatskyy
-Author-email: [email protected]
-License: MIT
-Keywords: html markup template preprocessor
-Platform: any
+Author-email: Andriy Kornatskyy <[email protected]>
+License-Expression: MIT
+Project-URL: Homepage, https://github.com/akornatskyy/wheezy.template
+Project-URL: Source, https://github.com/akornatskyy/wheezy.template
+Project-URL: Issues, https://github.com/akornatskyy/wheezy.template/issues
+Keywords: html,markup,template,preprocessor
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Internet :: WWW/HTTP
@@ -26,9 +25,13 @@
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Widget Sets
Classifier: Topic :: Text Processing :: Markup :: HTML
-Requires-Python: >=3.9
+Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
+Provides-Extra: cython
+Requires-Dist: Cython>=3.0; extra == "cython"
+Requires-Dist: setuptools>=61.0; extra == "cython"
+Dynamic: license-file
# wheezy.template
@@ -83,7 +86,7 @@
## Install
[wheezy.template](https://pypi.org/project/wheezy.template/) requires
-[python](https://www.python.org) version 3.9+. It is independent of
+[python](https://www.python.org) version 3.10+. It is independent of
operating system. You can install it from
[pypi](https://pypi.org/project/wheezy.template/) site:
@@ -91,5 +94,15 @@
pip install -U wheezy.template
```
+To build from source with optional C extensions, install Cython and build
+without PEP 517 isolation so the build can see your environment:
+
+```sh
+pip install Cython setuptools
+pip install -U --no-build-isolation --no-cache-dir wheezy.security[cython]
+```
+
+Note: compiling extensions requires a working C compiler toolchain.
+
If you run into any issue or have comments, go ahead and add on
[github](https://github.com/akornatskyy/wheezy.template).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wheezy_template-3.2.3/README.md
new/wheezy_template-3.2.5/README.md
--- old/wheezy_template-3.2.3/README.md 2024-11-10 12:02:45.000000000 +0100
+++ new/wheezy_template-3.2.5/README.md 2026-02-18 10:05:11.000000000 +0100
@@ -51,7 +51,7 @@
## Install
[wheezy.template](https://pypi.org/project/wheezy.template/) requires
-[python](https://www.python.org) version 3.9+. It is independent of
+[python](https://www.python.org) version 3.10+. It is independent of
operating system. You can install it from
[pypi](https://pypi.org/project/wheezy.template/) site:
@@ -59,5 +59,15 @@
pip install -U wheezy.template
```
+To build from source with optional C extensions, install Cython and build
+without PEP 517 isolation so the build can see your environment:
+
+```sh
+pip install Cython setuptools
+pip install -U --no-build-isolation --no-cache-dir wheezy.security[cython]
+```
+
+Note: compiling extensions requires a working C compiler toolchain.
+
If you run into any issue or have comments, go ahead and add on
[github](https://github.com/akornatskyy/wheezy.template).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wheezy_template-3.2.3/pyproject.toml
new/wheezy_template-3.2.5/pyproject.toml
--- old/wheezy_template-3.2.3/pyproject.toml 1970-01-01 01:00:00.000000000
+0100
+++ new/wheezy_template-3.2.5/pyproject.toml 2026-02-18 10:05:11.000000000
+0100
@@ -0,0 +1,61 @@
+[build-system]
+requires = ["setuptools>=61.0", "wheel"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "wheezy.template"
+dynamic = ["version"]
+description = "A lightweight template library"
+readme = { file = "README.md", content-type = "text/markdown" }
+requires-python = ">=3.10"
+license = "MIT"
+license-files = ["LICENSE"]
+authors = [{ name = "Andriy Kornatskyy", email = "[email protected]"
}]
+keywords = ["html", "markup", "template", "preprocessor"]
+classifiers = [
+ "Environment :: Web Environment",
+ "Intended Audience :: Developers",
+ "Natural Language :: English",
+ "Operating System :: OS Independent",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
+ "Programming Language :: Python :: Implementation :: CPython",
+ "Programming Language :: Python :: Implementation :: PyPy",
+ "Topic :: Internet :: WWW/HTTP",
+ "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
+ "Topic :: Software Development :: Libraries :: Python Modules",
+ "Topic :: Software Development :: Widget Sets",
+ "Topic :: Text Processing :: Markup :: HTML",
+]
+dependencies = []
+
+[project.optional-dependencies]
+cython = ["Cython>=3.0", "setuptools>=61.0"]
+
+[project.urls]
+Homepage = "https://github.com/akornatskyy/wheezy.template"
+Source = "https://github.com/akornatskyy/wheezy.template"
+Issues = "https://github.com/akornatskyy/wheezy.template/issues"
+
+[project.scripts]
+"wheezy.template" = "wheezy.template.console:main"
+
+[tool.setuptools]
+packages = ["wheezy.template", "wheezy.template.ext"]
+package-dir = { "" = "src" }
+zip-safe = false
+include-package-data = true
+
+[tool.setuptools.package-data]
+"wheezy.template" = ["py.typed"]
+
+[tool.setuptools.dynamic]
+version = { attr = "wheezy.template.__version__" }
+
+[tool.coverage.run]
+source = ["src/wheezy/template"]
+omit = ["*/test_*.py", "*/tests/*"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wheezy_template-3.2.3/setup.py
new/wheezy_template-3.2.5/setup.py
--- old/wheezy_template-3.2.3/setup.py 2024-11-10 12:02:45.000000000 +0100
+++ new/wheezy_template-3.2.5/setup.py 2026-02-18 10:05:11.000000000 +0100
@@ -1,81 +1,60 @@
#!/usr/bin/env python
-import multiprocessing
import os
-import re
+from glob import glob
-from setuptools import setup # type: ignore[import]
+from setuptools import Extension, setup # type: ignore[import]
-extra = {}
-try:
- from Cython.Build import cythonize # type: ignore[import]
-
- p = os.path.join("src", "wheezy", "template")
- extra["ext_modules"] = cythonize(
- [os.path.join(p, "*.py"), os.path.join(p, "ext", "*.py")],
- exclude=[
- os.path.join(p, "__init__.py"),
- os.path.join(p, "ext", "__init__.py"),
- ],
- # https://github.com/cython/cython/issues/3262
- nthreads=0 if multiprocessing.get_start_method() == "spawn" else 2,
+
+def module_name_from_src_path(path: str) -> str:
+ """Derive a fully-qualified module name from a file path under ./src.
+
+ Cython's default path-to-module logic relies on finding __init__.py files.
+ For PEP 420 namespace packages (e.g. "wheezy"), that inference stops too
+ early, which can produce incorrect module names (e.g. "template.*").
+ """
+
+ rel = os.path.relpath(path, "src")
+ rel_no_ext = os.path.splitext(rel)[0]
+ return rel_no_ext.replace(os.sep, ".")
+
+
+def optional_cython_extensions() -> object:
+ try:
+ from Cython.Build import cythonize # type: ignore[import]
+ except ImportError:
+ return None
+
+ package_root = os.path.join("src", "wheezy", "template")
+
+ sources: list[str] = []
+ sources.extend(glob(os.path.join(package_root, "*.py")))
+ sources.extend(glob(os.path.join(package_root, "ext", "*.py")))
+
+ extensions: list[Extension] = []
+ for src_path in sources:
+ if os.path.basename(src_path) == "__init__.py":
+ continue
+ extensions.append(
+ Extension(module_name_from_src_path(src_path), [src_path])
+ )
+
+ return cythonize(
+ extensions,
+ nthreads=2,
compiler_directives={"language_level": 3},
quiet=True,
)
-except ImportError:
- pass
-README = open("README.md").read()
-VERSION = (
- re.search( # type: ignore
- r'__version__ = "(.+)"',
- open("src/wheezy/template/__init__.py").read(),
- )
- .group(1)
- .strip()
-)
-
-setup(
- name="wheezy.template",
- version=VERSION,
- python_requires=">=3.9",
- description="A lightweight template library",
- long_description=README,
- long_description_content_type="text/markdown",
- url="https://github.com/akornatskyy/wheezy.template",
- author="Andriy Kornatskyy",
- author_email="[email protected]",
- license="MIT",
- classifiers=[
- "Environment :: Web Environment",
- "Intended Audience :: Developers",
- "License :: OSI Approved :: MIT License",
- "Natural Language :: English",
- "Operating System :: OS Independent",
- "Programming Language :: Python",
- "Programming Language :: Python :: 3.9",
- "Programming Language :: Python :: 3.10",
- "Programming Language :: Python :: 3.11",
- "Programming Language :: Python :: 3.12",
- "Programming Language :: Python :: 3.13",
- "Programming Language :: Python :: Implementation :: CPython",
- "Programming Language :: Python :: Implementation :: PyPy",
- "Topic :: Internet :: WWW/HTTP",
- "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
- "Topic :: Software Development :: Libraries :: Python Modules",
- "Topic :: Software Development :: Widget Sets",
- "Topic :: Text Processing :: Markup :: HTML",
- ],
- keywords="html markup template preprocessor",
- packages=["wheezy", "wheezy.template", "wheezy.template.ext"],
- package_data={"wheezy.template": ["py.typed"]},
- package_dir={"": "src"},
- namespace_packages=["wheezy"],
- zip_safe=False,
- install_requires=[],
- entry_points={
- "console_scripts": ["wheezy.template=wheezy.template.console:main"]
- },
- platforms="any",
- **extra
-)
+
+def main() -> None:
+ extra = {}
+ ext_modules = optional_cython_extensions()
+ if ext_modules is not None:
+ extra["ext_modules"] = ext_modules
+
+ setup(**extra)
+
+
+if __name__ == "__main__":
+ main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wheezy_template-3.2.3/src/wheezy/__init__.py
new/wheezy_template-3.2.5/src/wheezy/__init__.py
--- old/wheezy_template-3.2.3/src/wheezy/__init__.py 2024-11-10
12:02:45.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy/__init__.py 1970-01-01
01:00:00.000000000 +0100
@@ -1,12 +0,0 @@
-import typing
-
-# See
-# http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
-try:
- __import__("pkg_resources").declare_namespace(__name__)
-except ImportError:
- from pkgutil import extend_path
-
- __path__: typing.List[str] = extend_path( # type: ignore[no-redef]
- __path__, __name__
- )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/wheezy_template-3.2.3/src/wheezy/template/__init__.py
new/wheezy_template-3.2.5/src/wheezy/template/__init__.py
--- old/wheezy_template-3.2.3/src/wheezy/template/__init__.py 2024-11-10
12:02:55.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy/template/__init__.py 2026-02-18
10:05:19.000000000 +0100
@@ -1,6 +1,3 @@
-"""
-"""
-
from wheezy.template.engine import Engine
from wheezy.template.ext.code import CodeExtension
from wheezy.template.ext.core import CoreExtension
@@ -17,4 +14,4 @@
"Preprocessor",
)
-__version__ = "3.2.3"
+__version__ = "3.2.5"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wheezy_template-3.2.3/src/wheezy/template/builder.py
new/wheezy_template-3.2.5/src/wheezy/template/builder.py
--- old/wheezy_template-3.2.3/src/wheezy/template/builder.py 2024-11-10
12:02:45.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy/template/builder.py 2026-02-18
10:05:11.000000000 +0100
@@ -92,7 +92,7 @@
self,
builder_rules: typing.Dict[str, typing.List[BuilderRule]],
builder_offset: int = 2,
- **ignore: typing.Any
+ **ignore: typing.Any,
) -> None:
self.rules = builder_rules
self.lineno = 0 - builder_offset
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wheezy_template-3.2.3/src/wheezy/template/comp.py
new/wheezy_template-3.2.5/src/wheezy/template/comp.py
--- old/wheezy_template-3.2.3/src/wheezy/template/comp.py 2024-11-10
12:02:45.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy/template/comp.py 2026-02-18
10:05:11.000000000 +0100
@@ -1,8 +1,10 @@
import ast
-import sys
import typing
from _thread import allocate_lock # noqa
+Tuple: typing.Any = tuple
+List: typing.Any = list
+
def adjust_source_lineno(source: str, name: str, lineno: int) -> typing.Any:
node = compile(source, name, "exec", ast.PyCF_ONLY_AST)
@@ -10,13 +12,6 @@
return node
-if sys.version_info <= (3, 9, 0): # pragma: nocover
- from typing import List, Tuple
-else: # pragma: nocover
- Tuple = tuple # type: ignore
- List = list # type: ignore
-
-
__all__ = (
"adjust_source_lineno",
"Tuple",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/wheezy_template-3.2.3/src/wheezy/template/ext/code.py
new/wheezy_template-3.2.5/src/wheezy/template/ext/code.py
--- old/wheezy_template-3.2.3/src/wheezy/template/ext/code.py 2024-11-10
12:02:45.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy/template/ext/code.py 2026-02-18
10:05:11.000000000 +0100
@@ -1,7 +1,6 @@
import re
import typing
-from wheezy.template.comp import Tuple
from wheezy.template.typing import Builder, LexerRule, ParserRule, Token
from wheezy.template.utils import find_balanced
@@ -55,4 +54,4 @@
parser_rules: typing.Mapping[str, ParserRule] = {"code": parse_code}
- builder_rules: typing.List[Tuple[str, typing.Any]] = [("code", build_code)]
+ builder_rules: typing.List[tuple[str, typing.Any]] = [("code", build_code)]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/wheezy_template-3.2.3/src/wheezy/template/ext/core.py
new/wheezy_template-3.2.5/src/wheezy/template/ext/core.py
--- old/wheezy_template-3.2.3/src/wheezy/template/ext/core.py 2024-11-10
12:02:45.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy/template/ext/core.py 2026-02-18
10:05:11.000000000 +0100
@@ -1,7 +1,6 @@
import re
import typing
-from wheezy.template.comp import Tuple
from wheezy.template.typing import Builder, LexerRule, ParserConfig, Token
from wheezy.template.utils import find_all_balanced
@@ -84,12 +83,12 @@
return value.rstrip()[8:-1]
-def parse_import(value: str) -> Tuple[str, str]:
+def parse_import(value: str) -> tuple[str, str]:
name, var = value[7:].rsplit(" as ", 1)
return name, var
-def parse_from(value: str) -> Tuple[str, str, str]:
+def parse_from(value: str) -> tuple[str, str, str]:
name, var = value[5:].rsplit(" import ", 1)
s = var.rsplit(" as ", 1)
if len(s) == 2:
@@ -101,7 +100,7 @@
def parse_var(
value: str,
-) -> Tuple[str, typing.Optional[typing.List[str]]]:
+) -> tuple[str, typing.Optional[typing.List[str]]]:
if "!!" not in value:
return value, None
var, var_filter = value.rsplit("!!", 1)
@@ -145,7 +144,7 @@
def build_import(
- builder: Builder, lineno: int, token: str, value: Tuple[str, str]
+ builder: Builder, lineno: int, token: str, value: tuple[str, str]
) -> bool:
assert token == "import "
name, var = value
@@ -157,7 +156,7 @@
builder: Builder,
lineno: int,
token: str,
- value: Tuple[str, str, str],
+ value: tuple[str, str, str],
) -> bool:
assert token == "from "
name, var, alias = value
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/wheezy_template-3.2.3/src/wheezy/template/ext/determined.py
new/wheezy_template-3.2.5/src/wheezy/template/ext/determined.py
--- old/wheezy_template-3.2.3/src/wheezy/template/ext/determined.py
2024-11-10 12:02:45.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy/template/ext/determined.py
2026-02-18 10:05:11.000000000 +0100
@@ -1,7 +1,6 @@
import re
import typing
-from wheezy.template.comp import Tuple
from wheezy.template.utils import find_balanced
RE_ARGS = re.compile(r'\s*(?P<expr>(([\'"]).*?\3|.+?))\s*\,')
@@ -118,7 +117,7 @@
def parse_params(
text: str,
-) -> Tuple[typing.List[str], typing.Mapping[str, str]]:
+) -> tuple[typing.List[str], typing.Mapping[str, str]]:
"""Parses function parameters.
>>> parse_params('')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wheezy_template-3.2.3/src/wheezy/template/lexer.py
new/wheezy_template-3.2.5/src/wheezy/template/lexer.py
--- old/wheezy_template-3.2.3/src/wheezy/template/lexer.py 2024-11-10
12:02:45.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy/template/lexer.py 2026-02-18
10:05:11.000000000 +0100
@@ -39,7 +39,7 @@
lexer_rules: typing.List[LexerRule],
preprocessors: typing.Optional[typing.List[PreProcessorRule]] = None,
postprocessors: typing.Optional[typing.List[PostProcessorRule]] = None,
- **ignore: typing.Any
+ **ignore: typing.Any,
) -> None:
"""Initializes with ``rules``. Rules must be a list of
two elements tuple: ``(regex, tokenizer)`` where
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wheezy_template-3.2.3/src/wheezy/template/loader.py
new/wheezy_template-3.2.5/src/wheezy/template/loader.py
--- old/wheezy_template-3.2.3/src/wheezy/template/loader.py 2024-11-10
12:02:45.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy/template/loader.py 2026-02-18
10:05:11.000000000 +0100
@@ -4,7 +4,6 @@
import time
import typing
-from wheezy.template.comp import Tuple
from wheezy.template.engine import Engine
from wheezy.template.typing import Loader, SupportsRender
@@ -28,7 +27,7 @@
self.searchpath = searchpath
self.encoding = encoding
- def list_names(self) -> Tuple[str, ...]:
+ def list_names(self) -> tuple[str, ...]:
"""Return a list of names relative to directories. Ignores any files
and directories that start with dot.
"""
@@ -84,7 +83,7 @@
def __init__(self, templates: typing.Mapping[str, str]) -> None:
self.templates = templates
- def list_names(self) -> Tuple[str, ...]:
+ def list_names(self) -> tuple[str, ...]:
"""List all keys from internal dict."""
return tuple(sorted(self.templates.keys()))
@@ -101,7 +100,7 @@
def __init__(self, loaders: typing.List[Loader]) -> None:
self.loaders = loaders
- def list_names(self) -> Tuple[str, ...]:
+ def list_names(self) -> tuple[str, ...]:
"""Returns as list of names from all loaders."""
names = set()
for loader in self.loaders:
@@ -128,7 +127,7 @@
self.engine = engine
self.ctx = ctx or {}
- def list_names(self) -> Tuple[str, ...]:
+ def list_names(self) -> tuple[str, ...]:
return self.engine.loader.list_names()
def load(self, name: str) -> str:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wheezy_template-3.2.3/src/wheezy/template/parser.py
new/wheezy_template-3.2.5/src/wheezy/template/parser.py
--- old/wheezy_template-3.2.3/src/wheezy/template/parser.py 2024-11-10
12:02:45.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy/template/parser.py 2026-02-18
10:05:11.000000000 +0100
@@ -34,7 +34,7 @@
parser_configs: typing.Optional[
typing.List[typing.Callable[[ParserConfig], None]]
] = None,
- **ignore: typing.Any
+ **ignore: typing.Any,
) -> None:
self.end_tokens: typing.List[str] = []
self.continue_tokens: typing.List[str] = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wheezy_template-3.2.3/src/wheezy/template/typing.py
new/wheezy_template-3.2.5/src/wheezy/template/typing.py
--- old/wheezy_template-3.2.3/src/wheezy/template/typing.py 2024-11-10
12:02:45.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy/template/typing.py 2026-02-18
10:05:11.000000000 +0100
@@ -1,11 +1,10 @@
import typing
from abc import abstractmethod
-
-from wheezy.template.comp import List, Tuple
+from typing import TypeAlias
# flake8: noqa: E704
-Token = Tuple[int, str, str]
+Token: TypeAlias = tuple[int, str, str]
class Builder:
@@ -35,26 +34,26 @@
Tokenizer = typing.Callable[[typing.Match[str]], Token]
-LexerRule = Tuple[typing.Pattern[str], Tokenizer]
+LexerRule = tuple[typing.Pattern[str], Tokenizer]
PreProcessorRule = typing.Callable[[str], str]
-PostProcessorRule = typing.Callable[[List[Token]], str]
+PostProcessorRule = typing.Callable[[list[Token]], str]
BuilderRule = typing.Callable[
[
Builder,
int,
str,
- typing.Union[str, List[str], typing.Iterable[Token], None],
+ typing.Union[str, list[str], typing.Iterable[Token], None],
],
bool,
]
-ParserRule = typing.Callable[[str], typing.Union[str, List[str]]]
+ParserRule = typing.Callable[[str], typing.Union[str, list[str]]]
class ParserConfig:
- end_tokens: List[str]
- continue_tokens: List[str]
- compound_tokens: List[str]
- out_tokens: List[str]
+ end_tokens: list[str]
+ continue_tokens: list[str]
+ compound_tokens: list[str]
+ out_tokens: list[str]
RenderTemplate = typing.Callable[
@@ -79,7 +78,7 @@
class Loader:
@abstractmethod
- def list_names(self) -> Tuple[str, ...]: ... # pragma: nocover
+ def list_names(self) -> tuple[str, ...]: ... # pragma: nocover
@abstractmethod
def load(self, name: str) -> typing.Optional[str]: ... # pragma: nocover
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/wheezy_template-3.2.3/src/wheezy.template.egg-info/PKG-INFO
new/wheezy_template-3.2.5/src/wheezy.template.egg-info/PKG-INFO
--- old/wheezy_template-3.2.3/src/wheezy.template.egg-info/PKG-INFO
2024-11-10 12:02:55.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy.template.egg-info/PKG-INFO
2026-02-18 10:05:21.000000000 +0100
@@ -1,24 +1,23 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: wheezy.template
-Version: 3.2.3
+Version: 3.2.5
Summary: A lightweight template library
-Home-page: https://github.com/akornatskyy/wheezy.template
-Author: Andriy Kornatskyy
-Author-email: [email protected]
-License: MIT
-Keywords: html markup template preprocessor
-Platform: any
+Author-email: Andriy Kornatskyy <[email protected]>
+License-Expression: MIT
+Project-URL: Homepage, https://github.com/akornatskyy/wheezy.template
+Project-URL: Source, https://github.com/akornatskyy/wheezy.template
+Project-URL: Issues, https://github.com/akornatskyy/wheezy.template/issues
+Keywords: html,markup,template,preprocessor
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Internet :: WWW/HTTP
@@ -26,9 +25,13 @@
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Widget Sets
Classifier: Topic :: Text Processing :: Markup :: HTML
-Requires-Python: >=3.9
+Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
+Provides-Extra: cython
+Requires-Dist: Cython>=3.0; extra == "cython"
+Requires-Dist: setuptools>=61.0; extra == "cython"
+Dynamic: license-file
# wheezy.template
@@ -83,7 +86,7 @@
## Install
[wheezy.template](https://pypi.org/project/wheezy.template/) requires
-[python](https://www.python.org) version 3.9+. It is independent of
+[python](https://www.python.org) version 3.10+. It is independent of
operating system. You can install it from
[pypi](https://pypi.org/project/wheezy.template/) site:
@@ -91,5 +94,15 @@
pip install -U wheezy.template
```
+To build from source with optional C extensions, install Cython and build
+without PEP 517 isolation so the build can see your environment:
+
+```sh
+pip install Cython setuptools
+pip install -U --no-build-isolation --no-cache-dir wheezy.security[cython]
+```
+
+Note: compiling extensions requires a working C compiler toolchain.
+
If you run into any issue or have comments, go ahead and add on
[github](https://github.com/akornatskyy/wheezy.template).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/wheezy_template-3.2.3/src/wheezy.template.egg-info/SOURCES.txt
new/wheezy_template-3.2.5/src/wheezy.template.egg-info/SOURCES.txt
--- old/wheezy_template-3.2.3/src/wheezy.template.egg-info/SOURCES.txt
2024-11-10 12:02:55.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy.template.egg-info/SOURCES.txt
2026-02-18 10:05:21.000000000 +0100
@@ -1,14 +1,14 @@
LICENSE
MANIFEST.in
README.md
+pyproject.toml
setup.py
-src/wheezy/__init__.py
src/wheezy.template.egg-info/PKG-INFO
src/wheezy.template.egg-info/SOURCES.txt
src/wheezy.template.egg-info/dependency_links.txt
src/wheezy.template.egg-info/entry_points.txt
-src/wheezy.template.egg-info/namespace_packages.txt
src/wheezy.template.egg-info/not-zip-safe
+src/wheezy.template.egg-info/requires.txt
src/wheezy.template.egg-info/top_level.txt
src/wheezy/template/__init__.py
src/wheezy/template/builder.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/wheezy_template-3.2.3/src/wheezy.template.egg-info/namespace_packages.txt
new/wheezy_template-3.2.5/src/wheezy.template.egg-info/namespace_packages.txt
---
old/wheezy_template-3.2.3/src/wheezy.template.egg-info/namespace_packages.txt
2024-11-10 12:02:55.000000000 +0100
+++
new/wheezy_template-3.2.5/src/wheezy.template.egg-info/namespace_packages.txt
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-wheezy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/wheezy_template-3.2.3/src/wheezy.template.egg-info/requires.txt
new/wheezy_template-3.2.5/src/wheezy.template.egg-info/requires.txt
--- old/wheezy_template-3.2.3/src/wheezy.template.egg-info/requires.txt
1970-01-01 01:00:00.000000000 +0100
+++ new/wheezy_template-3.2.5/src/wheezy.template.egg-info/requires.txt
2026-02-18 10:05:21.000000000 +0100
@@ -0,0 +1,4 @@
+
+[cython]
+Cython>=3.0
+setuptools>=61.0