copier-template-extensions
Special Jinja2 extension for Copier that allows to load extensions using file paths relative to the template root instead of Python dotted paths.
Decision gist · record as of 2026-08-14
Yes, if you are authoring Copier templates and want to add custom Jinja logic without publishing separate packages. The low install friction, permissive license, and typed codebase make it safe to adopt. The 395-day maintenance gap is a minor concern for a stable, narrowly-scoped utility, but verify that it aligns with your Copier version before committing to a large template project.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires copier to be installed; intended for use within Copier template projects, not standalone.
- Low friction: pure Python wheel with a single runtime dependency on copier.
- Maintenance status is aging—last release was 395 days ago, though the repository remains active and the package is typed.
License · maintenance · safety
ISC (permissive) — ISC license is permissive and imposes minimal restrictions; safe for commercial and private use without significant compliance burden.
last release 2025-07-15 (395 days) · last repo commit 2025-07-15 · 35 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 184,030 downloads/mo, #10,050 on PyPI
Alternatives
Verify before relying
pip install copier-template-extensions
# In copier.yml:
_jinja_extensions:
- copier_template_extensions.TemplateExtensionLoader
- extensions/myext.py:MyExtension
# In extensions/myext.py:
from copier_template_extensions import ContextHook
class MyExtension(ContextHook):
def hook(self, context):
context["new_var"] = "computed_value"- Whether the package is actively maintained or in maintenance-only mode given the 395-day gap since last release.
- Real-world performance impact of loading extensions from file paths versus dotted module paths in large template projects.
What it is and what it does
Copier Template-Extensions is a Jinja2 extension for Copier that lets you define custom template extensions as Python files stored in your template directory, then reference them by relative file path instead of Python module dotted notation. This is particularly useful for template authors who want to add custom filters, tests, or context manipulation without requiring users to install separate Python packages or manage complex module paths.
The package provides two main features: a TemplateExtensionLoader that resolves file-path-based extension references, and a ContextHook base class that simplifies adding or modifying template context variables during rendering. This is helpful when you want to compute derived values (like converting a project type into a module name) or apply transformations without cluttering template filenames with Jinja macros or inline logic.
Use it for
- Add custom Jinja filters (like slugify) to a Copier template without publishing them as a separate package.
- Compute derived context variables during template rendering based on user answers (e.g., inferring module names from project type).
- Organize template logic into separate Python modules within the template directory for readability and maintainability.
- Implement template-specific hooks that run during different Copier phases (prompting, rendering, tasks, migrations) to validate or transform context.
- Avoid ugly Jinja macro imports or inline context updates in template filenames by centralizing logic in Python extension classes.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you are authoring Copier templates and want to add custom Jinja logic without publishing separate packages.
The low install friction, permissive license, and typed codebase make it safe to adopt. The 395-day maintenance gap is a minor concern for a stable, narrowly-scoped utility, but verify that it aligns with your Copier version before committing to a large template project.
Install
copier-template-extensions on PyPI
Before you install
Low friction: pure Python wheel with a single runtime dependency on copier. Maintenance status is aging—last release was 395 days ago, though the repository remains active and the package is typed.
Requires copier to be installed; intended for use within Copier template projects, not standalone.
License in practice
ISC license is permissive and imposes minimal restrictions; safe for commercial and private use without significant compliance burden.
Quickstart
pip install copier-template-extensions
# In copier.yml:
_jinja_extensions:
- copier_template_extensions.TemplateExtensionLoader
- extensions/myext.py:MyExtension
# In extensions/myext.py:
from copier_template_extensions import ContextHook
class MyExtension(ContextHook):
def hook(self, context):
context["new_var"] = "computed_value"
Verify before relying
- Whether the package is actively maintained or in maintenance-only mode given the 395-day gap since last release.
- Real-world performance impact of loading extensions from file paths versus dotted module paths in large template projects.
Package facts
| License | ISC permissive |
| Python support | Supports the current Python release >=3.9 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packagecopier |
| Maintenance | Aging 395 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 184,030 / month, #10,050 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaIntended Audience :: DevelopersProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.9Topic :: Software DevelopmentTopic :: UtilitiesTyping :: Typed |
Evidence: copier_template_extensions-0.3.3-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “copier jinja2 extensions”
- copier-template-extensionsExtends Copier's Jinja2 templating with a loader that imports custom…
- copier-templates-extensionsProvides a Jinja2 extension for Copier that loads custom template…
- copierCopier is a template engine and CLI tool that generates projects from…
Give your agent the search over MCP, or paste the wish link into any chat.
More Software Development packages
Provides backported and experimental type hints for Python 3.9+, allowing use of newer typing features on older Python versions and enabling early experimentation with type system PEPs before they enter the standard library.
NumPy provides an N-dimensional array object and a comprehensive suite of mathematical, linear algebra, Fourier transform, and random number functions for scientific computing in Python.
FastAPI is a Python web framework for building REST APIs using type hints, with automatic request validation, serialization, and interactive API documentation.
Provides a way to document function parameters, class attributes, return types, and variables inline using Python's `Annotated` type hint syntax instead of traditional docstrings.
Typer builds command-line applications from Python functions using type hints, automatically generating help text, argument parsing, and shell completion.
Install it if you are building CLIs in Python.
Distlib provides low-level packaging utilities for building, distributing, and managing Python software—including metadata handling, version specifiers, wheel support, script installation, and dependency resolution.
See also copier · copier-templates-extensions · Jinja2 · mkdocs-macros-plugin · sphinx-jinja · jinja2_pluralize · jinja_partials · ruamel.yaml.jinja2 · pyramid-jinja2 · vsdx