Skip to content

panel-extensions/copier-template-panel-extension

Repository files navigation

Panel Extension Copier Template

A Copier template for creating Panel extensions, leveraging the Pixi package manager to simplify setup and management.

This template comes preconfigured with essential tools and best practices to help you develop, document, and distribute high-quality Panel-based applications or extensions.

  • Hatch-based Packaging: Managed by Hatch for streamlined dependency management and build processes.
  • Linting and Code Quality with ruff: A fast and configurable linting tool for maintaining consistent code style.
  • Testing with pytest: Includes support for async tests and thorough configuration for reliable testing.
  • Documentation Generation: Leverages Zensical for beautiful documentation and mkdocstrings for automatic API documentation.
  • GitHub Actions CI/CD: Preconfigured workflows for automated testing, building, and publishing.
  • Pixi Package Management: Integrated with Pixi for efficient and reproducible environment management.
  • Update Flexibility: Easily update your project to newer template versions with minimal disruption.
  • BSD License: Uses the OSI-approved BSD license, ideal for open-source projects.

To install and get started with Pixi, please refer to the Pixi documentation.

Getting Started

Step 1 - Create from Template

To create a new Panel extension:

pixi exec --spec copier --spec ruamel.yaml -- copier copy --trust https://github.com/panel-extensions/copier-template-panel-extension <panel-extension-name>

Or, to use a specific branch of copier-template-panel-extension, additionally specify vcs-ref:

pixi exec --spec copier --spec ruamel.yaml -- copier copy --trust https://github.com/panel-extensions/copier-template-panel-extension <panel-extension-name> --vcs-ref <branch_name>

Step 2 - Create and Add Remote Repository

Go to Github and create your repository with the . Then set the remote:

git remote add origin https://github.com/<github-user>/<panel-extension-name>.git

The push your new repository

pre-commit install && git push --set-upstream origin main

Step 3 - Set Up GitHub Pages Docs

Enable GitHub Pages through Settings > Pages on the GitHub toolbar:

image

On your GitHub repo's About section in the sidebar, be sure to add the link to your docs page by toggling the checkbox:

image

https://<github-user>.github.io/<panel-extension-name>/

If your docs page is missing a sidebar, remember to add imports to src/__init__.py and include them in __all__.

Step 4 - Link to PyPI

Head over to PyPI and fill out the form:

image

Step 5 - Release with a Tag

Once you've populated the template, you can release to PyPI by creating a tag!

image

image

Step 6 - Customize the Docs

The docs page is served with Zensical and mkdocstrings. Configuration lives in the root's zensical.toml file. See mkdocstrings usage for available API documentation options.

Contributing

We welcome contributions to this template! To get started:

Step 1 - Clone the Repository

git clone https://github.com/panel-extensions/copier-template-panel-extension
cd copier-template-panel-extension

Step 2 - Install Dependencies

This project uses Pixi to manage dependencies. Install them with:

pixi install

Step 3 - Install Pre-commit Hooks

pixi run pre-commit-install

Step 4 - Understand the Template Structure

This repository is a Copier template. The key files are:

  • copier.yml: Defines the template questions (e.g. project_slug, author_name) and configuration. See the Copier docs on configuring a template for details.
  • template/: Contains the files that get copied and rendered into each new project. Files ending in .jinja are rendered using Jinja2 with answers from copier.yml as variables.
  • tasks/: Contains post-generation scripts run by Copier after copying the template.
  • migrations/: Contains migration scripts used when updating a project to a newer template version.

Step 5 - Test the Template Locally

To generate a temporary project from your local changes and inspect the output:

pixi run generate-temp-repo

This copies the template using your current working tree (--vcs-ref=HEAD) into a temporary directory and prints its path. You can then inspect or manually test the generated project.

Step 6 - Run the Tests

The test suite generates projects from the template and validates the output:

pixi run test

Step 7 - Run the Linters

pixi run -e lint pre-commit-run

Updating the Template

To update to the latest template version run:

pixi exec --spec copier --spec ruamel.yaml -- copier update --defaults --trust

Note: copier will show Conflict for files with manual changes during an update. This is normal. As long as there are no merge conflict markers, all patches applied cleanly.

About

A copier template for creating Panel extensions, leveraging the pixi package manager to simplify setup and management.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors