django / django/new-features

Add pluggy as a dependency

Open
#88 10 comments 23 reactions 0 assignees View on GitHub
Django Core
Dominant language
No language data
Stars
188
Forks
7
PR merge metrics
No merged PRs in 30d

Description

### Code of Conduct

- [x] I agree to follow Django's Code of Conduct

### Feature Description

Enable the third-party ecosystem to plug into core Django features in a more flexible and powerful way by adding [`pluggy`](https://github.com/pytest-dev/pluggy) as a dependency.

### Problem

While the third-party ecosystem is one of Django's strengths, it is not always possible to plug into Django functionality without jumping through hoops (usually adding to `settings.py`). Adding `pluggy` would add more flexible entry points for plugins.

### Request or proposal

proposal

### Additional Details

When reviewing https://github.com/django/deps/pull/98#discussion_r2426951627, the Steering Council had the idea of using [`pluggy`](https://github.com/django/deps/pull/98#discussion_r2426951627) to enable third-party packages to easily plug into the proposed `django new` command. We quickly realised that it would also enable adding plugin entry points when building other Django features.

There is some prior art for using `pluggy` with Django, for example:
* https://2024.djangocon.us/talks/how-to-design-and-implement-extensible-software-with-plugins/
* https://simonwillison.net/2024/Sep/25/djp-a-plugin-system-for-django/

`pluggy` is also a mature and stable package, that has been used by `pytest` for years.

### Implementation Suggestions

_No response_

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.