Opened 7 years ago

Closed 6 years ago

#27682 closed Cleanup/optimization (duplicate)

Add more dependencies to extras_require (eg sqlparse, PyYAML)

Reported by: Ed Morley Owned by: Ed Morley
Component: Packaging Version: dev
Severity: Normal Keywords:
Cc: cdosborn@… Triage Stage: Someday/Maybe
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

There are several optional Django features that require third-party Python packages that (intentionally) aren't specified as install_requires dependencies in setup.py, since not everyone would want them installed.

For example:

  • PyYAML for the yaml serializer
  • sqlparse for multi-line SQL statements for migrations RunSQL
  • Database drivers

Adding these as extras_require [*] entries has the following advantages:

1) The reason for the packages is now self-documenting. eg:

Django[sqlparse,yaml]

...instead of:

Django

# Required by Django's migration system for RunSQL commands.
sqlparse

# Required by Django's YAML serializer.
PyYAML

2) Django could in the future manage the preferred package for a particular feature in cases where there is a choice (eg mysqlclient vs MySQL-python). Users can still override by not using the extras_require alias (or there could even be multiple aliases).

3) If a new major version of Django stops requiring a particular extras_require dependency, users will know to remove it from their requirements files, since pip will warn there is no such extra listed.

[*] http://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies

Change History (5)

comment:1 by Ed Morley, 7 years ago

Owner: changed from nobody to Ed Morley

comment:2 by Josh Smeaton, 7 years ago

I think I like this idea, but it's probably a change sufficient enough to bring up on the mailing list https://groups.google.com/forum/#!forum/django-developers

comment:3 by Tim Graham, 7 years ago

Triage Stage: UnreviewedSomeday/Maybe

comment:4 by Connor Osborn, 7 years ago

Cc: cdosborn@… added

comment:5 by Carlton Gibson, 6 years ago

Resolution: duplicate
Status: assignedclosed

I'm going to resolve this as a duplicate of #28905. Whilst this issue was prior, #28905 is further along. (It has a PR)

Note: See TracTickets for help on using tickets.
Back to Top