summaryrefslogtreecommitdiff
path: root/django/utils
diff options
context:
space:
mode:
Diffstat (limited to 'django/utils')
-rw-r--r--django/utils/cache.py20
-rw-r--r--django/utils/encoding.py8
-rw-r--r--django/utils/feedgenerator.py26
-rw-r--r--django/utils/html.py10
-rw-r--r--django/utils/ipv6.py2
-rw-r--r--django/utils/lorem_ipsum.py68
-rw-r--r--django/utils/text.py10
-rw-r--r--django/utils/translation/__init__.py9
-rw-r--r--django/utils/translation/trans_real.py14
-rw-r--r--django/utils/version.py8
10 files changed, 93 insertions, 82 deletions
diff --git a/django/utils/cache.py b/django/utils/cache.py
index eb3aa631ec..be1626a263 100644
--- a/django/utils/cache.py
+++ b/django/utils/cache.py
@@ -94,8 +94,7 @@ def get_max_age(response):
"""
if not response.has_header('Cache-Control'):
return
- cc = dict(_to_tuple(el) for el in
- cc_delim_re.split(response['Cache-Control']))
+ cc = dict(_to_tuple(el) for el in cc_delim_re.split(response['Cache-Control']))
if 'max-age' in cc:
try:
return int(cc['max-age'])
@@ -110,7 +109,8 @@ def set_response_etag(response):
def _precondition_failed(request):
- logger.warning('Precondition Failed: %s', request.path,
+ logger.warning(
+ 'Precondition Failed: %s', request.path,
extra={
'status_code': 412,
'request': request,
@@ -173,19 +173,17 @@ def get_conditional_response(request, etag=None, last_modified=None, response=No
(if_match and if_none_match)):
# We only get here if no undefined combinations of headers are
# specified.
- if ((if_none_match and (etag in etags or
- '*' in etags and etag)) and
+ if ((if_none_match and (etag in etags or '*' in etags and etag)) and
(not if_modified_since or
- (last_modified and if_modified_since and
- last_modified <= if_modified_since))):
+ (last_modified and if_modified_since and last_modified <= if_modified_since))):
if request.method in ('GET', 'HEAD'):
return _not_modified(request, response)
else:
return _precondition_failed(request)
- elif (if_match and ((not etag and '*' in etags) or
- (etag and etag not in etags) or
- (last_modified and if_unmodified_since and
- last_modified > if_unmodified_since))):
+ elif (if_match and (
+ (not etag and '*' in etags) or (etag and etag not in etags) or
+ (last_modified and if_unmodified_since and last_modified > if_unmodified_since)
+ )):
return _precondition_failed(request)
elif (not if_none_match and request.method in ('GET', 'HEAD') and
last_modified and if_modified_since and
diff --git a/django/utils/encoding.py b/django/utils/encoding.py
index 6bc285d899..66077e2108 100644
--- a/django/utils/encoding.py
+++ b/django/utils/encoding.py
@@ -21,8 +21,7 @@ class DjangoUnicodeDecodeError(UnicodeDecodeError):
def __str__(self):
original = UnicodeDecodeError.__str__(self)
- return '%s. You passed in %r (%s)' % (original, self.obj,
- type(self.obj))
+ return '%s. You passed in %r (%s)' % (original, self.obj, type(self.obj))
# For backwards compatibility. (originally in Django, then added to six 1.9)
@@ -42,8 +41,9 @@ def smart_text(s, encoding='utf-8', strings_only=False, errors='strict'):
return force_text(s, encoding, strings_only, errors)
-_PROTECTED_TYPES = six.integer_types + (type(None), float, Decimal,
- datetime.datetime, datetime.date, datetime.time)
+_PROTECTED_TYPES = six.integer_types + (
+ type(None), float, Decimal, datetime.datetime, datetime.date, datetime.time
+)
def is_protected_type(obj):
diff --git a/django/utils/feedgenerator.py b/django/utils/feedgenerator.py
index 367245be22..3a91af3815 100644
--- a/django/utils/feedgenerator.py
+++ b/django/utils/feedgenerator.py
@@ -89,8 +89,8 @@ def get_tag_uri(url, date):
class SyndicationFeed(object):
"Base class for all syndication feeds. Subclasses should provide write()"
def __init__(self, title, link, description, language=None, author_email=None,
- author_name=None, author_link=None, subtitle=None, categories=None,
- feed_url=None, feed_copyright=None, feed_guid=None, ttl=None, **kwargs):
+ author_name=None, author_link=None, subtitle=None, categories=None,
+ feed_url=None, feed_copyright=None, feed_guid=None, ttl=None, **kwargs):
def to_unicode(s):
return force_text(s, strings_only=True)
if categories:
@@ -117,10 +117,10 @@ class SyndicationFeed(object):
self.items = []
def add_item(self, title, link, description, author_email=None,
- author_name=None, author_link=None, pubdate=None, comments=None,
- unique_id=None, unique_id_is_permalink=None, enclosure=None,
- categories=(), item_copyright=None, ttl=None, updateddate=None,
- enclosures=None, **kwargs):
+ author_name=None, author_link=None, pubdate=None, comments=None,
+ unique_id=None, unique_id_is_permalink=None, enclosure=None,
+ categories=(), item_copyright=None, ttl=None, updateddate=None,
+ enclosures=None, **kwargs):
"""
Adds an item to the feed. All args are expected to be Python Unicode
objects except pubdate and updateddate, which are datetime.datetime
@@ -262,8 +262,7 @@ class RssFeed(SyndicationFeed):
handler.addQuickElement("link", self.feed['link'])
handler.addQuickElement("description", self.feed['description'])
if self.feed['feed_url'] is not None:
- handler.addQuickElement("atom:link", None,
- {"rel": "self", "href": self.feed['feed_url']})
+ handler.addQuickElement("atom:link", None, {"rel": "self", "href": self.feed['feed_url']})
if self.feed['language'] is not None:
handler.addQuickElement("language", self.feed['language'])
for cat in self.feed['categories']:
@@ -309,13 +308,13 @@ class Rss201rev2Feed(RssFeed):
# Author information.
if item["author_name"] and item["author_email"]:
- handler.addQuickElement("author", "%s (%s)" %
- (item['author_email'], item['author_name']))
+ handler.addQuickElement("author", "%s (%s)" % (item['author_email'], item['author_name']))
elif item["author_email"]:
handler.addQuickElement("author", item["author_email"])
elif item["author_name"]:
- handler.addQuickElement("dc:creator", item["author_name"],
- {"xmlns:dc": "http://purl.org/dc/elements/1.1/"})
+ handler.addQuickElement(
+ "dc:creator", item["author_name"], {"xmlns:dc": "http://purl.org/dc/elements/1.1/"}
+ )
if item['pubdate'] is not None:
handler.addQuickElement("pubDate", rfc2822_date(item['pubdate']))
@@ -324,8 +323,7 @@ class Rss201rev2Feed(RssFeed):
if item['unique_id'] is not None:
guid_attrs = {}
if isinstance(item.get('unique_id_is_permalink'), bool):
- guid_attrs['isPermaLink'] = str(
- item['unique_id_is_permalink']).lower()
+ guid_attrs['isPermaLink'] = str(item['unique_id_is_permalink']).lower()
handler.addQuickElement("guid", item['unique_id'], guid_attrs)
if item['ttl'] is not None:
handler.addQuickElement("ttl", item['ttl'])
diff --git a/django/utils/html.py b/django/utils/html.py
index de515ef8e9..a5cb56ec9e 100644
--- a/django/utils/html.py
+++ b/django/utils/html.py
@@ -38,8 +38,8 @@ html_gunk_re = re.compile(
r'(?:<br clear="all">|<i><\/i>|<b><\/b>|<em><\/em>|<strong><\/strong>|'
'<\/?smallcaps>|<\/?uppercase>)', re.IGNORECASE)
hard_coded_bullets_re = re.compile(
- r'((?:<p>(?:%s).*?[a-zA-Z].*?</p>\s*)+)' % '|'.join(re.escape(x)
- for x in DOTS), re.DOTALL)
+ r'((?:<p>(?:%s).*?[a-zA-Z].*?</p>\s*)+)' % '|'.join(re.escape(x) for x in DOTS), re.DOTALL
+)
trailing_empty_content_re = re.compile(r'(?:<p>(?:&nbsp;|\s|<br \/>)*?</p>\s*)+\Z')
@@ -53,8 +53,10 @@ def escape(text):
marked as such. This may result in double-escaping. If this is a concern,
use conditional_escape() instead.
"""
- return mark_safe(force_text(text).replace('&', '&amp;').replace('<', '&lt;')
- .replace('>', '&gt;').replace('"', '&quot;').replace("'", '&#39;'))
+ return mark_safe(
+ force_text(text).replace('&', '&amp;').replace('<', '&lt;')
+ .replace('>', '&gt;').replace('"', '&quot;').replace("'", '&#39;')
+ )
_js_escapes = {
ord('\\'): '\\u005C',
diff --git a/django/utils/ipv6.py b/django/utils/ipv6.py
index 819b6a299a..c41f1e2b46 100644
--- a/django/utils/ipv6.py
+++ b/django/utils/ipv6.py
@@ -9,7 +9,7 @@ from django.utils.translation import ugettext_lazy as _
def clean_ipv6_address(ip_str, unpack_ipv4=False,
- error_message=_("This is not a valid IPv6 address.")):
+ error_message=_("This is not a valid IPv6 address.")):
"""
Cleans an IPv6 address string.
diff --git a/django/utils/lorem_ipsum.py b/django/utils/lorem_ipsum.py
index 19bf899613..a9459f4395 100644
--- a/django/utils/lorem_ipsum.py
+++ b/django/utils/lorem_ipsum.py
@@ -16,39 +16,43 @@ COMMON_P = (
'mollit anim id est laborum.'
)
-WORDS = ('exercitationem', 'perferendis', 'perspiciatis', 'laborum', 'eveniet',
- 'sunt', 'iure', 'nam', 'nobis', 'eum', 'cum', 'officiis', 'excepturi',
- 'odio', 'consectetur', 'quasi', 'aut', 'quisquam', 'vel', 'eligendi',
- 'itaque', 'non', 'odit', 'tempore', 'quaerat', 'dignissimos',
- 'facilis', 'neque', 'nihil', 'expedita', 'vitae', 'vero', 'ipsum',
- 'nisi', 'animi', 'cumque', 'pariatur', 'velit', 'modi', 'natus',
- 'iusto', 'eaque', 'sequi', 'illo', 'sed', 'ex', 'et', 'voluptatibus',
- 'tempora', 'veritatis', 'ratione', 'assumenda', 'incidunt', 'nostrum',
- 'placeat', 'aliquid', 'fuga', 'provident', 'praesentium', 'rem',
- 'necessitatibus', 'suscipit', 'adipisci', 'quidem', 'possimus',
- 'voluptas', 'debitis', 'sint', 'accusantium', 'unde', 'sapiente',
- 'voluptate', 'qui', 'aspernatur', 'laudantium', 'soluta', 'amet',
- 'quo', 'aliquam', 'saepe', 'culpa', 'libero', 'ipsa', 'dicta',
- 'reiciendis', 'nesciunt', 'doloribus', 'autem', 'impedit', 'minima',
- 'maiores', 'repudiandae', 'ipsam', 'obcaecati', 'ullam', 'enim',
- 'totam', 'delectus', 'ducimus', 'quis', 'voluptates', 'dolores',
- 'molestiae', 'harum', 'dolorem', 'quia', 'voluptatem', 'molestias',
- 'magni', 'distinctio', 'omnis', 'illum', 'dolorum', 'voluptatum', 'ea',
- 'quas', 'quam', 'corporis', 'quae', 'blanditiis', 'atque', 'deserunt',
- 'laboriosam', 'earum', 'consequuntur', 'hic', 'cupiditate',
- 'quibusdam', 'accusamus', 'ut', 'rerum', 'error', 'minus', 'eius',
- 'ab', 'ad', 'nemo', 'fugit', 'officia', 'at', 'in', 'id', 'quos',
- 'reprehenderit', 'numquam', 'iste', 'fugiat', 'sit', 'inventore',
- 'beatae', 'repellendus', 'magnam', 'recusandae', 'quod', 'explicabo',
- 'doloremque', 'aperiam', 'consequatur', 'asperiores', 'commodi',
- 'optio', 'dolor', 'labore', 'temporibus', 'repellat', 'veniam',
- 'architecto', 'est', 'esse', 'mollitia', 'nulla', 'a', 'similique',
- 'eos', 'alias', 'dolore', 'tenetur', 'deleniti', 'porro', 'facere',
- 'maxime', 'corrupti')
+WORDS = (
+ 'exercitationem', 'perferendis', 'perspiciatis', 'laborum', 'eveniet',
+ 'sunt', 'iure', 'nam', 'nobis', 'eum', 'cum', 'officiis', 'excepturi',
+ 'odio', 'consectetur', 'quasi', 'aut', 'quisquam', 'vel', 'eligendi',
+ 'itaque', 'non', 'odit', 'tempore', 'quaerat', 'dignissimos',
+ 'facilis', 'neque', 'nihil', 'expedita', 'vitae', 'vero', 'ipsum',
+ 'nisi', 'animi', 'cumque', 'pariatur', 'velit', 'modi', 'natus',
+ 'iusto', 'eaque', 'sequi', 'illo', 'sed', 'ex', 'et', 'voluptatibus',
+ 'tempora', 'veritatis', 'ratione', 'assumenda', 'incidunt', 'nostrum',
+ 'placeat', 'aliquid', 'fuga', 'provident', 'praesentium', 'rem',
+ 'necessitatibus', 'suscipit', 'adipisci', 'quidem', 'possimus',
+ 'voluptas', 'debitis', 'sint', 'accusantium', 'unde', 'sapiente',
+ 'voluptate', 'qui', 'aspernatur', 'laudantium', 'soluta', 'amet',
+ 'quo', 'aliquam', 'saepe', 'culpa', 'libero', 'ipsa', 'dicta',
+ 'reiciendis', 'nesciunt', 'doloribus', 'autem', 'impedit', 'minima',
+ 'maiores', 'repudiandae', 'ipsam', 'obcaecati', 'ullam', 'enim',
+ 'totam', 'delectus', 'ducimus', 'quis', 'voluptates', 'dolores',
+ 'molestiae', 'harum', 'dolorem', 'quia', 'voluptatem', 'molestias',
+ 'magni', 'distinctio', 'omnis', 'illum', 'dolorum', 'voluptatum', 'ea',
+ 'quas', 'quam', 'corporis', 'quae', 'blanditiis', 'atque', 'deserunt',
+ 'laboriosam', 'earum', 'consequuntur', 'hic', 'cupiditate',
+ 'quibusdam', 'accusamus', 'ut', 'rerum', 'error', 'minus', 'eius',
+ 'ab', 'ad', 'nemo', 'fugit', 'officia', 'at', 'in', 'id', 'quos',
+ 'reprehenderit', 'numquam', 'iste', 'fugiat', 'sit', 'inventore',
+ 'beatae', 'repellendus', 'magnam', 'recusandae', 'quod', 'explicabo',
+ 'doloremque', 'aperiam', 'consequatur', 'asperiores', 'commodi',
+ 'optio', 'dolor', 'labore', 'temporibus', 'repellat', 'veniam',
+ 'architecto', 'est', 'esse', 'mollitia', 'nulla', 'a', 'similique',
+ 'eos', 'alias', 'dolore', 'tenetur', 'deleniti', 'porro', 'facere',
+ 'maxime', 'corrupti',
+)
-COMMON_WORDS = ('lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur',
- 'adipisicing', 'elit', 'sed', 'do', 'eiusmod', 'tempor', 'incididunt',
- 'ut', 'labore', 'et', 'dolore', 'magna', 'aliqua')
+COMMON_WORDS = (
+ 'lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur',
+ 'adipisicing', 'elit', 'sed', 'do', 'eiusmod', 'tempor', 'incididunt',
+ 'ut', 'labore', 'et', 'dolore', 'magna', 'aliqua',
+)
def sentence():
diff --git a/django/utils/text.py b/django/utils/text.py
index 46872372ac..e6849a018d 100644
--- a/django/utils/text.py
+++ b/django/utils/text.py
@@ -278,10 +278,12 @@ def normalize_newlines(text):
@keep_lazy_text
def phone2numeric(phone):
"""Converts a phone number with letters into its numeric equivalent."""
- char2number = {'a': '2', 'b': '2', 'c': '2', 'd': '3', 'e': '3', 'f': '3',
- 'g': '4', 'h': '4', 'i': '4', 'j': '5', 'k': '5', 'l': '5', 'm': '6',
- 'n': '6', 'o': '6', 'p': '7', 'q': '7', 'r': '7', 's': '7', 't': '8',
- 'u': '8', 'v': '8', 'w': '9', 'x': '9', 'y': '9', 'z': '9'}
+ char2number = {
+ 'a': '2', 'b': '2', 'c': '2', 'd': '3', 'e': '3', 'f': '3', 'g': '4',
+ 'h': '4', 'i': '4', 'j': '5', 'k': '5', 'l': '5', 'm': '6', 'n': '6',
+ 'o': '6', 'p': '7', 'q': '7', 'r': '7', 's': '7', 't': '8', 'u': '8',
+ 'v': '8', 'w': '9', 'x': '9', 'y': '9', 'z': '9',
+ }
return ''.join(char2number.get(c, c) for c in phone.lower())
diff --git a/django/utils/translation/__init__.py b/django/utils/translation/__init__.py
index 9004af4998..ecd94390e5 100644
--- a/django/utils/translation/__init__.py
+++ b/django/utils/translation/__init__.py
@@ -120,10 +120,11 @@ def lazy_number(func, resultclass, number=None, **kwargs):
try:
number_value = rhs[number]
except KeyError:
- raise KeyError('Your dictionary lacks key \'%s\'. '
- 'Please provide it, because it is required to '
- 'determine whether string is singular or plural.'
- % number)
+ raise KeyError(
+ "Your dictionary lacks key '%s\'. Please provide "
+ "it, because it is required to determine whether "
+ "string is singular or plural." % number
+ )
else:
number_value = rhs
kwargs['number'] = number_value
diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py
index 34dd7bc768..7a2a1c63a2 100644
--- a/django/utils/translation/trans_real.py
+++ b/django/utils/translation/trans_real.py
@@ -574,8 +574,10 @@ def templatize(src, origin=None):
does so by translating the Django translation tags into standard gettext
function invocations.
"""
- from django.template.base import (Lexer, TOKEN_TEXT, TOKEN_VAR,
- TOKEN_BLOCK, TOKEN_COMMENT, TRANSLATOR_COMMENT_MARK)
+ from django.template.base import (
+ Lexer, TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK, TOKEN_COMMENT,
+ TRANSLATOR_COMMENT_MARK,
+ )
src = force_text(src, settings.FILE_CHARSET)
out = StringIO('')
message_context = None
@@ -690,9 +692,11 @@ def templatize(src, origin=None):
filemsg = ''
if origin:
filemsg = 'file %s, ' % origin
- warn_msg = ("The translator-targeted comment '%s' "
- "(%sline %d) was ignored, because it wasn't the last item "
- "on the line.") % (c, filemsg, comment_lineno_cache)
+ warn_msg = (
+ "The translator-targeted comment '%s' "
+ "(%sline %d) was ignored, because it wasn't "
+ "the last item on the line."
+ ) % (c, filemsg, comment_lineno_cache)
warnings.warn(warn_msg, TranslatorCommentWarning)
lineno_comment_map[comment_lineno_cache] = []
else:
diff --git a/django/utils/version.py b/django/utils/version.py
index 6963899906..f5b0f109e6 100644
--- a/django/utils/version.py
+++ b/django/utils/version.py
@@ -68,9 +68,11 @@ def get_git_changeset():
so it's sufficient for generating the development version numbers.
"""
repo_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- git_log = subprocess.Popen('git log --pretty=format:%ct --quiet -1 HEAD',
- stdout=subprocess.PIPE, stderr=subprocess.PIPE,
- shell=True, cwd=repo_dir, universal_newlines=True)
+ git_log = subprocess.Popen(
+ 'git log --pretty=format:%ct --quiet -1 HEAD',
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE,
+ shell=True, cwd=repo_dir, universal_newlines=True,
+ )
timestamp = git_log.communicate()[0]
try:
timestamp = datetime.datetime.utcfromtimestamp(int(timestamp))