Fixed #23860 -- Documented import order convention.
This commit is contained in:
parent
db77915c9f
commit
cd155c7c71
|
@ -32,14 +32,6 @@ Python style
|
||||||
* Use ``InitialCaps`` for class names (or for factory functions that
|
* Use ``InitialCaps`` for class names (or for factory functions that
|
||||||
return classes).
|
return classes).
|
||||||
|
|
||||||
* Use convenience imports whenever available. For example, do this::
|
|
||||||
|
|
||||||
from django.views.generic import View
|
|
||||||
|
|
||||||
Don't do this::
|
|
||||||
|
|
||||||
from django.views.generic.base import View
|
|
||||||
|
|
||||||
* In docstrings, follow :pep:`257`. For example::
|
* In docstrings, follow :pep:`257`. For example::
|
||||||
|
|
||||||
def foo():
|
def foo():
|
||||||
|
@ -48,6 +40,85 @@ Python style
|
||||||
"""
|
"""
|
||||||
...
|
...
|
||||||
|
|
||||||
|
Imports
|
||||||
|
-------
|
||||||
|
|
||||||
|
* Use `isort <https://github.com/timothycrosley/isort#readme>`_ to automate
|
||||||
|
import sorting using the guidelines below.
|
||||||
|
|
||||||
|
Quick start:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ pip install isort
|
||||||
|
$ isort -rc .
|
||||||
|
|
||||||
|
This runs ``isort`` recursively from your current directory, modifying any
|
||||||
|
files that don't conform to the guidelines. If you need to have imports out
|
||||||
|
of order (to avoid a circular import, for example) use a comment like this::
|
||||||
|
|
||||||
|
import module # isort:skip
|
||||||
|
|
||||||
|
* Put imports in these groups: future, standard library, third-party libraries,
|
||||||
|
other Django components, local Django component, try/excepts. Sort lines in
|
||||||
|
each group alphabetically by the full module name. Place all ``import module``
|
||||||
|
statements before ``from module import objects`` in each section.
|
||||||
|
|
||||||
|
* On each line, alphabetize the items with the upper case items grouped before
|
||||||
|
the lower case items.
|
||||||
|
|
||||||
|
* Break long lines using parentheses and indent continuation lines by 4 spaces.
|
||||||
|
Include a trailing comma after the last import and put the closing
|
||||||
|
parenthesis on its own line.
|
||||||
|
|
||||||
|
Use a single blank line between the last import and any module level code,
|
||||||
|
and use two blank lines above the first function or class.
|
||||||
|
|
||||||
|
For example (comments are for explanatory purposes only):
|
||||||
|
|
||||||
|
.. snippet::
|
||||||
|
:filename: django/contrib/admin/example.py
|
||||||
|
|
||||||
|
# future
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
# standard library
|
||||||
|
import json
|
||||||
|
from itertools import chain
|
||||||
|
|
||||||
|
# third-party
|
||||||
|
import bcrypt
|
||||||
|
|
||||||
|
# Django
|
||||||
|
from django.http import Http404
|
||||||
|
from django.http.response import (
|
||||||
|
Http404, HttpResponse, HttpResponseNotAllowed, StreamingHttpResponse,
|
||||||
|
cookie,
|
||||||
|
)
|
||||||
|
|
||||||
|
# local Django
|
||||||
|
from .models import LogEntry
|
||||||
|
|
||||||
|
# try/except
|
||||||
|
try:
|
||||||
|
import pytz
|
||||||
|
except ImportError:
|
||||||
|
pytz = None
|
||||||
|
|
||||||
|
CONSTANT = 'foo'
|
||||||
|
|
||||||
|
|
||||||
|
class Example(object):
|
||||||
|
# ...
|
||||||
|
|
||||||
|
* Use convenience imports whenever available. For example, do this::
|
||||||
|
|
||||||
|
from django.views.generic import View
|
||||||
|
|
||||||
|
instead of::
|
||||||
|
|
||||||
|
from django.views.generic.base import View
|
||||||
|
|
||||||
Template style
|
Template style
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue