Commit fe995e6c authored by Alex Gaynor's avatar Alex Gaynor
Browse files

Fixed the remaining E302 violations int eh django package

parent 393cdbfa
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ class Media(object):
            getattr(combined, 'add_' + name)(getattr(other, '_' + name, None))
        return combined


def media_property(cls):
    def _media(self):
        # Get the media property of the superclass, if it exists
@@ -131,6 +132,7 @@ def media_property(cls):
            return base
    return property(_media)


class MediaDefiningClass(type):
    """
    Metaclass for classes that can have media definitions.
@@ -162,6 +164,7 @@ class SubWidget(object):
            args.append(self.choices)
        return self.parent_widget.render(*args)


class Widget(six.with_metaclass(MediaDefiningClass)):
    is_hidden = False             # Determines whether this corresponds to an <input type="hidden">.
    needs_multipart_form = False  # Determines does this widget need multipart form
@@ -224,6 +227,7 @@ class Widget(six.with_metaclass(MediaDefiningClass)):
        """
        return id_


class Input(Widget):
    """
    Base class for all <input> widgets (except type='checkbox' and
@@ -279,10 +283,12 @@ class PasswordInput(TextInput):
            value = None
        return super(PasswordInput, self).render(name, value, attrs)


class HiddenInput(Input):
    input_type = 'hidden'
    is_hidden = True


class MultipleHiddenInput(HiddenInput):
    """
    A widget that handles <input type="hidden"> for fields that have a list
@@ -313,6 +319,7 @@ class MultipleHiddenInput(HiddenInput):
            return data.getlist(name)
        return data.get(name, None)


class FileInput(Input):
    input_type = 'file'
    needs_multipart_form = True
@@ -327,6 +334,7 @@ class FileInput(Input):

FILE_INPUT_CONTRADICTION = object()


class ClearableFileInput(FileInput):
    initial_text = ugettext_lazy('Currently')
    input_text = ugettext_lazy('Change')
@@ -389,6 +397,7 @@ class ClearableFileInput(FileInput):
            return False
        return upload


class Textarea(Widget):
    def __init__(self, attrs=None):
        # The 'rows' and 'cols' attributes are required for HTML correctness.
@@ -515,6 +524,7 @@ class Select(Widget):
                output.append(self.render_option(selected_choices, option_value, option_label))
        return '\n'.join(output)


class NullBooleanSelect(Select):
    """
    A Select Widget intended to be used with NullBooleanField.
@@ -849,6 +859,7 @@ class SplitDateTimeWidget(MultiWidget):
            return [value.date(), value.time().replace(microsecond=0)]
        return [None, None]


class SplitHiddenDateTimeWidget(SplitDateTimeWidget):
    """
    A Widget that splits datetime input into two <input type="hidden"> inputs.
+9 −0
Original line number Diff line number Diff line
@@ -269,6 +269,7 @@ class MultiPartParser(object):
        """Cleanup filename from Internet Explorer full paths."""
        return filename and filename[filename.rfind("\\")+1:].strip()


class LazyStream(six.Iterator):
    """
    The LazyStream wrapper allows one to get and "unget" bytes from a stream.
@@ -380,6 +381,7 @@ class LazyStream(six.Iterator):
                " if there is none, report this to the Django developers."
            )


class ChunkIter(six.Iterator):
    """
    An iterable that will yield chunks of data. Given a file-like object as the
@@ -403,6 +405,7 @@ class ChunkIter(six.Iterator):
    def __iter__(self):
        return self


class InterBoundaryIter(six.Iterator):
    """
    A Producer that will iterate over boundaries.
@@ -420,6 +423,7 @@ class InterBoundaryIter(six.Iterator):
        except InputStreamExhausted:
            raise StopIteration()


class BoundaryIter(six.Iterator):
    """
    A Producer that is sensitive to boundaries.
@@ -516,6 +520,7 @@ class BoundaryIter(six.Iterator):
                end -= 1
            return end, next


def exhaust(stream_or_iterable):
    """
    Completely exhausts an iterator or stream.
@@ -534,6 +539,7 @@ def exhaust(stream_or_iterable):
    for __ in iterator:
        pass


def parse_boundary_stream(stream, max_header_size):
    """
    Parses one and exactly one stream that encapsulates a boundary.
@@ -592,6 +598,7 @@ def parse_boundary_stream(stream, max_header_size):

    return (TYPE, outdict, stream)


class Parser(object):
    def __init__(self, stream, boundary):
        self._stream = stream
@@ -603,6 +610,7 @@ class Parser(object):
            # Iterate over each part
            yield parse_boundary_stream(sub_stream, 1024)


def parse_header(line):
    """ Parse the header into a key-value.
        Input (line): bytes, output: unicode for key/name, bytes for value which
@@ -622,6 +630,7 @@ def parse_header(line):
            pdict[name] = value
    return key, pdict


def _parse_header_params(s):
    plist = []
    while s[:1] == b';':
+26 −0
Original line number Diff line number Diff line
@@ -95,9 +95,11 @@ class VariableDoesNotExist(Exception):
        return self.msg % tuple(force_text(p, errors='replace')
                                 for p in self.params)


class InvalidTemplateLibrary(Exception):
    pass


class Origin(object):
    def __init__(self, name):
        self.name = name
@@ -108,6 +110,7 @@ class Origin(object):
    def __str__(self):
        return self.name


class StringOrigin(Origin):
    def __init__(self, source):
        super(StringOrigin, self).__init__(UNKNOWN_SOURCE)
@@ -116,6 +119,7 @@ class StringOrigin(Origin):
    def reload(self):
        return self.source


class Template(object):
    def __init__(self, template_string, origin=None,
                 name='<Unknown Template>'):
@@ -146,6 +150,7 @@ class Template(object):
        finally:
            context.render_context.pop()


def compile_string(template_string, origin):
    "Compiles template_string into NodeList ready for rendering"
    if settings.TEMPLATE_DEBUG:
@@ -157,6 +162,7 @@ def compile_string(template_string, origin):
    parser = parser_class(lexer.tokenize())
    return parser.parse()


class Token(object):
    def __init__(self, token_type, contents):
        # token_type must be TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK or
@@ -184,6 +190,7 @@ class Token(object):
            split.append(bit)
        return split


class Lexer(object):
    def __init__(self, template_string, origin):
        self.template_string = template_string
@@ -235,6 +242,7 @@ class Lexer(object):
        self.lineno += token_string.count('\n')
        return token


class Parser(object):
    def __init__(self, tokens):
        self.tokens = tokens
@@ -370,6 +378,7 @@ class Parser(object):
        else:
            raise TemplateSyntaxError("Invalid filter: '%s'" % filter_name)


class TokenParser(object):
    """
    Subclass this and implement the top() method to parse a template line.
@@ -523,6 +532,7 @@ filter_raw_string = r"""

filter_re = re.compile(filter_raw_string, re.UNICODE | re.VERBOSE)


class FilterExpression(object):
    """
    Parses a variable token and its optional filters (all as a single string),
@@ -644,6 +654,7 @@ class FilterExpression(object):
    def __str__(self):
        return self.token


def resolve_variable(path, context):
    """
    Returns the resolved variable, which may contain attribute syntax, within
@@ -653,6 +664,7 @@ def resolve_variable(path, context):
    """
    return Variable(path).resolve(context)


class Variable(object):
    """
    A template variable, resolvable against a given context. The variable may
@@ -793,6 +805,7 @@ class Variable(object):

        return current


class Node(object):
    # Set this to True for nodes that must be first in the template (although
    # they can be preceded by text nodes.
@@ -822,6 +835,7 @@ class Node(object):
                nodes.extend(nodelist.get_nodes_by_type(nodetype))
        return nodes


class NodeList(list):
    # Set to True the first time a non-TextNode is inserted by
    # extend_nodelist().
@@ -847,6 +861,7 @@ class NodeList(list):
    def render_node(self, node, context):
        return node.render(context)


class TextNode(Node):
    def __init__(self, s):
        self.s = s
@@ -858,6 +873,7 @@ class TextNode(Node):
    def render(self, context):
        return self.s


def render_value_in_context(value, context):
    """
    Converts any value to a string to become part of a rendered template. This
@@ -873,6 +889,7 @@ def render_value_in_context(value, context):
    else:
        return value


class VariableNode(Node):
    def __init__(self, filter_expression):
        self.filter_expression = filter_expression
@@ -893,6 +910,7 @@ class VariableNode(Node):
# Regex for token keyword arguments
kwarg_re = re.compile(r"(?:(\w+)=)?(.+)")


def token_kwargs(bits, parser, support_legacy=False):
    """
    A utility method for parsing token keyword arguments.
@@ -942,6 +960,7 @@ def token_kwargs(bits, parser, support_legacy=False):
            del bits[:1]
    return kwargs


def parse_bits(parser, bits, params, varargs, varkw, defaults,
               takes_context, name):
    """
@@ -1009,6 +1028,7 @@ def parse_bits(parser, bits, params, varargs, varkw, defaults,
            (name, ", ".join("'%s'" % p for p in unhandled_params)))
    return args, kwargs


def generic_tag_compiler(parser, token, params, varargs, varkw, defaults,
                         name, takes_context, node_class):
    """
@@ -1019,6 +1039,7 @@ def generic_tag_compiler(parser, token, params, varargs, varkw, defaults,
                              defaults, takes_context, name)
    return node_class(takes_context, args, kwargs)


class TagHelperNode(Node):
    """
    Base class for tag helper nodes such as SimpleNode, InclusionNode and
@@ -1039,6 +1060,7 @@ class TagHelperNode(Node):
                                for k, v in self.kwargs.items())
        return resolved_args, resolved_kwargs


class Library(object):
    def __init__(self):
        self.filters = {}
@@ -1224,6 +1246,7 @@ class Library(object):
            return func
        return dec


def is_library_missing(name):
    """Check if library that failed to load cannot be found under any
    templatetags directory or does exist but fails to import.
@@ -1240,6 +1263,7 @@ def is_library_missing(name):
    except ImportError:
        return is_library_missing(path)


def import_library(taglib_module):
    """
    Load a template tag library module.
@@ -1268,6 +1292,7 @@ def import_library(taglib_module):

templatetags_modules = []


def get_templatetags_modules():
    """
    Return the list of all available template tag modules.
@@ -1290,6 +1315,7 @@ def get_templatetags_modules():
        templatetags_modules = _templatetags_modules
    return templatetags_modules


def get_library(library_name):
    """
    Load the template library module with the given name.
+2 −0
Original line number Diff line number Diff line
@@ -150,6 +150,7 @@ class RenderContext(BaseContext):
            return d[key]
        return otherwise


# This is a function rather than module-level procedural code because we only
# want it to execute if somebody uses RequestContext.
def get_standard_processors():
@@ -166,6 +167,7 @@ def get_standard_processors():
        _standard_context_processors = tuple(processors)
    return _standard_context_processors


class RequestContext(Context):
    """
    This subclass of template.Context automatically populates itself using
+56 −0
Original line number Diff line number Diff line
@@ -66,18 +66,21 @@ def addslashes(value):
    """
    return value.replace('\\', '\\\\').replace('"', '\\"').replace("'", "\\'")


@register.filter(is_safe=True)
@stringfilter
def capfirst(value):
    """Capitalizes the first character of the value."""
    return value and value[0].upper() + value[1:]


@register.filter("escapejs")
@stringfilter
def escapejs_filter(value):
    """Hex encodes characters for use in JavaScript strings."""
    return escapejs(value)


@register.filter("fix_ampersands", is_safe=True)
@stringfilter
def fix_ampersands_filter(value):
@@ -96,6 +99,7 @@ neg_inf = -1e200 * 1e200
nan = (1e200 * 1e200) // (1e200 * 1e200)
special_floats = [str(pos_inf), str(neg_inf), str(nan)]


@register.filter(is_safe=True)
def floatformat(text, arg=-1):
    """
@@ -179,12 +183,14 @@ def floatformat(text, arg=-1):
    except InvalidOperation:
        return input_val


@register.filter(is_safe=True)
@stringfilter
def iriencode(value):
    """Escapes an IRI value for use in a URL."""
    return force_text(iri_to_uri(value))


@register.filter(is_safe=True, needs_autoescape=True)
@stringfilter
def linenumbers(value, autoescape=None):
@@ -201,12 +207,14 @@ def linenumbers(value, autoescape=None):
            lines[i] = ("%0" + width + "d. %s") % (i + 1, escape(line))
    return mark_safe('\n'.join(lines))


@register.filter(is_safe=True)
@stringfilter
def lower(value):
    """Converts a string into all lowercase."""
    return value.lower()


@register.filter(is_safe=False)
@stringfilter
def make_list(value):
@@ -218,6 +226,7 @@ def make_list(value):
    """
    return list(value)


@register.filter(is_safe=True)
@stringfilter
def slugify(value):
@@ -229,6 +238,7 @@ def slugify(value):
    from django.utils.text import slugify
    return slugify(value)


@register.filter(is_safe=True)
def stringformat(value, arg):
    """
@@ -245,6 +255,7 @@ def stringformat(value, arg):
    except (ValueError, TypeError):
        return ""


@register.filter(is_safe=True)
@stringfilter
def title(value):
@@ -252,6 +263,7 @@ def title(value):
    t = re.sub("([a-z])'([A-Z])", lambda m: m.group(0).lower(), value.title())
    return re.sub("\d([A-Z])", lambda m: m.group(0).lower(), t)


@register.filter(is_safe=True)
@stringfilter
def truncatechars(value, arg):
@@ -266,6 +278,7 @@ def truncatechars(value, arg):
        return value  # Fail silently.
    return Truncator(value).chars(length)


@register.filter(is_safe=True)
@stringfilter
def truncatewords(value, arg):
@@ -282,6 +295,7 @@ def truncatewords(value, arg):
        return value  # Fail silently.
    return Truncator(value).words(length, truncate=' ...')


@register.filter(is_safe=True)
@stringfilter
def truncatewords_html(value, arg):
@@ -298,12 +312,14 @@ def truncatewords_html(value, arg):
        return value  # Fail silently.
    return Truncator(value).words(length, html=True, truncate=' ...')


@register.filter(is_safe=False)
@stringfilter
def upper(value):
    """Converts a string into all uppercase."""
    return value.upper()


@register.filter(is_safe=False)
@stringfilter
def urlencode(value, safe=None):
@@ -320,12 +336,14 @@ def urlencode(value, safe=None):
        kwargs['safe'] = safe
    return urlquote(value, **kwargs)


@register.filter(is_safe=True, needs_autoescape=True)
@stringfilter
def urlize(value, autoescape=None):
    """Converts URLs in plain text into clickable links."""
    return mark_safe(urlize_impl(value, nofollow=True, autoescape=autoescape))


@register.filter(is_safe=True, needs_autoescape=True)
@stringfilter
def urlizetrunc(value, limit, autoescape=None):
@@ -338,12 +356,14 @@ def urlizetrunc(value, limit, autoescape=None):
    return mark_safe(urlize_impl(value, trim_url_limit=int(limit), nofollow=True,
                            autoescape=autoescape))


@register.filter(is_safe=False)
@stringfilter
def wordcount(value):
    """Returns the number of words."""
    return len(value.split())


@register.filter(is_safe=True)
@stringfilter
def wordwrap(value, arg):
@@ -354,6 +374,7 @@ def wordwrap(value, arg):
    """
    return wrap(value, int(arg))


@register.filter(is_safe=True)
@stringfilter
def ljust(value, arg):
@@ -364,6 +385,7 @@ def ljust(value, arg):
    """
    return value.ljust(int(arg))


@register.filter(is_safe=True)
@stringfilter
def rjust(value, arg):
@@ -374,12 +396,14 @@ def rjust(value, arg):
    """
    return value.rjust(int(arg))


@register.filter(is_safe=True)
@stringfilter
def center(value, arg):
    """Centers the value in a field of a given width."""
    return value.center(int(arg))


@register.filter
@stringfilter
def cut(value, arg):
@@ -392,6 +416,7 @@ def cut(value, arg):
        return mark_safe(value)
    return value


###################
# HTML STRINGS    #
###################
@@ -404,6 +429,7 @@ def escape_filter(value):
    """
    return mark_for_escaping(value)


@register.filter(is_safe=True)
@stringfilter
def force_escape(value):
@@ -414,6 +440,7 @@ def force_escape(value):
    """
    return escape(value)


@register.filter("linebreaks", is_safe=True, needs_autoescape=True)
@stringfilter
def linebreaks_filter(value, autoescape=None):
@@ -425,6 +452,7 @@ def linebreaks_filter(value, autoescape=None):
    autoescape = autoescape and not isinstance(value, SafeData)
    return mark_safe(linebreaks(value, autoescape))


@register.filter(is_safe=True, needs_autoescape=True)
@stringfilter
def linebreaksbr(value, autoescape=None):
@@ -438,6 +466,7 @@ def linebreaksbr(value, autoescape=None):
        value = escape(value)
    return mark_safe(value.replace('\n', '<br />'))


@register.filter(is_safe=True)
@stringfilter
def safe(value):
@@ -446,6 +475,7 @@ def safe(value):
    """
    return mark_safe(value)


@register.filter(is_safe=True)
def safeseq(value):
    """
@@ -455,6 +485,7 @@ def safeseq(value):
    """
    return [mark_safe(force_text(obj)) for obj in value]


@register.filter(is_safe=True)
@stringfilter
def removetags(value, tags):
@@ -462,12 +493,14 @@ def removetags(value, tags):
    from django.utils.html import remove_tags
    return remove_tags(value, tags)


@register.filter(is_safe=True)
@stringfilter
def striptags(value):
    """Strips all [X]HTML tags."""
    return strip_tags(value)


###################
# LISTS           #
###################
@@ -483,6 +516,7 @@ def dictsort(value, arg):
    except (TypeError, VariableDoesNotExist):
        return ''


@register.filter(is_safe=False)
def dictsortreversed(value, arg):
    """
@@ -494,6 +528,7 @@ def dictsortreversed(value, arg):
    except (TypeError, VariableDoesNotExist):
        return ''


@register.filter(is_safe=False)
def first(value):
    """Returns the first item in a list."""
@@ -502,6 +537,7 @@ def first(value):
    except IndexError:
        return ''


@register.filter(is_safe=True, needs_autoescape=True)
def join(value, arg, autoescape=None):
    """
@@ -516,6 +552,7 @@ def join(value, arg, autoescape=None):
        return value
    return mark_safe(data)


@register.filter(is_safe=True)
def last(value):
    "Returns the last item in a list"
@@ -524,6 +561,7 @@ def last(value):
    except IndexError:
        return ''


@register.filter(is_safe=True)
def length(value):
    """Returns the length of the value - useful for lists."""
@@ -532,6 +570,7 @@ def length(value):
    except (ValueError, TypeError):
        return ''


@register.filter(is_safe=False)
def length_is(value, arg):
    """Returns a boolean of whether the value's length is the argument."""
@@ -540,11 +579,13 @@ def length_is(value, arg):
    except (ValueError, TypeError):
        return ''


@register.filter(is_safe=True)
def random(value):
    """Returns a random item from the list."""
    return random_module.choice(value)


@register.filter("slice", is_safe=True)
def slice_filter(value, arg):
    """
@@ -566,6 +607,7 @@ def slice_filter(value, arg):
    except (ValueError, TypeError):
        return value  # Fail silently.


@register.filter(is_safe=True, needs_autoescape=True)
def unordered_list(value, autoescape=None):
    """
@@ -655,6 +697,7 @@ def unordered_list(value, autoescape=None):
    value, converted = convert_old_style_list(value)
    return mark_safe(_helper(value))


###################
# INTEGERS        #
###################
@@ -670,6 +713,7 @@ def add(value, arg):
        except Exception:
            return ''


@register.filter(is_safe=False)
def get_digit(value, arg):
    """
@@ -690,6 +734,7 @@ def get_digit(value, arg):
    except IndexError:
        return 0


###################
# DATES           #
###################
@@ -709,6 +754,7 @@ def date(value, arg=None):
        except AttributeError:
            return ''


@register.filter(expects_localtime=True, is_safe=False)
def time(value, arg=None):
    """Formats a time according to the given format."""
@@ -724,6 +770,7 @@ def time(value, arg=None):
        except AttributeError:
            return ''


@register.filter("timesince", is_safe=False)
def timesince_filter(value, arg=None):
    """Formats a date as the time since that date (i.e. "4 days, 6 hours")."""
@@ -736,6 +783,7 @@ def timesince_filter(value, arg=None):
    except (ValueError, TypeError):
        return ''


@register.filter("timeuntil", is_safe=False)
def timeuntil_filter(value, arg=None):
    """Formats a date as the time until that date (i.e. "4 days, 6 hours")."""
@@ -746,6 +794,7 @@ def timeuntil_filter(value, arg=None):
    except (ValueError, TypeError):
        return ''


###################
# LOGIC           #
###################
@@ -755,6 +804,7 @@ def default(value, arg):
    """If value is unavailable, use given default."""
    return value or arg


@register.filter(is_safe=False)
def default_if_none(value, arg):
    """If value is None, use given default."""
@@ -762,11 +812,13 @@ def default_if_none(value, arg):
        return arg
    return value


@register.filter(is_safe=False)
def divisibleby(value, arg):
    """Returns True if the value is devisible by the argument."""
    return int(value) % int(arg) == 0


@register.filter(is_safe=False)
def yesno(value, arg=None):
    """
@@ -799,6 +851,7 @@ def yesno(value, arg=None):
        return yes
    return no


###################
# MISC            #
###################
@@ -838,6 +891,7 @@ def filesizeformat(bytes):

    return avoid_wrapping(value)


@register.filter(is_safe=False)
def pluralize(value, arg='s'):
    """
@@ -882,11 +936,13 @@ def pluralize(value, arg='s'):
            pass
    return singular_suffix


@register.filter("phone2numeric", is_safe=True)
def phone2numeric_filter(value):
    """Takes a phone number and converts it in to its numerical equivalent."""
    return phone2numeric(value)


@register.filter(is_safe=True)
def pprint(value):
    """A wrapper around pprint.pprint -- for debugging, really."""
Loading