Skip to content

Commit

Permalink
Merge pull request #436 from fschulze/pkgdigest
Browse files Browse the repository at this point in the history
Calculate package digest on first use.
  • Loading branch information
malthe authored Dec 31, 2024
2 parents e194d10 + f87613a commit 90c1653
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 5 deletions.
2 changes: 2 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ Changes

In next release ...

- Improve startup time when no template is used.

- Fix ``ast`` deprecation warnings up to Python 3.13.
(`#430 <https://github.com/malthe/chameleon/issues/430>`_)

Expand Down
17 changes: 12 additions & 5 deletions src/chameleon/template.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,17 @@ def get_package_versions() -> list[tuple[str, str]]:
return sorted(versions.items())


pkg_digest = hashlib.sha1(__name__.encode('utf-8'))
for name, version in get_package_versions():
pkg_digest.update(name.encode('utf-8'))
pkg_digest.update(version.encode('utf-8'))
_pkg_digest = None


def get_pkg_digest() -> hashlib._Hash:
global _pkg_digest
if _pkg_digest is None:
_pkg_digest = hashlib.sha1(__name__.encode('utf-8'))
for name, version in get_package_versions():
_pkg_digest.update(name.encode('utf-8'))
_pkg_digest.update(version.encode('utf-8'))
return _pkg_digest.copy()


log = logging.getLogger('chameleon.template')
Expand Down Expand Up @@ -320,7 +327,7 @@ def _cook(

def digest(self, body: str, names: Collection[str]) -> str:
class_name = type(self).__name__.encode('utf-8')
sha = pkg_digest.copy()
sha = get_pkg_digest()
sha.update(body.encode('utf-8', 'ignore'))
sha.update(class_name)
digest = sha.hexdigest()
Expand Down

0 comments on commit 90c1653

Please sign in to comment.