--- id: copier-template-extensions version: "0.3.3" license: ISC license_treatment: permissive maintenance: aging --- # 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. License: permissive · Maintenance: aging · Downloads: 184.0K/mo ## 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 above — verify before relying. Extends Copier's Jinja2 templating with a loader that imports custom extensions from file paths relative to your template root, rather than requiring Python dotted module paths. 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 pip install copier-template-extensions uv add copier-template-extensions poetry add copier-template-extensions ## Installing copier-template-extensions 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. 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" Requires copier to be installed; intended for use within Copier template projects, not standalone. 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_current - Install friction: low - Maintenance: aging - Downloads: 184.0K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags copier jinja2 extensions, template custom filters, relative path jinja extensions, copier template loader, jinja2 extension file paths, copier context hooks, template variable manipulation, copier-plugin, jinja2-extension, template-authoring [View on SkillFed](https://skillfed.io/packages/copier-template-extensions) · [View on PyPI](https://pypi.org/project/copier-template-extensions/)