﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
27682	Add more dependencies to extras_require (eg sqlparse, PyYAML)	Ed Morley	Ed Morley	"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"	Cleanup/optimization	closed	Packaging	dev	Normal	duplicate		cdosborn@…	Someday/Maybe	0	0	0	0	0	0
