#27682: Add more dependencies to extras_require (eg sqlparse, PyYAML)
------------------------------------------------+--------------------------
               Reporter:  Ed Morley             |          Owner:  nobody
                   Type:  Cleanup/optimization  |         Status:  assigned
              Component:  Packaging             |        Version:  master
               Severity:  Normal                |       Keywords:
           Triage Stage:  Unreviewed            |      Has patch:  0
    Needs documentation:  0                     |    Needs tests:  0
Patch needs improvement:  0                     |  Easy pickings:  0
                  UI/UX:  0                     |
------------------------------------------------+--------------------------
 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

--
Ticket URL: <https://code.djangoproject.com/ticket/27682>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/051.53e3b043a8652227baedce6c579abd2d%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to