← Back to team overview

divmod-dev team mailing list archive

[Merge] lp:~divmod-dev/divmod.org/1095248-remove-pyflakes into lp:divmod.org

 

Florent has proposed merging lp:~divmod-dev/divmod.org/1095248-remove-pyflakes into lp:divmod.org.

Requested reviews:
  Divmod-dev (divmod-dev)
Related bugs:
  Bug #1095248 in Divmod: "move Pyflakes to its own repository"
  https://bugs.launchpad.net/divmod.org/+bug/1095248

For more details, see:
https://code.launchpad.net/~divmod-dev/divmod.org/1095248-remove-pyflakes/+merge/141590

Move Pyflakes out of the divmod.org's repository
-- 
https://code.launchpad.net/~divmod-dev/divmod.org/1095248-remove-pyflakes/+merge/141590
Your team Divmod-dev is requested to review the proposed merge of lp:~divmod-dev/divmod.org/1095248-remove-pyflakes into lp:divmod.org.
=== modified file 'Divmod.pth'
--- Divmod.pth	2008-10-01 18:28:58 +0000
+++ Divmod.pth	2013-01-02 10:12:49 +0000
@@ -1,10 +1,9 @@
-# -*- test-case-name: axiom,combinator,epsilon,xmantissa,nevow,formless,pyflakes,xquotient,reverend,sine,vertex,hyperbola,imaginary,examplegame -*-
+# -*- test-case-name: axiom,combinator,epsilon,xmantissa,nevow,formless,xquotient,reverend,sine,vertex,hyperbola,imaginary,examplegame -*-
 Axiom
 Combinator
 Epsilon
 Mantissa
 Nevow
-Pyflakes
 Quotient
 Reverend
 Sine

=== removed directory 'Pyflakes'
=== removed file 'Pyflakes/LICENSE'
--- Pyflakes/LICENSE	2011-09-03 16:03:07 +0000
+++ Pyflakes/LICENSE	1970-01-01 00:00:00 +0000
@@ -1,20 +0,0 @@
-Copyright 2005-2011 Divmod, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

=== removed file 'Pyflakes/MANIFEST.in'
--- Pyflakes/MANIFEST.in	2011-09-03 16:06:14 +0000
+++ Pyflakes/MANIFEST.in	1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
-include NEWS.txt
-include LICENSE

=== removed file 'Pyflakes/NEWS.txt'
--- Pyflakes/NEWS.txt	2011-09-03 16:03:28 +0000
+++ Pyflakes/NEWS.txt	1970-01-01 00:00:00 +0000
@@ -1,35 +0,0 @@
-0.5.0 (2011-09-02):
-  - Convert pyflakes to use newer _ast infrastructure rather than compiler.
-  - Support for new syntax in 2.7 (including set literals, set comprehensions,
-    and dictionary comprehensions).
-  - Make sure class names don't get bound until after class definition.
-
-0.4.0 (2009-11-25):
-  - Fix reporting for certain SyntaxErrors which lack line number
-    information.
-  - Check for syntax errors more rigorously.
-  - Support checking names used with the class decorator syntax in versions
-    of Python which have it.
-  - Detect local variables which are bound but never used.
-  - Handle permission errors when trying to read source files.
-  - Handle problems with the encoding of source files.
-  - Support importing dotted names so as not to incorrectly report them as
-    redefined unused names.
-  - Support all forms of the with statement.
-  - Consider static `__all__` definitions and avoid reporting unused names
-    if the names are listed there.
-  - Fix incorrect checking of class names with respect to the names of their
-    bases in the class statement.
-  - Support the `__path__` global in `__init__.py`.
-
-0.3.0 (2009-01-30):
-  - Display more informative SyntaxError messages.
-  - Don't hang flymake with unmatched triple quotes (only report a single
-    line of source for a multiline syntax error).
-  - Recognize __builtins__ as a defined name.
-  - Improve pyflakes support for python versions 2.3-2.5
-  - Support for if-else expressions and with statements.
-  - Warn instead of error on non-existant file paths.
-  - Check for __future__ imports after other statements.
-  - Add reporting for some types of import shadowing.
-  - Improve reporting of unbound locals

=== removed directory 'Pyflakes/bin'
=== removed file 'Pyflakes/bin/pyflakes'
--- Pyflakes/bin/pyflakes	2012-07-08 13:48:46 +0000
+++ Pyflakes/bin/pyflakes	1970-01-01 00:00:00 +0000
@@ -1,3 +0,0 @@
-#!/usr/bin/python
-from pyflakes.scripts.pyflakes import main
-main()

=== removed directory 'Pyflakes/pyflakes'
=== removed file 'Pyflakes/pyflakes/__init__.py'
--- Pyflakes/pyflakes/__init__.py	2011-09-03 16:06:14 +0000
+++ Pyflakes/pyflakes/__init__.py	1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
-
-__version__ = '0.5.0'

=== removed file 'Pyflakes/pyflakes/checker.py'
--- Pyflakes/pyflakes/checker.py	2012-01-10 19:09:22 +0000
+++ Pyflakes/pyflakes/checker.py	1970-01-01 00:00:00 +0000
@@ -1,634 +0,0 @@
-# -*- test-case-name: pyflakes -*-
-# (c) 2005-2010 Divmod, Inc.
-# See LICENSE file for details
-
-import __builtin__
-import os.path
-import _ast
-
-from pyflakes import messages
-
-
-# utility function to iterate over an AST node's children, adapted
-# from Python 2.6's standard ast module
-try:
-    import ast
-    iter_child_nodes = ast.iter_child_nodes
-except (ImportError, AttributeError):
-    def iter_child_nodes(node, astcls=_ast.AST):
-        """
-        Yield all direct child nodes of *node*, that is, all fields that are nodes
-        and all items of fields that are lists of nodes.
-        """
-        for name in node._fields:
-            field = getattr(node, name, None)
-            if isinstance(field, astcls):
-                yield field
-            elif isinstance(field, list):
-                for item in field:
-                    yield item
-
-
-class Binding(object):
-    """
-    Represents the binding of a value to a name.
-
-    The checker uses this to keep track of which names have been bound and
-    which names have not. See L{Assignment} for a special type of binding that
-    is checked with stricter rules.
-
-    @ivar used: pair of (L{Scope}, line-number) indicating the scope and
-                line number that this binding was last used
-    """
-
-    def __init__(self, name, source):
-        self.name = name
-        self.source = source
-        self.used = False
-
-
-    def __str__(self):
-        return self.name
-
-
-    def __repr__(self):
-        return '<%s object %r from line %r at 0x%x>' % (self.__class__.__name__,
-                                                        self.name,
-                                                        self.source.lineno,
-                                                        id(self))
-
-
-
-class UnBinding(Binding):
-    '''Created by the 'del' operator.'''
-
-
-
-class Importation(Binding):
-    """
-    A binding created by an import statement.
-
-    @ivar fullName: The complete name given to the import statement,
-        possibly including multiple dotted components.
-    @type fullName: C{str}
-    """
-    def __init__(self, name, source):
-        self.fullName = name
-        name = name.split('.')[0]
-        super(Importation, self).__init__(name, source)
-
-
-
-class Argument(Binding):
-    """
-    Represents binding a name as an argument.
-    """
-
-
-class Definition(Binding):
-    """
-    A binding that defines a function or class.
-    """
-
-
-class Assignment(Binding):
-    """
-    Represents binding a name with an explicit assignment.
-
-    The checker will raise warnings for any Assignment that isn't used. Also,
-    the checker does not consider assignments in tuple/list unpacking to be
-    Assignments, rather it treats them as simple Bindings.
-    """
-
-
-
-class FunctionDefinition(Definition):
-    pass
-
-
-
-class ClassDefinition(Definition):
-    pass
-
-
-
-class ExportBinding(Binding):
-    """
-    A binding created by an C{__all__} assignment.  If the names in the list
-    can be determined statically, they will be treated as names for export and
-    additional checking applied to them.
-
-    The only C{__all__} assignment that can be recognized is one which takes
-    the value of a literal list containing literal strings.  For example::
-
-        __all__ = ["foo", "bar"]
-
-    Names which are imported and not otherwise used but appear in the value of
-    C{__all__} will not have an unused import warning reported for them.
-    """
-    def names(self):
-        """
-        Return a list of the names referenced by this binding.
-        """
-        names = []
-        if isinstance(self.source, _ast.List):
-            for node in self.source.elts:
-                if isinstance(node, _ast.Str):
-                    names.append(node.s)
-        return names
-
-
-
-class Scope(dict):
-    importStarred = False       # set to True when import * is found
-
-
-    def __repr__(self):
-        return '<%s at 0x%x %s>' % (self.__class__.__name__, id(self), dict.__repr__(self))
-
-
-    def __init__(self):
-        super(Scope, self).__init__()
-
-
-
-class ClassScope(Scope):
-    pass
-
-
-
-class FunctionScope(Scope):
-    """
-    I represent a name scope for a function.
-
-    @ivar globals: Names declared 'global' in this function.
-    """
-    def __init__(self):
-        super(FunctionScope, self).__init__()
-        self.globals = {}
-
-
-
-class ModuleScope(Scope):
-    pass
-
-
-# Globally defined names which are not attributes of the __builtin__ module, or
-# are only present on some platforms.
-_MAGIC_GLOBALS = ['__file__', '__builtins__', 'WindowsError']
-
-
-
-class Checker(object):
-    """
-    I check the cleanliness and sanity of Python code.
-
-    @ivar _deferredFunctions: Tracking list used by L{deferFunction}.  Elements
-        of the list are two-tuples.  The first element is the callable passed
-        to L{deferFunction}.  The second element is a copy of the scope stack
-        at the time L{deferFunction} was called.
-
-    @ivar _deferredAssignments: Similar to C{_deferredFunctions}, but for
-        callables which are deferred assignment checks.
-    """
-
-    nodeDepth = 0
-    traceTree = False
-
-    def __init__(self, tree, filename='(none)'):
-        self._deferredFunctions = []
-        self._deferredAssignments = []
-        self.dead_scopes = []
-        self.messages = []
-        self.filename = filename
-        self.scopeStack = [ModuleScope()]
-        self.futuresAllowed = True
-        self.handleChildren(tree)
-        self._runDeferred(self._deferredFunctions)
-        # Set _deferredFunctions to None so that deferFunction will fail
-        # noisily if called after we've run through the deferred functions.
-        self._deferredFunctions = None
-        self._runDeferred(self._deferredAssignments)
-        # Set _deferredAssignments to None so that deferAssignment will fail
-        # noisly if called after we've run through the deferred assignments.
-        self._deferredAssignments = None
-        del self.scopeStack[1:]
-        self.popScope()
-        self.check_dead_scopes()
-
-
-    def deferFunction(self, callable):
-        '''
-        Schedule a function handler to be called just before completion.
-
-        This is used for handling function bodies, which must be deferred
-        because code later in the file might modify the global scope. When
-        `callable` is called, the scope at the time this is called will be
-        restored, however it will contain any new bindings added to it.
-        '''
-        self._deferredFunctions.append((callable, self.scopeStack[:]))
-
-
-    def deferAssignment(self, callable):
-        """
-        Schedule an assignment handler to be called just after deferred
-        function handlers.
-        """
-        self._deferredAssignments.append((callable, self.scopeStack[:]))
-
-
-    def _runDeferred(self, deferred):
-        """
-        Run the callables in C{deferred} using their associated scope stack.
-        """
-        for handler, scope in deferred:
-            self.scopeStack = scope
-            handler()
-
-
-    def scope(self):
-        return self.scopeStack[-1]
-    scope = property(scope)
-
-    def popScope(self):
-        self.dead_scopes.append(self.scopeStack.pop())
-
-
-    def check_dead_scopes(self):
-        """
-        Look at scopes which have been fully examined and report names in them
-        which were imported but unused.
-        """
-        for scope in self.dead_scopes:
-            export = isinstance(scope.get('__all__'), ExportBinding)
-            if export:
-                all = scope['__all__'].names()
-                if os.path.split(self.filename)[1] != '__init__.py':
-                    # Look for possible mistakes in the export list
-                    undefined = set(all) - set(scope)
-                    for name in undefined:
-                        self.report(
-                            messages.UndefinedExport,
-                            scope['__all__'].source.lineno,
-                            name)
-            else:
-                all = []
-
-            # Look for imported names that aren't used.
-            for importation in scope.itervalues():
-                if isinstance(importation, Importation):
-                    if not importation.used and importation.name not in all:
-                        self.report(
-                            messages.UnusedImport,
-                            importation.source.lineno,
-                            importation.name)
-
-
-    def pushFunctionScope(self):
-        self.scopeStack.append(FunctionScope())
-
-    def pushClassScope(self):
-        self.scopeStack.append(ClassScope())
-
-    def report(self, messageClass, *args, **kwargs):
-        self.messages.append(messageClass(self.filename, *args, **kwargs))
-
-    def handleChildren(self, tree):
-        for node in iter_child_nodes(tree):
-            self.handleNode(node, tree)
-
-    def isDocstring(self, node):
-        """
-        Determine if the given node is a docstring, as long as it is at the
-        correct place in the node tree.
-        """
-        return isinstance(node, _ast.Str) or \
-               (isinstance(node, _ast.Expr) and
-                isinstance(node.value, _ast.Str))
-
-    def handleNode(self, node, parent):
-        node.parent = parent
-        if self.traceTree:
-            print '  ' * self.nodeDepth + node.__class__.__name__
-        self.nodeDepth += 1
-        if self.futuresAllowed and not \
-               (isinstance(node, _ast.ImportFrom) or self.isDocstring(node)):
-            self.futuresAllowed = False
-        nodeType = node.__class__.__name__.upper()
-        try:
-            handler = getattr(self, nodeType)
-            handler(node)
-        finally:
-            self.nodeDepth -= 1
-        if self.traceTree:
-            print '  ' * self.nodeDepth + 'end ' + node.__class__.__name__
-
-    def ignore(self, node):
-        pass
-
-    # "stmt" type nodes
-    RETURN = DELETE = PRINT = WHILE = IF = WITH = RAISE = TRYEXCEPT = \
-        TRYFINALLY = ASSERT = EXEC = EXPR = handleChildren
-
-    CONTINUE = BREAK = PASS = ignore
-
-    # "expr" type nodes
-    BOOLOP = BINOP = UNARYOP = IFEXP = DICT = SET = YIELD = COMPARE = \
-    CALL = REPR = ATTRIBUTE = SUBSCRIPT = LIST = TUPLE = handleChildren
-
-    NUM = STR = ELLIPSIS = ignore
-
-    # "slice" type nodes
-    SLICE = EXTSLICE = INDEX = handleChildren
-
-    # expression contexts are node instances too, though being constants
-    LOAD = STORE = DEL = AUGLOAD = AUGSTORE = PARAM = ignore
-
-    # same for operators
-    AND = OR = ADD = SUB = MULT = DIV = MOD = POW = LSHIFT = RSHIFT = \
-    BITOR = BITXOR = BITAND = FLOORDIV = INVERT = NOT = UADD = USUB = \
-    EQ = NOTEQ = LT = LTE = GT = GTE = IS = ISNOT = IN = NOTIN = ignore
-
-    # additional node types
-    COMPREHENSION = EXCEPTHANDLER = KEYWORD = handleChildren
-
-    def addBinding(self, lineno, value, reportRedef=True):
-        '''Called when a binding is altered.
-
-        - `lineno` is the line of the statement responsible for the change
-        - `value` is the optional new value, a Binding instance, associated
-          with the binding; if None, the binding is deleted if it exists.
-        - if `reportRedef` is True (default), rebinding while unused will be
-          reported.
-        '''
-        if not isinstance(self.scope, ClassScope):
-            for scope in self.scopeStack[::-1]:
-                existing = scope.get(value.name)
-                if (isinstance(existing, Importation)
-                        and not existing.used
-                        and (not isinstance(value, Importation) or value.fullName == existing.fullName)
-                        and reportRedef):
-
-                    self.report(messages.RedefinedWhileUnused,
-                                lineno, value.name, scope[value.name].source.lineno)
-
-        existing = self.scope.get(value.name)
-        if isinstance(value, UnBinding):
-            try:
-                del self.scope[value.name]
-            except KeyError:
-                self.report(messages.UndefinedName, lineno, value.name)
-        elif isinstance(existing, Definition) and not existing.used:
-            self.report(messages.RedefinedWhileUnused,
-                        lineno, value.name, existing.source.lineno)
-        else:
-            self.scope[value.name] = value
-
-    def GLOBAL(self, node):
-        """
-        Keep track of globals declarations.
-        """
-        if isinstance(self.scope, FunctionScope):
-            self.scope.globals.update(dict.fromkeys(node.names))
-
-    def LISTCOMP(self, node):
-        # handle generators before element
-        for gen in node.generators:
-            self.handleNode(gen, node)
-        self.handleNode(node.elt, node)
-
-    GENERATOREXP = SETCOMP = LISTCOMP
-
-    # dictionary comprehensions; introduced in Python 2.7
-    def DICTCOMP(self, node):
-        for gen in node.generators:
-            self.handleNode(gen, node)
-        self.handleNode(node.key, node)
-        self.handleNode(node.value, node)
-
-    def FOR(self, node):
-        """
-        Process bindings for loop variables.
-        """
-        vars = []
-        def collectLoopVars(n):
-            if isinstance(n, _ast.Name):
-                vars.append(n.id)
-            elif isinstance(n, _ast.expr_context):
-                return
-            else:
-                for c in iter_child_nodes(n):
-                    collectLoopVars(c)
-
-        collectLoopVars(node.target)
-        for varn in vars:
-            if (isinstance(self.scope.get(varn), Importation)
-                    # unused ones will get an unused import warning
-                    and self.scope[varn].used):
-                self.report(messages.ImportShadowedByLoopVar,
-                            node.lineno, varn, self.scope[varn].source.lineno)
-
-        self.handleChildren(node)
-
-    def NAME(self, node):
-        """
-        Handle occurrence of Name (which can be a load/store/delete access.)
-        """
-        # Locate the name in locals / function / globals scopes.
-        if isinstance(node.ctx, (_ast.Load, _ast.AugLoad)):
-            # try local scope
-            importStarred = self.scope.importStarred
-            try:
-                self.scope[node.id].used = (self.scope, node.lineno)
-            except KeyError:
-                pass
-            else:
-                return
-
-            # try enclosing function scopes
-
-            for scope in self.scopeStack[-2:0:-1]:
-                importStarred = importStarred or scope.importStarred
-                if not isinstance(scope, FunctionScope):
-                    continue
-                try:
-                    scope[node.id].used = (self.scope, node.lineno)
-                except KeyError:
-                    pass
-                else:
-                    return
-
-            # try global scope
-
-            importStarred = importStarred or self.scopeStack[0].importStarred
-            try:
-                self.scopeStack[0][node.id].used = (self.scope, node.lineno)
-            except KeyError:
-                if ((not hasattr(__builtin__, node.id))
-                        and node.id not in _MAGIC_GLOBALS
-                        and not importStarred):
-                    if (os.path.basename(self.filename) == '__init__.py' and
-                        node.id == '__path__'):
-                        # the special name __path__ is valid only in packages
-                        pass
-                    else:
-                        self.report(messages.UndefinedName, node.lineno, node.id)
-        elif isinstance(node.ctx, (_ast.Store, _ast.AugStore)):
-            # if the name hasn't already been defined in the current scope
-            if isinstance(self.scope, FunctionScope) and node.id not in self.scope:
-                # for each function or module scope above us
-                for scope in self.scopeStack[:-1]:
-                    if not isinstance(scope, (FunctionScope, ModuleScope)):
-                        continue
-                    # if the name was defined in that scope, and the name has
-                    # been accessed already in the current scope, and hasn't
-                    # been declared global
-                    if (node.id in scope
-                            and scope[node.id].used
-                            and scope[node.id].used[0] is self.scope
-                            and node.id not in self.scope.globals):
-                        # then it's probably a mistake
-                        self.report(messages.UndefinedLocal,
-                                    scope[node.id].used[1],
-                                    node.id,
-                                    scope[node.id].source.lineno)
-                        break
-
-            if isinstance(node.parent,
-                          (_ast.For, _ast.comprehension, _ast.Tuple, _ast.List)):
-                binding = Binding(node.id, node)
-            elif (node.id == '__all__' and
-                  isinstance(self.scope, ModuleScope)):
-                binding = ExportBinding(node.id, node.parent.value)
-            else:
-                binding = Assignment(node.id, node)
-            if node.id in self.scope:
-                binding.used = self.scope[node.id].used
-            self.addBinding(node.lineno, binding)
-        elif isinstance(node.ctx, _ast.Del):
-            if isinstance(self.scope, FunctionScope) and \
-                   node.id in self.scope.globals:
-                del self.scope.globals[node.id]
-            else:
-                self.addBinding(node.lineno, UnBinding(node.id, node))
-        else:
-            # must be a Param context -- this only happens for names in function
-            # arguments, but these aren't dispatched through here
-            raise RuntimeError(
-                "Got impossible expression context: %r" % (node.ctx,))
-
-
-    def FUNCTIONDEF(self, node):
-        # the decorators attribute is called decorator_list as of Python 2.6
-        if hasattr(node, 'decorators'):
-            for deco in node.decorators:
-                self.handleNode(deco, node)
-        else:
-            for deco in node.decorator_list:
-                self.handleNode(deco, node)
-        self.addBinding(node.lineno, FunctionDefinition(node.name, node))
-        self.LAMBDA(node)
-
-    def LAMBDA(self, node):
-        for default in node.args.defaults:
-            self.handleNode(default, node)
-
-        def runFunction():
-            args = []
-
-            def addArgs(arglist):
-                for arg in arglist:
-                    if isinstance(arg, _ast.Tuple):
-                        addArgs(arg.elts)
-                    else:
-                        if arg.id in args:
-                            self.report(messages.DuplicateArgument,
-                                        node.lineno, arg.id)
-                        args.append(arg.id)
-
-            self.pushFunctionScope()
-            addArgs(node.args.args)
-            # vararg/kwarg identifiers are not Name nodes
-            if node.args.vararg:
-                args.append(node.args.vararg)
-            if node.args.kwarg:
-                args.append(node.args.kwarg)
-            for name in args:
-                self.addBinding(node.lineno, Argument(name, node), reportRedef=False)
-            if isinstance(node.body, list):
-                # case for FunctionDefs
-                for stmt in node.body:
-                    self.handleNode(stmt, node)
-            else:
-                # case for Lambdas
-                self.handleNode(node.body, node)
-            def checkUnusedAssignments():
-                """
-                Check to see if any assignments have not been used.
-                """
-                for name, binding in self.scope.iteritems():
-                    if (not binding.used and not name in self.scope.globals
-                        and isinstance(binding, Assignment)):
-                        self.report(messages.UnusedVariable,
-                                    binding.source.lineno, name)
-            self.deferAssignment(checkUnusedAssignments)
-            self.popScope()
-
-        self.deferFunction(runFunction)
-
-
-    def CLASSDEF(self, node):
-        """
-        Check names used in a class definition, including its decorators, base
-        classes, and the body of its definition.  Additionally, add its name to
-        the current scope.
-        """
-        # decorator_list is present as of Python 2.6
-        for deco in getattr(node, 'decorator_list', []):
-            self.handleNode(deco, node)
-        for baseNode in node.bases:
-            self.handleNode(baseNode, node)
-        self.pushClassScope()
-        for stmt in node.body:
-            self.handleNode(stmt, node)
-        self.popScope()
-        self.addBinding(node.lineno, ClassDefinition(node.name, node))
-
-    def ASSIGN(self, node):
-        self.handleNode(node.value, node)
-        for target in node.targets:
-            self.handleNode(target, node)
-
-    def AUGASSIGN(self, node):
-        # AugAssign is awkward: must set the context explicitly and visit twice,
-        # once with AugLoad context, once with AugStore context
-        node.target.ctx = _ast.AugLoad()
-        self.handleNode(node.target, node)
-        self.handleNode(node.value, node)
-        node.target.ctx = _ast.AugStore()
-        self.handleNode(node.target, node)
-
-    def IMPORT(self, node):
-        for alias in node.names:
-            name = alias.asname or alias.name
-            importation = Importation(name, node)
-            self.addBinding(node.lineno, importation)
-
-    def IMPORTFROM(self, node):
-        if node.module == '__future__':
-            if not self.futuresAllowed:
-                self.report(messages.LateFutureImport, node.lineno,
-                            [n.name for n in node.names])
-        else:
-            self.futuresAllowed = False
-
-        for alias in node.names:
-            if alias.name == '*':
-                self.scope.importStarred = True
-                self.report(messages.ImportStarUsed, node.lineno, node.module)
-                continue
-            name = alias.asname or alias.name
-            importation = Importation(name, node)
-            if node.module == '__future__':
-                importation.used = (self.scope, node.lineno)
-            self.addBinding(node.lineno, importation)

=== removed file 'Pyflakes/pyflakes/messages.py'
--- Pyflakes/pyflakes/messages.py	2011-10-31 15:19:35 +0000
+++ Pyflakes/pyflakes/messages.py	1970-01-01 00:00:00 +0000
@@ -1,94 +0,0 @@
-# (c) 2005 Divmod, Inc.  See LICENSE file for details
-
-class Message(object):
-    message = ''
-    message_args = ()
-    def __init__(self, filename, lineno):
-        self.filename = filename
-        self.lineno = lineno
-    def __str__(self):
-        return '%s:%s: %s' % (self.filename, self.lineno, self.message % self.message_args)
-
-
-class UnusedImport(Message):
-    message = '%r imported but unused'
-    def __init__(self, filename, lineno, name):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name,)
-
-
-class RedefinedWhileUnused(Message):
-    message = 'redefinition of unused %r from line %r'
-    def __init__(self, filename, lineno, name, orig_lineno):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
-
-
-class ImportShadowedByLoopVar(Message):
-    message = 'import %r from line %r shadowed by loop variable'
-    def __init__(self, filename, lineno, name, orig_lineno):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
-
-
-class ImportStarUsed(Message):
-    message = "'from %s import *' used; unable to detect undefined names"
-    def __init__(self, filename, lineno, modname):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (modname,)
-
-
-class UndefinedName(Message):
-    message = 'undefined name %r'
-    def __init__(self, filename, lineno, name):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name,)
-
-
-
-class UndefinedExport(Message):
-    message = 'undefined name %r in __all__'
-    def __init__(self, filename, lineno, name):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name,)
-
-
-
-class UndefinedLocal(Message):
-    message = "local variable %r (defined in enclosing scope on line %r) referenced before assignment"
-    def __init__(self, filename, lineno, name, orig_lineno):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
-
-
-class DuplicateArgument(Message):
-    message = 'duplicate argument %r in function definition'
-    def __init__(self, filename, lineno, name):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name,)
-
-
-class Redefined(Message):
-    message = 'redefinition of %r from line %r'
-    def __init__(self, filename, lineno, name, orig_lineno):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
-
-
-class LateFutureImport(Message):
-    message = 'future import(s) %r after other statements'
-    def __init__(self, filename, lineno, names):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (names,)
-
-
-class UnusedVariable(Message):
-    """
-    Indicates that a variable has been explicity assigned to but not actually
-    used.
-    """
-
-    message = 'local variable %r is assigned to but never used'
-    def __init__(self, filename, lineno, names):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (names,)

=== removed file 'Pyflakes/pyflakes/reporter.py'
--- Pyflakes/pyflakes/reporter.py	2012-10-23 13:07:35 +0000
+++ Pyflakes/pyflakes/reporter.py	1970-01-01 00:00:00 +0000
@@ -1,79 +0,0 @@
-# (c) 2005-2012 Divmod, Inc.
-# See LICENSE file for details
-
-import sys
-
-
-class Reporter(object):
-    """
-    Formats the results of pyflakes checks to users.
-    """
-
-    def __init__(self, warningStream, errorStream):
-        """
-        Construct a L{Reporter}.
-
-        @param warningStream: A file-like object where warnings will be
-            written to.  The stream's C{write} method must accept unicode.
-            C{sys.stdout} is a good value.
-        @param errorStream: A file-like object where error output will be
-            written to.  The stream's C{write} method must accept unicode.
-            C{sys.stderr} is a good value.
-        """
-        self._stdout = warningStream
-        self._stderr = errorStream
-
-
-    def unexpectedError(self, filename, msg):
-        """
-        An unexpected error occurred trying to process C{filename}.
-
-        @param filename: The path to a file that we could not process.
-        @ptype filename: C{unicode}
-        @param msg: A message explaining the problem.
-        @ptype msg: C{unicode}
-        """
-        self._stderr.write(u"%s: %s\n" % (filename, msg))
-
-
-    def syntaxError(self, filename, msg, lineno, offset, text):
-        """
-        There was a syntax errror in C{filename}.
-
-        @param filename: The path to the file with the syntax error.
-        @ptype filename: C{unicode}
-        @param msg: An explanation of the syntax error.
-        @ptype msg: C{unicode}
-        @param lineno: The line number where the syntax error occurred.
-        @ptype lineno: C{int}
-        @param offset: The column on which the syntax error occurred.
-        @ptype offset: C{int}
-        @param text: The source code containing the syntax error.
-        @ptype text: C{unicode}
-        """
-        line = text.splitlines()[-1]
-        if offset is not None:
-            offset = offset - (len(text) - len(line))
-        self._stderr.write(u'%s:%d: %s\n' % (filename, lineno, msg))
-        self._stderr.write(line)
-        self._stderr.write(u'\n')
-        if offset is not None:
-            self._stderr.write(u" " * (offset + 1) + u"^\n")
-
-
-    def flake(self, message):
-        """
-        pyflakes found something wrong with the code.
-
-        @param: A L{pyflakes.messages.Message}.
-        """
-        self._stdout.write(unicode(message))
-        self._stdout.write(u'\n')
-
-
-
-def _makeDefaultReporter():
-    """
-    Make a reporter that can be used when no reporter is specified.
-    """
-    return Reporter(sys.stdout, sys.stderr)

=== removed directory 'Pyflakes/pyflakes/scripts'
=== removed file 'Pyflakes/pyflakes/scripts/__init__.py'
=== removed file 'Pyflakes/pyflakes/scripts/pyflakes.py'
--- Pyflakes/pyflakes/scripts/pyflakes.py	2012-10-23 11:48:54 +0000
+++ Pyflakes/pyflakes/scripts/pyflakes.py	1970-01-01 00:00:00 +0000
@@ -1,122 +0,0 @@
-"""
-Implementation of the command-line I{pyflakes} tool.
-"""
-
-from __future__ import absolute_import
-
-import sys
-import os
-import _ast
-
-from pyflakes import checker
-from pyflakes import reporter as modReporter
-
-
-def check(codeString, filename, reporter=None):
-    """
-    Check the Python source given by C{codeString} for flakes.
-
-    @param codeString: The Python source to check.
-    @type codeString: C{str}
-
-    @param filename: The name of the file the source came from, used to report
-        errors.
-    @type filename: C{str}
-
-    @param reporter: A L{Reporter} instance, where errors and warnings will be
-        reported.
-
-    @return: The number of warnings emitted.
-    @rtype: C{int}
-    """
-    if reporter is None:
-        reporter = modReporter._makeDefaultReporter()
-    # First, compile into an AST and handle syntax errors.
-    try:
-        tree = compile(codeString, filename, "exec", _ast.PyCF_ONLY_AST)
-    except SyntaxError, value:
-        msg = value.args[0]
-
-        (lineno, offset, text) = value.lineno, value.offset, value.text
-
-        # If there's an encoding problem with the file, the text is None.
-        if text is None:
-            # Avoid using msg, since for the only known case, it contains a
-            # bogus message that claims the encoding the file declared was
-            # unknown.
-            reporter.unexpectedError(filename, u'problem decoding source')
-        else:
-            reporter.syntaxError(filename, msg, lineno, offset, text)
-        return 1
-    else:
-        # Okay, it's syntactically valid.  Now check it.
-        w = checker.Checker(tree, filename)
-        w.messages.sort(lambda a, b: cmp(a.lineno, b.lineno))
-        for warning in w.messages:
-            reporter.flake(warning)
-        return len(w.messages)
-
-
-def checkPath(filename, reporter=None):
-    """
-    Check the given path, printing out any warnings detected.
-
-    @param reporter: A L{Reporter} instance, where errors and warnings will be
-        reported.
-
-    @return: the number of warnings printed
-    """
-    if reporter is None:
-        reporter = modReporter._makeDefaultReporter()
-    try:
-        return check(file(filename, 'U').read() + '\n', filename, reporter)
-    except IOError, msg:
-        reporter.unexpectedError(filename, msg.args[1])
-        return 1
-
-
-
-def iterSourceCode(paths):
-    """
-    Iterate over all Python source files in C{paths}.
-
-    @param paths: A list of paths.  Directories will be recursed into and
-        any .py files found will be yielded.  Any non-directories will be
-        yielded as-is.
-    """
-    for path in paths:
-        if os.path.isdir(path):
-            for dirpath, dirnames, filenames in os.walk(path):
-                for filename in filenames:
-                    if filename.endswith('.py'):
-                        yield os.path.join(dirpath, filename)
-        else:
-            yield path
-
-
-
-def checkRecursive(paths, reporter):
-    """
-    Recursively check all source files in C{paths}.
-
-    @param paths: A list of paths to Python source files and directories
-        containing Python source files.
-    @param reporter: A L{Reporter} where all of the warnings and errors
-        will be reported to.
-    @return: The number of warnings found.
-    """
-    warnings = 0
-    for sourcePath in iterSourceCode(paths):
-        warnings += checkPath(sourcePath, reporter)
-    return warnings
-
-
-
-def main():
-    args = sys.argv[1:]
-    reporter = modReporter._makeDefaultReporter()
-    if args:
-        warnings = checkRecursive(args, reporter)
-    else:
-        warnings = check(sys.stdin.read(), '<stdin>', reporter)
-    raise SystemExit(warnings > 0)

=== removed directory 'Pyflakes/pyflakes/test'
=== removed file 'Pyflakes/pyflakes/test/__init__.py'
=== removed file 'Pyflakes/pyflakes/test/harness.py'
--- Pyflakes/pyflakes/test/harness.py	2010-04-13 14:53:04 +0000
+++ Pyflakes/pyflakes/test/harness.py	1970-01-01 00:00:00 +0000
@@ -1,27 +0,0 @@
-
-import textwrap
-import _ast
-
-from twisted.trial import unittest
-
-from pyflakes import checker
-
-
-class Test(unittest.TestCase):
-
-    def flakes(self, input, *expectedOutputs, **kw):
-        ast = compile(textwrap.dedent(input), "<test>", "exec",
-                      _ast.PyCF_ONLY_AST)
-        w = checker.Checker(ast, **kw)
-        outputs = [type(o) for o in w.messages]
-        expectedOutputs = list(expectedOutputs)
-        outputs.sort()
-        expectedOutputs.sort()
-        self.assert_(outputs == expectedOutputs, '''\
-for input:
-%s
-expected outputs:
-%s
-but got:
-%s''' % (input, repr(expectedOutputs), '\n'.join([str(o) for o in w.messages])))
-        return w

=== removed file 'Pyflakes/pyflakes/test/test_imports.py'
--- Pyflakes/pyflakes/test/test_imports.py	2011-10-31 15:19:35 +0000
+++ Pyflakes/pyflakes/test/test_imports.py	1970-01-01 00:00:00 +0000
@@ -1,670 +0,0 @@
-
-from sys import version_info
-
-from pyflakes import messages as m
-from pyflakes.test import harness
-
-class Test(harness.Test):
-
-    def test_unusedImport(self):
-        self.flakes('import fu, bar', m.UnusedImport, m.UnusedImport)
-        self.flakes('from baz import fu, bar', m.UnusedImport, m.UnusedImport)
-
-    def test_aliasedImport(self):
-        self.flakes('import fu as FU, bar as FU', m.RedefinedWhileUnused, m.UnusedImport)
-        self.flakes('from moo import fu as FU, bar as FU', m.RedefinedWhileUnused, m.UnusedImport)
-
-    def test_usedImport(self):
-        self.flakes('import fu; print fu')
-        self.flakes('from baz import fu; print fu')
-
-    def test_redefinedWhileUnused(self):
-        self.flakes('import fu; fu = 3', m.RedefinedWhileUnused)
-        self.flakes('import fu; del fu', m.RedefinedWhileUnused)
-        self.flakes('import fu; fu, bar = 3', m.RedefinedWhileUnused)
-        self.flakes('import fu; [fu, bar] = 3', m.RedefinedWhileUnused)
-
-    def test_redefinedByFunction(self):
-        self.flakes('''
-        import fu
-        def fu():
-            pass
-        ''', m.RedefinedWhileUnused)
-
-    def test_redefinedInNestedFunction(self):
-        """
-        Test that shadowing a global name with a nested function definition
-        generates a warning.
-        """
-        self.flakes('''
-        import fu
-        def bar():
-            def baz():
-                def fu():
-                    pass
-        ''', m.RedefinedWhileUnused, m.UnusedImport)
-
-    def test_redefinedByClass(self):
-        self.flakes('''
-        import fu
-        class fu:
-            pass
-        ''', m.RedefinedWhileUnused)
-
-
-    def test_redefinedBySubclass(self):
-        """
-        If an imported name is redefined by a class statement which also uses
-        that name in the bases list, no warning is emitted.
-        """
-        self.flakes('''
-        from fu import bar
-        class bar(bar):
-            pass
-        ''')
-
-
-    def test_redefinedInClass(self):
-        """
-        Test that shadowing a global with a class attribute does not produce a
-        warning.
-        """
-        self.flakes('''
-        import fu
-        class bar:
-            fu = 1
-        print fu
-        ''')
-
-    def test_usedInFunction(self):
-        self.flakes('''
-        import fu
-        def fun():
-            print fu
-        ''')
-
-    def test_shadowedByParameter(self):
-        self.flakes('''
-        import fu
-        def fun(fu):
-            print fu
-        ''', m.UnusedImport)
-
-        self.flakes('''
-        import fu
-        def fun(fu):
-            print fu
-        print fu
-        ''')
-
-    def test_newAssignment(self):
-        self.flakes('fu = None')
-
-    def test_usedInGetattr(self):
-        self.flakes('import fu; fu.bar.baz')
-        self.flakes('import fu; "bar".fu.baz', m.UnusedImport)
-
-    def test_usedInSlice(self):
-        self.flakes('import fu; print fu.bar[1:]')
-
-    def test_usedInIfBody(self):
-        self.flakes('''
-        import fu
-        if True: print fu
-        ''')
-
-    def test_usedInIfConditional(self):
-        self.flakes('''
-        import fu
-        if fu: pass
-        ''')
-
-    def test_usedInElifConditional(self):
-        self.flakes('''
-        import fu
-        if False: pass
-        elif fu: pass
-        ''')
-
-    def test_usedInElse(self):
-        self.flakes('''
-        import fu
-        if False: pass
-        else: print fu
-        ''')
-
-    def test_usedInCall(self):
-        self.flakes('import fu; fu.bar()')
-
-    def test_usedInClass(self):
-        self.flakes('''
-        import fu
-        class bar:
-            bar = fu
-        ''')
-
-    def test_usedInClassBase(self):
-        self.flakes('''
-        import fu
-        class bar(object, fu.baz):
-            pass
-        ''')
-
-    def test_notUsedInNestedScope(self):
-        self.flakes('''
-        import fu
-        def bleh():
-            pass
-        print fu
-        ''')
-
-    def test_usedInFor(self):
-        self.flakes('''
-        import fu
-        for bar in range(9):
-            print fu
-        ''')
-
-    def test_usedInForElse(self):
-        self.flakes('''
-        import fu
-        for bar in range(10):
-            pass
-        else:
-            print fu
-        ''')
-
-    def test_redefinedByFor(self):
-        self.flakes('''
-        import fu
-        for fu in range(2):
-            pass
-        ''', m.RedefinedWhileUnused)
-
-    def test_shadowedByFor(self):
-        """
-        Test that shadowing a global name with a for loop variable generates a
-        warning.
-        """
-        self.flakes('''
-        import fu
-        fu.bar()
-        for fu in ():
-            pass
-        ''', m.ImportShadowedByLoopVar)
-
-    def test_shadowedByForDeep(self):
-        """
-        Test that shadowing a global name with a for loop variable nested in a
-        tuple unpack generates a warning.
-        """
-        self.flakes('''
-        import fu
-        fu.bar()
-        for (x, y, z, (a, b, c, (fu,))) in ():
-            pass
-        ''', m.ImportShadowedByLoopVar)
-
-    def test_usedInReturn(self):
-        self.flakes('''
-        import fu
-        def fun():
-            return fu
-        ''')
-
-    def test_usedInOperators(self):
-        self.flakes('import fu; 3 + fu.bar')
-        self.flakes('import fu; 3 % fu.bar')
-        self.flakes('import fu; 3 - fu.bar')
-        self.flakes('import fu; 3 * fu.bar')
-        self.flakes('import fu; 3 ** fu.bar')
-        self.flakes('import fu; 3 / fu.bar')
-        self.flakes('import fu; 3 // fu.bar')
-        self.flakes('import fu; -fu.bar')
-        self.flakes('import fu; ~fu.bar')
-        self.flakes('import fu; 1 == fu.bar')
-        self.flakes('import fu; 1 | fu.bar')
-        self.flakes('import fu; 1 & fu.bar')
-        self.flakes('import fu; 1 ^ fu.bar')
-        self.flakes('import fu; 1 >> fu.bar')
-        self.flakes('import fu; 1 << fu.bar')
-
-    def test_usedInAssert(self):
-        self.flakes('import fu; assert fu.bar')
-
-    def test_usedInSubscript(self):
-        self.flakes('import fu; fu.bar[1]')
-
-    def test_usedInLogic(self):
-        self.flakes('import fu; fu and False')
-        self.flakes('import fu; fu or False')
-        self.flakes('import fu; not fu.bar')
-
-    def test_usedInList(self):
-        self.flakes('import fu; [fu]')
-
-    def test_usedInTuple(self):
-        self.flakes('import fu; (fu,)')
-
-    def test_usedInTry(self):
-        self.flakes('''
-        import fu
-        try: fu
-        except: pass
-        ''')
-
-    def test_usedInExcept(self):
-        self.flakes('''
-        import fu
-        try: fu
-        except: pass
-        ''')
-
-    def test_redefinedByExcept(self):
-        self.flakes('''
-        import fu
-        try: pass
-        except Exception, fu: pass
-        ''', m.RedefinedWhileUnused)
-
-    def test_usedInRaise(self):
-        self.flakes('''
-        import fu
-        raise fu.bar
-        ''')
-
-    def test_usedInYield(self):
-        self.flakes('''
-        import fu
-        def gen():
-            yield fu
-        ''')
-
-    def test_usedInDict(self):
-        self.flakes('import fu; {fu:None}')
-        self.flakes('import fu; {1:fu}')
-
-    def test_usedInParameterDefault(self):
-        self.flakes('''
-        import fu
-        def f(bar=fu):
-            pass
-        ''')
-
-    def test_usedInAttributeAssign(self):
-        self.flakes('import fu; fu.bar = 1')
-
-    def test_usedInKeywordArg(self):
-        self.flakes('import fu; fu.bar(stuff=fu)')
-
-    def test_usedInAssignment(self):
-        self.flakes('import fu; bar=fu')
-        self.flakes('import fu; n=0; n+=fu')
-
-    def test_usedInListComp(self):
-        self.flakes('import fu; [fu for _ in range(1)]')
-        self.flakes('import fu; [1 for _ in range(1) if fu]')
-
-    def test_redefinedByListComp(self):
-        self.flakes('import fu; [1 for fu in range(1)]', m.RedefinedWhileUnused)
-
-
-    def test_usedInTryFinally(self):
-        self.flakes('''
-        import fu
-        try: pass
-        finally: fu
-        ''')
-
-        self.flakes('''
-        import fu
-        try: fu
-        finally: pass
-        ''')
-
-    def test_usedInWhile(self):
-        self.flakes('''
-        import fu
-        while 0:
-            fu
-        ''')
-
-        self.flakes('''
-        import fu
-        while fu: pass
-        ''')
-
-    def test_usedInGlobal(self):
-        self.flakes('''
-        import fu
-        def f(): global fu
-        ''', m.UnusedImport)
-
-    def test_usedInBackquote(self):
-        self.flakes('import fu; `fu`')
-
-    def test_usedInExec(self):
-        self.flakes('import fu; exec "print 1" in fu.bar')
-
-    def test_usedInLambda(self):
-        self.flakes('import fu; lambda: fu')
-
-    def test_shadowedByLambda(self):
-        self.flakes('import fu; lambda fu: fu', m.UnusedImport)
-
-    def test_usedInSliceObj(self):
-        self.flakes('import fu; "meow"[::fu]')
-
-    def test_unusedInNestedScope(self):
-        self.flakes('''
-        def bar():
-            import fu
-        fu
-        ''', m.UnusedImport, m.UndefinedName)
-
-    def test_methodsDontUseClassScope(self):
-        self.flakes('''
-        class bar:
-            import fu
-            def fun(self):
-                fu
-        ''', m.UnusedImport, m.UndefinedName)
-
-    def test_nestedFunctionsNestScope(self):
-        self.flakes('''
-        def a():
-            def b():
-                fu
-            import fu
-        ''')
-
-    def test_nestedClassAndFunctionScope(self):
-        self.flakes('''
-        def a():
-            import fu
-            class b:
-                def c(self):
-                    print fu
-        ''')
-
-    def test_importStar(self):
-        self.flakes('from fu import *', m.ImportStarUsed)
-
-
-    def test_packageImport(self):
-        """
-        If a dotted name is imported and used, no warning is reported.
-        """
-        self.flakes('''
-        import fu.bar
-        fu.bar
-        ''')
-
-
-    def test_unusedPackageImport(self):
-        """
-        If a dotted name is imported and not used, an unused import warning is
-        reported.
-        """
-        self.flakes('import fu.bar', m.UnusedImport)
-
-
-    def test_duplicateSubmoduleImport(self):
-        """
-        If a submodule of a package is imported twice, an unused import warning
-        and a redefined while unused warning are reported.
-        """
-        self.flakes('''
-        import fu.bar, fu.bar
-        fu.bar
-        ''', m.RedefinedWhileUnused)
-        self.flakes('''
-        import fu.bar
-        import fu.bar
-        fu.bar
-        ''', m.RedefinedWhileUnused)
-
-
-    def test_differentSubmoduleImport(self):
-        """
-        If two different submodules of a package are imported, no duplicate
-        import warning is reported for the package.
-        """
-        self.flakes('''
-        import fu.bar, fu.baz
-        fu.bar, fu.baz
-        ''')
-        self.flakes('''
-        import fu.bar
-        import fu.baz
-        fu.bar, fu.baz
-        ''')
-
-    def test_assignRHSFirst(self):
-        self.flakes('import fu; fu = fu')
-        self.flakes('import fu; fu, bar = fu')
-        self.flakes('import fu; [fu, bar] = fu')
-        self.flakes('import fu; fu += fu')
-
-    def test_tryingMultipleImports(self):
-        self.flakes('''
-        try:
-            import fu
-        except ImportError:
-            import bar as fu
-        ''')
-    test_tryingMultipleImports.todo = ''
-
-    def test_nonGlobalDoesNotRedefine(self):
-        self.flakes('''
-        import fu
-        def a():
-            fu = 3
-            return fu
-        fu
-        ''')
-
-    def test_functionsRunLater(self):
-        self.flakes('''
-        def a():
-            fu
-        import fu
-        ''')
-
-    def test_functionNamesAreBoundNow(self):
-        self.flakes('''
-        import fu
-        def fu():
-            fu
-        fu
-        ''', m.RedefinedWhileUnused)
-
-    def test_importingForImportError(self):
-        self.flakes('''
-        try:
-            import fu
-        except ImportError:
-            pass
-        ''')
-    test_importingForImportError.todo = ''
-
-    def test_importedInClass(self):
-        '''Imports in class scope can be used through self'''
-        self.flakes('''
-        class c:
-            import i
-            def __init__(self):
-                self.i
-        ''')
-    test_importedInClass.todo = 'requires evaluating attribute access'
-
-    def test_futureImport(self):
-        '''__future__ is special'''
-        self.flakes('from __future__ import division')
-        self.flakes('''
-        "docstring is allowed before future import"
-        from __future__ import division
-        ''')
-
-    def test_futureImportFirst(self):
-        """
-        __future__ imports must come before anything else.
-        """
-        self.flakes('''
-        x = 5
-        from __future__ import division
-        ''', m.LateFutureImport)
-        self.flakes('''
-        from foo import bar
-        from __future__ import division
-        bar
-        ''', m.LateFutureImport)
-
-
-
-class TestSpecialAll(harness.Test):
-    """
-    Tests for suppression of unused import warnings by C{__all__}.
-    """
-    def test_ignoredInFunction(self):
-        """
-        An C{__all__} definition does not suppress unused import warnings in a
-        function scope.
-        """
-        self.flakes('''
-        def foo():
-            import bar
-            __all__ = ["bar"]
-        ''', m.UnusedImport, m.UnusedVariable)
-
-
-    def test_ignoredInClass(self):
-        """
-        An C{__all__} definition does not suppress unused import warnings in a
-        class scope.
-        """
-        self.flakes('''
-        class foo:
-            import bar
-            __all__ = ["bar"]
-        ''', m.UnusedImport)
-
-
-    def test_warningSuppressed(self):
-        """
-        If a name is imported and unused but is named in C{__all__}, no warning
-        is reported.
-        """
-        self.flakes('''
-        import foo
-        __all__ = ["foo"]
-        ''')
-
-
-    def test_unrecognizable(self):
-        """
-        If C{__all__} is defined in a way that can't be recognized statically,
-        it is ignored.
-        """
-        self.flakes('''
-        import foo
-        __all__ = ["f" + "oo"]
-        ''', m.UnusedImport)
-        self.flakes('''
-        import foo
-        __all__ = [] + ["foo"]
-        ''', m.UnusedImport)
-
-
-    def test_unboundExported(self):
-        """
-        If C{__all__} includes a name which is not bound, a warning is emitted.
-        """
-        self.flakes('''
-        __all__ = ["foo"]
-        ''', m.UndefinedExport)
-
-        # Skip this in __init__.py though, since the rules there are a little
-        # different.
-        for filename in ["foo/__init__.py", "__init__.py"]:
-            self.flakes('''
-            __all__ = ["foo"]
-            ''', filename=filename)
-
-
-    def test_usedInGenExp(self):
-        """
-        Using a global in a generator expression results in no warnings.
-        """
-        self.flakes('import fu; (fu for _ in range(1))')
-        self.flakes('import fu; (1 for _ in range(1) if fu)')
-
-
-    def test_redefinedByGenExp(self):
-        """
-        Re-using a global name as the loop variable for a generator
-        expression results in a redefinition warning.
-        """
-        self.flakes('import fu; (1 for fu in range(1))', m.RedefinedWhileUnused)
-
-
-    def test_usedAsDecorator(self):
-        """
-        Using a global name in a decorator statement results in no warnings,
-        but using an undefined name in a decorator statement results in an
-        undefined name warning.
-        """
-        self.flakes('''
-        from interior import decorate
-        @decorate
-        def f():
-            return "hello"
-        ''')
-
-        self.flakes('''
-        from interior import decorate
-        @decorate('value')
-        def f():
-            return "hello"
-        ''')
-
-        self.flakes('''
-        @decorate
-        def f():
-            return "hello"
-        ''', m.UndefinedName)
-
-
-class Python26Tests(harness.Test):
-    """
-    Tests for checking of syntax which is valid in PYthon 2.6 and newer.
-    """
-    if version_info < (2, 6):
-        skip = "Python 2.6 required for class decorator tests."
-
-
-    def test_usedAsClassDecorator(self):
-        """
-        Using an imported name as a class decorator results in no warnings,
-        but using an undefined name as a class decorator results in an
-        undefined name warning.
-        """
-        self.flakes('''
-        from interior import decorate
-        @decorate
-        class foo:
-            pass
-        ''')
-
-        self.flakes('''
-        from interior import decorate
-        @decorate("foo")
-        class bar:
-            pass
-        ''')
-
-        self.flakes('''
-        @decorate
-        class foo:
-            pass
-        ''', m.UndefinedName)

=== removed file 'Pyflakes/pyflakes/test/test_other.py'
--- Pyflakes/pyflakes/test/test_other.py	2011-11-17 16:21:58 +0000
+++ Pyflakes/pyflakes/test/test_other.py	1970-01-01 00:00:00 +0000
@@ -1,654 +0,0 @@
-# (c) 2005-2010 Divmod, Inc.
-# See LICENSE file for details
-
-"""
-Tests for various Pyflakes behavior.
-"""
-
-from sys import version_info
-
-from pyflakes import messages as m
-from pyflakes.test import harness
-
-
-class Test(harness.Test):
-
-    def test_duplicateArgs(self):
-        self.flakes('def fu(bar, bar): pass', m.DuplicateArgument)
-
-    def test_localReferencedBeforeAssignment(self):
-        self.flakes('''
-        a = 1
-        def f():
-            a; a=1
-        f()
-        ''', m.UndefinedName)
-    test_localReferencedBeforeAssignment.todo = 'this requires finding all assignments in the function body first'
-
-    def test_redefinedFunction(self):
-        """
-        Test that shadowing a function definition with another one raises a
-        warning.
-        """
-        self.flakes('''
-        def a(): pass
-        def a(): pass
-        ''', m.RedefinedWhileUnused)
-
-    def test_redefinedClassFunction(self):
-        """
-        Test that shadowing a function definition in a class suite with another
-        one raises a warning.
-        """
-        self.flakes('''
-        class A:
-            def a(): pass
-            def a(): pass
-        ''', m.RedefinedWhileUnused)
-
-    def test_functionDecorator(self):
-        """
-        Test that shadowing a function definition with a decorated version of
-        that function does not raise a warning.
-        """
-        self.flakes('''
-        from somewhere import somedecorator
-
-        def a(): pass
-        a = somedecorator(a)
-        ''')
-
-    def test_classFunctionDecorator(self):
-        """
-        Test that shadowing a function definition in a class suite with a
-        decorated version of that function does not raise a warning.
-        """
-        self.flakes('''
-        class A:
-            def a(): pass
-            a = classmethod(a)
-        ''')
-
-    def test_unaryPlus(self):
-        '''Don't die on unary +'''
-        self.flakes('+1')
-
-
-    def test_undefinedBaseClass(self):
-        """
-        If a name in the base list of a class definition is undefined, a
-        warning is emitted.
-        """
-        self.flakes('''
-        class foo(foo):
-            pass
-        ''', m.UndefinedName)
-
-
-    def test_classNameUndefinedInClassBody(self):
-        """
-        If a class name is used in the body of that class's definition and
-        the name is not already defined, a warning is emitted.
-        """
-        self.flakes('''
-        class foo:
-            foo
-        ''', m.UndefinedName)
-
-
-    def test_classNameDefinedPreviously(self):
-        """
-        If a class name is used in the body of that class's definition and
-        the name was previously defined in some other way, no warning is
-        emitted.
-        """
-        self.flakes('''
-        foo = None
-        class foo:
-            foo
-        ''')
-
-
-    def test_classRedefinition(self):
-        """
-        If a class is defined twice in the same module, a warning is emitted.
-        """
-        self.flakes(
-        '''
-        class Foo:
-            pass
-        class Foo:
-            pass
-        ''', m.RedefinedWhileUnused)
-
-
-    def test_functionRedefinedAsClass(self):
-        """
-        If a function is redefined as a class, a warning is emitted.
-        """
-        self.flakes(
-        '''
-        def Foo():
-            pass
-        class Foo:
-            pass
-        ''', m.RedefinedWhileUnused)
-
-
-    def test_classRedefinedAsFunction(self):
-        """
-        If a class is redefined as a function, a warning is emitted.
-        """
-        self.flakes(
-        '''
-        class Foo:
-            pass
-        def Foo():
-            pass
-        ''', m.RedefinedWhileUnused)
-
-
-    def test_doubleAssignment(self):
-        """
-        If a variable is re-assigned to without being used, no warning is
-        emitted.
-        """
-        self.flakes(
-        '''
-        x = 10
-        x = 20
-        ''', m.RedefinedWhileUnused)
-    test_doubleAssignment.todo = (
-        "Too hard to make this warn but other cases stay silent")
-
-
-    def test_doubleAssignmentConditionally(self):
-        """
-        If a variable is re-assigned within a conditional, no warning is
-        emitted.
-        """
-        self.flakes(
-        '''
-        x = 10
-        if True:
-            x = 20
-        ''')
-
-
-    def test_doubleAssignmentWithUse(self):
-        """
-        If a variable is re-assigned to after being used, no warning is
-        emitted.
-        """
-        self.flakes(
-        '''
-        x = 10
-        y = x * 2
-        x = 20
-        ''')
-
-
-    def test_comparison(self):
-        """
-        If a defined name is used on either side of any of the six comparison
-        operators, no warning is emitted.
-        """
-        self.flakes('''
-        x = 10
-        y = 20
-        x < y
-        x <= y
-        x == y
-        x != y
-        x >= y
-        x > y
-        ''')
-
-
-    def test_identity(self):
-        """
-        If a defined name is used on either side of an identity test, no
-        warning is emitted.
-        """
-        self.flakes('''
-        x = 10
-        y = 20
-        x is y
-        x is not y
-        ''')
-
-
-    def test_containment(self):
-        """
-        If a defined name is used on either side of a containment test, no
-        warning is emitted.
-        """
-        self.flakes('''
-        x = 10
-        y = 20
-        x in y
-        x not in y
-        ''')
-
-
-    def test_loopControl(self):
-        """
-        break and continue statements are supported.
-        """
-        self.flakes('''
-        for x in [1, 2]:
-            break
-        ''')
-        self.flakes('''
-        for x in [1, 2]:
-            continue
-        ''')
-
-
-    def test_ellipsis(self):
-        """
-        Ellipsis in a slice is supported.
-        """
-        self.flakes('''
-        [1, 2][...]
-        ''')
-
-
-    def test_extendedSlice(self):
-        """
-        Extended slices are supported.
-        """
-        self.flakes('''
-        x = 3
-        [1, 2][x,:]
-        ''')
-
-
-
-class TestUnusedAssignment(harness.Test):
-    """
-    Tests for warning about unused assignments.
-    """
-
-    def test_unusedVariable(self):
-        """
-        Warn when a variable in a function is assigned a value that's never
-        used.
-        """
-        self.flakes('''
-        def a():
-            b = 1
-        ''', m.UnusedVariable)
-
-
-    def test_assignToGlobal(self):
-        """
-        Assigning to a global and then not using that global is perfectly
-        acceptable. Do not mistake it for an unused local variable.
-        """
-        self.flakes('''
-        b = 0
-        def a():
-            global b
-            b = 1
-        ''')
-
-
-    def test_assignToMember(self):
-        """
-        Assigning to a member of another object and then not using that member
-        variable is perfectly acceptable. Do not mistake it for an unused
-        local variable.
-        """
-        # XXX: Adding this test didn't generate a failure. Maybe not
-        # necessary?
-        self.flakes('''
-        class b:
-            pass
-        def a():
-            b.foo = 1
-        ''')
-
-
-    def test_assignInForLoop(self):
-        """
-        Don't warn when a variable in a for loop is assigned to but not used.
-        """
-        self.flakes('''
-        def f():
-            for i in range(10):
-                pass
-        ''')
-
-
-    def test_assignInListComprehension(self):
-        """
-        Don't warn when a variable in a list comprehension is assigned to but
-        not used.
-        """
-        self.flakes('''
-        def f():
-            [None for i in range(10)]
-        ''')
-
-
-    def test_generatorExpression(self):
-        """
-        Don't warn when a variable in a generator expression is assigned to but not used.
-        """
-        self.flakes('''
-        def f():
-            (None for i in range(10))
-        ''')
-
-
-    def test_assignmentInsideLoop(self):
-        """
-        Don't warn when a variable assignment occurs lexically after its use.
-        """
-        self.flakes('''
-        def f():
-            x = None
-            for i in range(10):
-                if i > 2:
-                    return x
-                x = i * 2
-        ''')
-
-
-    def test_tupleUnpacking(self):
-        """
-        Don't warn when a variable included in tuple unpacking is unused. It's
-        very common for variables in a tuple unpacking assignment to be unused
-        in good Python code, so warning will only create false positives.
-        """
-        self.flakes('''
-        def f():
-            (x, y) = 1, 2
-        ''')
-
-
-    def test_listUnpacking(self):
-        """
-        Don't warn when a variable included in list unpacking is unused.
-        """
-        self.flakes('''
-        def f():
-            [x, y] = [1, 2]
-        ''')
-
-
-    def test_closedOver(self):
-        """
-        Don't warn when the assignment is used in an inner function.
-        """
-        self.flakes('''
-        def barMaker():
-            foo = 5
-            def bar():
-                return foo
-            return bar
-        ''')
-
-
-    def test_doubleClosedOver(self):
-        """
-        Don't warn when the assignment is used in an inner function, even if
-        that inner function itself is in an inner function.
-        """
-        self.flakes('''
-        def barMaker():
-            foo = 5
-            def bar():
-                def baz():
-                    return foo
-            return bar
-        ''')
-
-
-
-class Python25Test(harness.Test):
-    """
-    Tests for checking of syntax only available in Python 2.5 and newer.
-    """
-    if version_info < (2, 5):
-        skip = "Python 2.5 required for if-else and with tests"
-
-    def test_ifexp(self):
-        """
-        Test C{foo if bar else baz} statements.
-        """
-        self.flakes("a = 'moo' if True else 'oink'")
-        self.flakes("a = foo if True else 'oink'", m.UndefinedName)
-        self.flakes("a = 'moo' if True else bar", m.UndefinedName)
-
-
-    def test_withStatementNoNames(self):
-        """
-        No warnings are emitted for using inside or after a nameless C{with}
-        statement a name defined beforehand.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        bar = None
-        with open("foo"):
-            bar
-        bar
-        ''')
-
-    def test_withStatementSingleName(self):
-        """
-        No warnings are emitted for using a name defined by a C{with} statement
-        within the suite or afterwards.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        with open('foo') as bar:
-            bar
-        bar
-        ''')
-
-
-    def test_withStatementAttributeName(self):
-        """
-        No warnings are emitted for using an attribute as the target of a
-        C{with} statement.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        import foo
-        with open('foo') as foo.bar:
-            pass
-        ''')
-
-
-    def test_withStatementSubscript(self):
-        """
-        No warnings are emitted for using a subscript as the target of a
-        C{with} statement.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        import foo
-        with open('foo') as foo[0]:
-            pass
-        ''')
-
-
-    def test_withStatementSubscriptUndefined(self):
-        """
-        An undefined name warning is emitted if the subscript used as the
-        target of a C{with} statement is not defined.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        import foo
-        with open('foo') as foo[bar]:
-            pass
-        ''', m.UndefinedName)
-
-
-    def test_withStatementTupleNames(self):
-        """
-        No warnings are emitted for using any of the tuple of names defined by
-        a C{with} statement within the suite or afterwards.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        with open('foo') as (bar, baz):
-            bar, baz
-        bar, baz
-        ''')
-
-
-    def test_withStatementListNames(self):
-        """
-        No warnings are emitted for using any of the list of names defined by a
-        C{with} statement within the suite or afterwards.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        with open('foo') as [bar, baz]:
-            bar, baz
-        bar, baz
-        ''')
-
-
-    def test_withStatementComplicatedTarget(self):
-        """
-        If the target of a C{with} statement uses any or all of the valid forms
-        for that part of the grammar (See
-        U{http://docs.python.org/reference/compound_stmts.html#the-with-statement}),
-        the names involved are checked both for definedness and any bindings
-        created are respected in the suite of the statement and afterwards.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        c = d = e = g = h = i = None
-        with open('foo') as [(a, b), c[d], e.f, g[h:i]]:
-            a, b, c, d, e, g, h, i
-        a, b, c, d, e, g, h, i
-        ''')
-
-
-    def test_withStatementSingleNameUndefined(self):
-        """
-        An undefined name warning is emitted if the name first defined by a
-        C{with} statement is used before the C{with} statement.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        bar
-        with open('foo') as bar:
-            pass
-        ''', m.UndefinedName)
-
-
-    def test_withStatementTupleNamesUndefined(self):
-        """
-        An undefined name warning is emitted if a name first defined by a the
-        tuple-unpacking form of the C{with} statement is used before the
-        C{with} statement.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        baz
-        with open('foo') as (bar, baz):
-            pass
-        ''', m.UndefinedName)
-
-
-    def test_withStatementSingleNameRedefined(self):
-        """
-        A redefined name warning is emitted if a name bound by an import is
-        rebound by the name defined by a C{with} statement.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        import bar
-        with open('foo') as bar:
-            pass
-        ''', m.RedefinedWhileUnused)
-
-
-    def test_withStatementTupleNamesRedefined(self):
-        """
-        A redefined name warning is emitted if a name bound by an import is
-        rebound by one of the names defined by the tuple-unpacking form of a
-        C{with} statement.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        import bar
-        with open('foo') as (bar, baz):
-            pass
-        ''', m.RedefinedWhileUnused)
-
-
-    def test_withStatementUndefinedInside(self):
-        """
-        An undefined name warning is emitted if a name is used inside the
-        body of a C{with} statement without first being bound.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        with open('foo') as bar:
-            baz
-        ''', m.UndefinedName)
-
-
-    def test_withStatementNameDefinedInBody(self):
-        """
-        A name defined in the body of a C{with} statement can be used after
-        the body ends without warning.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        with open('foo') as bar:
-            baz = 10
-        baz
-        ''')
-
-
-    def test_withStatementUndefinedInExpression(self):
-        """
-        An undefined name warning is emitted if a name in the I{test}
-        expression of a C{with} statement is undefined.
-        """
-        self.flakes('''
-        from __future__ import with_statement
-        with bar as baz:
-            pass
-        ''', m.UndefinedName)
-
-        self.flakes('''
-        from __future__ import with_statement
-        with bar as bar:
-            pass
-        ''', m.UndefinedName)
-
-
-
-class Python27Test(harness.Test):
-    """
-    Tests for checking of syntax only available in Python 2.7 and newer.
-    """
-    if version_info < (2, 7):
-        skip = "Python 2.7 required for dict/set comprehension tests"
-
-    def test_dictComprehension(self):
-        """
-        Dict comprehensions are properly handled.
-        """
-        self.flakes('''
-        a = {1: x for x in range(10)}
-        ''')
-
-    def test_setComprehensionAndLiteral(self):
-        """
-        Set comprehensions are properly handled.
-        """
-        self.flakes('''
-        a = {1, 2, 3}
-        b = {x for x in range(10)}
-        ''')

=== removed file 'Pyflakes/pyflakes/test/test_script.py'
--- Pyflakes/pyflakes/test/test_script.py	2012-10-23 11:52:32 +0000
+++ Pyflakes/pyflakes/test/test_script.py	1970-01-01 00:00:00 +0000
@@ -1,563 +0,0 @@
-"""
-Tests for L{pyflakes.scripts.pyflakes}.
-"""
-
-import os
-import sys
-from StringIO import StringIO
-
-from twisted.internet import protocol
-from twisted.internet.utils import (
-    _callProtocolWithDeferred,
-    getProcessOutputAndValue,
-    )
-from twisted.python.filepath import FilePath
-from twisted.trial.unittest import TestCase
-
-from pyflakes.messages import UnusedImport
-from pyflakes.reporter import Reporter
-from pyflakes.scripts.pyflakes import (
-    checkPath,
-    checkRecursive,
-    iterSourceCode,
-    )
-
-
-def withStderrTo(stderr, f, *args, **kwargs):
-    """
-    Call C{f} with C{sys.stderr} redirected to C{stderr}.
-    """
-    (outer, sys.stderr) = (sys.stderr, stderr)
-    try:
-        return f(*args, **kwargs)
-    finally:
-        sys.stderr = outer
-
-
-
-class LoggingReporter(object):
-    """
-    Implementation of Reporter that just appends any errors to a list.
-    """
-
-    def __init__(self, log):
-        """
-        Construct a C{LoggingReporter}.
-
-        @param log: A list to append log messages to.
-        """
-        self.log = log
-
-
-    def flake(self, message):
-        self.log.append(('flake', str(message)))
-
-
-    def unexpectedError(self, filename, message):
-        self.log.append(('unexpectedError', filename, message))
-
-
-    def syntaxError(self, filename, msg, lineno, offset, line):
-        self.log.append(('syntaxError', filename, msg, lineno, offset, line))
-
-
-
-class TestIterSourceCode(TestCase):
-    """
-    Tests for L{iterSourceCode}.
-    """
-
-    def test_emptyDirectory(self):
-        """
-        There are no Python files in an empty directory.
-        """
-        tempdir = FilePath(self.mktemp())
-        tempdir.createDirectory()
-        self.assertEqual(list(iterSourceCode([tempdir.path])), [])
-
-
-    def test_singleFile(self):
-        """
-        If the directory contains one Python file, C{iterSourceCode} will find
-        it.
-        """
-        tempdir = FilePath(self.mktemp())
-        tempdir.createDirectory()
-        tempdir.child('foo.py').touch()
-        self.assertEqual(
-            list(iterSourceCode([tempdir.path])),
-            [tempdir.child('foo.py').path])
-
-
-    def test_onlyPythonSource(self):
-        """
-        Files that are not Python source files are not included.
-        """
-        tempdir = FilePath(self.mktemp())
-        tempdir.createDirectory()
-        tempdir.child('foo.pyc').touch()
-        self.assertEqual(list(iterSourceCode([tempdir.path])), [])
-
-
-    def test_recurses(self):
-        """
-        If the Python files are hidden deep down in child directories, we will
-        find them.
-        """
-        tempdir = FilePath(self.mktemp())
-        tempdir.createDirectory()
-        tempdir.child('foo').createDirectory()
-        tempdir.child('foo').child('a.py').touch()
-        tempdir.child('bar').createDirectory()
-        tempdir.child('bar').child('b.py').touch()
-        tempdir.child('c.py').touch()
-        self.assertEqual(
-            sorted(iterSourceCode([tempdir.path])),
-            sorted([tempdir.child('foo').child('a.py').path,
-                    tempdir.child('bar').child('b.py').path,
-                    tempdir.child('c.py').path]))
-
-
-    def test_multipleDirectories(self):
-        """
-        L{iterSourceCode} can be given multiple directories.  It will recurse
-        into each of them.
-        """
-        tempdir = FilePath(self.mktemp())
-        tempdir.createDirectory()
-        foo = tempdir.child('foo')
-        foo.createDirectory()
-        foo.child('a.py').touch()
-        bar = tempdir.child('bar')
-        bar.createDirectory()
-        bar.child('b.py').touch()
-        self.assertEqual(
-            sorted(iterSourceCode([foo.path, bar.path])),
-            sorted([foo.child('a.py').path,
-                    bar.child('b.py').path]))
-
-
-    def test_explicitFiles(self):
-        """
-        If one of the paths given to L{iterSourceCode} is not a directory but
-        a file, it will include that in its output.
-        """
-        tempfile = FilePath(self.mktemp())
-        tempfile.touch()
-        self.assertEqual(list(iterSourceCode([tempfile.path])),
-                         [tempfile.path])
-
-
-
-class TestReporter(TestCase):
-    """
-    Tests for L{Reporter}.
-    """
-
-    def test_syntaxError(self):
-        """
-        C{syntaxError} reports that there was a syntax error in the source
-        file.  It reports to the error stream and includes the filename, line
-        number, error message, actual line of source and a caret pointing to
-        where the error is.
-        """
-        err = StringIO()
-        reporter = Reporter(None, err)
-        reporter.syntaxError('foo.py', 'a problem', 3, 4, 'bad line of source')
-        self.assertEquals(
-            ("foo.py:3: a problem\n"
-             "bad line of source\n"
-             "     ^\n"),
-            err.getvalue())
-
-
-    def test_syntaxErrorNoOffset(self):
-        """
-        C{syntaxError} doesn't include a caret pointing to the error if
-        C{offset} is passed as C{None}.
-        """
-        err = StringIO()
-        reporter = Reporter(None, err)
-        reporter.syntaxError('foo.py', 'a problem', 3, None,
-                             'bad line of source')
-        self.assertEquals(
-            ("foo.py:3: a problem\n"
-             "bad line of source\n"),
-            err.getvalue())
-
-
-    def test_multiLineSyntaxError(self):
-        """
-        If there's a multi-line syntax error, then we only report the last
-        line.  The offset is adjusted so that it is relative to the start of
-        the last line.
-        """
-        err = StringIO()
-        lines = [
-            'bad line of source',
-            'more bad lines of source',
-            ]
-        reporter = Reporter(None, err)
-        reporter.syntaxError('foo.py', 'a problem', 3, len(lines[0]) + 5,
-                             '\n'.join(lines))
-        self.assertEquals(
-            ("foo.py:3: a problem\n" +
-             lines[-1] + "\n" +
-             "     ^\n"),
-            err.getvalue())
-
-
-    def test_unexpectedError(self):
-        """
-        C{unexpectedError} reports an error processing a source file.
-        """
-        err = StringIO()
-        reporter = Reporter(None, err)
-        reporter.unexpectedError(u'source.py', u'error message')
-        self.assertEquals(u'source.py: error message\n', err.getvalue())
-
-
-    def test_flake(self):
-        """
-        C{flake} reports a code warning from Pyflakes.  It is exactly the
-        str() of a L{pyflakes.messages.Message}.
-        """
-        out = StringIO()
-        reporter = Reporter(out, None)
-        message = UnusedImport('foo.py', 42, 'bar')
-        reporter.flake(message)
-        self.assertEquals(out.getvalue(), "%s\n" % (message,))
-
-
-
-class CheckTests(TestCase):
-    """
-    Tests for L{check} and L{checkPath} which check a file for flakes.
-    """
-
-    def makeTempFile(self, content):
-        """
-        Make a temporary file containing C{content} and return a path to it.
-        """
-        path = FilePath(self.mktemp())
-        path.setContent(content)
-        return path.path
-
-
-    def assertHasErrors(self, path, errorList):
-        """
-        Assert that C{path} causes errors.
-
-        @param path: A path to a file to check.
-        @param errorList: A list of errors expected to be printed to stderr.
-        """
-        err = StringIO()
-        count = withStderrTo(err, checkPath, path)
-        self.assertEquals(
-            (count, err.getvalue()), (len(errorList), ''.join(errorList)))
-
-
-    def getErrors(self, path):
-        """
-        Get any warnings or errors reported by pyflakes for the file at C{path}.
-
-        @param path: The path to a Python file on disk that pyflakes will check.
-        @return: C{(count, log)}, where C{count} is the number of warnings or
-            errors generated, and log is a list of those warnings, presented
-            as structured data.  See L{LoggingReporter} for more details.
-        """
-        log = []
-        reporter = LoggingReporter(log)
-        count = checkPath(path, reporter)
-        return count, log
-
-
-    def test_missingTrailingNewline(self):
-        """
-        Source which doesn't end with a newline shouldn't cause any
-        exception to be raised nor an error indicator to be returned by
-        L{check}.
-        """
-        fName = self.makeTempFile("def foo():\n\tpass\n\t")
-        self.assertHasErrors(fName, [])
-
-
-    def test_checkPathNonExisting(self):
-        """
-        L{checkPath} handles non-existing files.
-        """
-        count, errors = self.getErrors('extremo')
-        self.assertEquals(count, 1)
-        self.assertEquals(
-            errors,
-            [('unexpectedError', 'extremo', 'No such file or directory')])
-
-
-    def test_multilineSyntaxError(self):
-        """
-        Source which includes a syntax error which results in the raised
-        L{SyntaxError.text} containing multiple lines of source are reported
-        with only the last line of that source.
-        """
-        source = """\
-def foo():
-    '''
-
-def bar():
-    pass
-
-def baz():
-    '''quux'''
-"""
-
-        # Sanity check - SyntaxError.text should be multiple lines, if it
-        # isn't, something this test was unprepared for has happened.
-        def evaluate(source):
-            exec source
-        exc = self.assertRaises(SyntaxError, evaluate, source)
-        self.assertTrue(exc.text.count('\n') > 1)
-
-        sourcePath = self.makeTempFile(source)
-        self.assertHasErrors(
-            sourcePath, ["""\
-%s:8: invalid syntax
-    '''quux'''
-           ^
-"""
-                % (sourcePath,)])
-
-
-    def test_eofSyntaxError(self):
-        """
-        The error reported for source files which end prematurely causing a
-        syntax error reflects the cause for the syntax error.
-        """
-        sourcePath = self.makeTempFile("def foo(")
-        self.assertHasErrors(
-            sourcePath,
-            ["""\
-%s:1: unexpected EOF while parsing
-def foo(
-         ^
-""" % (sourcePath,)])
-
-
-    def test_nonDefaultFollowsDefaultSyntaxError(self):
-        """
-        Source which has a non-default argument following a default argument
-        should include the line number of the syntax error.  However these
-        exceptions do not include an offset.
-        """
-        source = """\
-def foo(bar=baz, bax):
-    pass
-"""
-        sourcePath = self.makeTempFile(source)
-        self.assertHasErrors(
-            sourcePath,
-            ["""\
-%s:1: non-default argument follows default argument
-def foo(bar=baz, bax):
-""" % (sourcePath,)])
-
-
-    def test_nonKeywordAfterKeywordSyntaxError(self):
-        """
-        Source which has a non-keyword argument after a keyword argument should
-        include the line number of the syntax error.  However these exceptions
-        do not include an offset.
-        """
-        source = """\
-foo(bar=baz, bax)
-"""
-        sourcePath = self.makeTempFile(source)
-        self.assertHasErrors(
-            sourcePath,
-            ["""\
-%s:1: non-keyword arg after keyword arg
-foo(bar=baz, bax)
-""" % (sourcePath,)])
-
-
-    def test_permissionDenied(self):
-        """
-        If the source file is not readable, this is reported on standard
-        error.
-        """
-        sourcePath = FilePath(self.mktemp())
-        sourcePath.setContent('')
-        sourcePath.chmod(0)
-        count, errors = self.getErrors(sourcePath.path)
-        self.assertEquals(count, 1)
-        self.assertEquals(
-            errors,
-            [('unexpectedError', sourcePath.path, "Permission denied")])
-
-
-    def test_pyflakesWarning(self):
-        """
-        If the source file has a pyflakes warning, this is reported as a
-        'flake'.
-        """
-        sourcePath = self.makeTempFile("import foo")
-        count, errors = self.getErrors(sourcePath)
-        self.assertEquals(count, 1)
-        self.assertEquals(
-            errors, [('flake', str(UnusedImport(sourcePath, 1, 'foo')))])
-
-
-    def test_misencodedFile(self):
-        """
-        If a source file contains bytes which cannot be decoded, this is
-        reported on stderr.
-        """
-        source = u"""\
-# coding: ascii
-x = "\N{SNOWMAN}"
-""".encode('utf-8')
-        sourcePath = self.makeTempFile(source)
-        self.assertHasErrors(
-            sourcePath, ["%s: problem decoding source\n" % (sourcePath,)])
-
-
-    def test_checkRecursive(self):
-        """
-        L{checkRecursive} descends into each directory, finding Python files
-        and reporting problems.
-        """
-        tempdir = FilePath(self.mktemp())
-        tempdir.createDirectory()
-        tempdir.child('foo').createDirectory()
-        file1 = tempdir.child('foo').child('bar.py')
-        file1.setContent("import baz\n")
-        file2 = tempdir.child('baz.py')
-        file2.setContent("import contraband")
-        log = []
-        reporter = LoggingReporter(log)
-        warnings = checkRecursive([tempdir.path], reporter)
-        self.assertEqual(warnings, 2)
-        self.assertEqual(
-            sorted(log),
-            sorted([('flake', str(UnusedImport(file1.path, 1, 'baz'))),
-                    ('flake',
-                     str(UnusedImport(file2.path, 1, 'contraband')))]))
-
-
-
-class _EverythingGetterWithStdin(protocol.ProcessProtocol):
-    """
-    C{ProcessProtocol} that writes to stdin and gathers exit code, stdout and
-    stderr.
-    """
-
-    # Although Twisted provides a helper that spawns a subprocess, gathers its
-    # exit code, standard output and standard error
-    # (i.e. getProcessOutputAndValue), it does *not* provide one that data to
-    # be written to stdin first.
-
-    def __init__(self, deferred, stdin):
-        self.deferred = deferred
-        self.outBuf = StringIO()
-        self.errBuf = StringIO()
-        self.outReceived = self.outBuf.write
-        self.errReceived = self.errBuf.write
-        self.stdin = stdin
-
-
-    def connectionMade(self):
-        self.transport.write(self.stdin)
-        self.transport.closeStdin()
-
-
-    def processEnded(self, reason):
-        out = self.outBuf.getvalue()
-        err = self.errBuf.getvalue()
-        e = reason.value
-        code = e.exitCode
-        if e.signal:
-            code = -e.signal
-        self.deferred.callback((out, err, code))
-
-
-
-class IntegrationTests(TestCase):
-    """
-    Tests of the pyflakes script that actually spawn the script.
-    """
-
-    def getPyflakesBinary(self):
-        """
-        Return the path to the pyflakes binary.
-        """
-        import pyflakes
-        package_dir = FilePath(pyflakes.__file__).parent()
-        return package_dir.sibling('bin').child('pyflakes').path
-
-
-    def runPyflakes(self, paths, stdin=None):
-        """
-        Launch a subprocess running C{pyflakes}.
-
-        @param args: Command-line arguments to pass to pyflakes.
-        @param kwargs: Options passed on to C{subprocess.Popen}.
-        @return: C{(returncode, stdout, stderr)} of the completed pyflakes
-            process.
-        """
-        env = dict(os.environ)
-        env['PYTHONPATH'] = os.pathsep.join(sys.path)
-        command = [self.getPyflakesBinary()]
-        command.extend(paths)
-        if stdin:
-            d = _callProtocolWithDeferred(
-                lambda d: _EverythingGetterWithStdin(d, stdin),
-                sys.executable, command, env=env, path=None)
-        else:
-            d = getProcessOutputAndValue(sys.executable, command, env=env)
-        return d
-
-
-    def test_goodFile(self):
-        """
-        When a Python source file is all good, the return code is zero and no
-        messages are printed to either stdout or stderr.
-        """
-        tempfile = FilePath(self.mktemp())
-        tempfile.touch()
-        d = self.runPyflakes([tempfile.path])
-        return d.addCallback(self.assertEqual, ('', '', 0))
-
-
-    def test_fileWithFlakes(self):
-        """
-        When a Python source file has warnings, the return code is non-zero
-        and the warnings are printed to stdout.
-        """
-        tempfile = FilePath(self.mktemp())
-        tempfile.setContent("import contraband\n")
-        d = self.runPyflakes([tempfile.path])
-        return d.addCallback(
-            self.assertEqual,
-            ("%s\n" % UnusedImport(tempfile.path, 1, 'contraband'), '', 1))
-
-
-    def test_errors(self):
-        """
-        When pyflakes finds errors with the files it's given, (if they don't
-        exist, say), then the return code is non-zero and the errors are
-        printed to stderr.
-        """
-        tempfile = FilePath(self.mktemp())
-        d = self.runPyflakes([tempfile.path])
-        return d.addCallback(
-            self.assertEqual,
-            ('', '%s: No such file or directory\n' % (tempfile.path,), 1))
-
-
-    def test_readFromStdin(self):
-        """
-        If no arguments are passed to C{pyflakes} then it reads from stdin.
-        """
-        d = self.runPyflakes([], stdin='import contraband')
-        return d.addCallback(
-            self.assertEqual,
-            ("%s\n" % UnusedImport('<stdin>', 1, 'contraband'), '', 1))

=== removed file 'Pyflakes/pyflakes/test/test_undefined_names.py'
--- Pyflakes/pyflakes/test/test_undefined_names.py	2011-12-04 20:27:45 +0000
+++ Pyflakes/pyflakes/test/test_undefined_names.py	1970-01-01 00:00:00 +0000
@@ -1,273 +0,0 @@
-
-from _ast import PyCF_ONLY_AST
-
-from twisted.trial.unittest import TestCase
-
-from pyflakes import messages as m, checker
-from pyflakes.test import harness
-
-
-class Test(harness.Test):
-    def test_undefined(self):
-        self.flakes('bar', m.UndefinedName)
-
-    def test_definedInListComp(self):
-        self.flakes('[a for a in range(10) if a]')
-
-
-    def test_functionsNeedGlobalScope(self):
-        self.flakes('''
-        class a:
-            def b():
-                fu
-        fu = 1
-        ''')
-
-    def test_builtins(self):
-        self.flakes('range(10)')
-
-
-    def test_builtinWindowsError(self):
-        """
-        C{WindowsError} is sometimes a builtin name, so no warning is emitted
-        for using it.
-        """
-        self.flakes('WindowsError')
-
-
-    def test_magicGlobalsFile(self):
-        """
-        Use of the C{__file__} magic global should not emit an undefined name
-        warning.
-        """
-        self.flakes('__file__')
-
-
-    def test_magicGlobalsBuiltins(self):
-        """
-        Use of the C{__builtins__} magic global should not emit an undefined
-        name warning.
-        """
-        self.flakes('__builtins__')
-
-
-    def test_magicGlobalsName(self):
-        """
-        Use of the C{__name__} magic global should not emit an undefined name
-        warning.
-        """
-        self.flakes('__name__')
-
-
-    def test_magicGlobalsPath(self):
-        """
-        Use of the C{__path__} magic global should not emit an undefined name
-        warning, if you refer to it from a file called __init__.py.
-        """
-        self.flakes('__path__', m.UndefinedName)
-        self.flakes('__path__', filename='package/__init__.py')
-
-
-    def test_globalImportStar(self):
-        '''Can't find undefined names with import *'''
-        self.flakes('from fu import *; bar', m.ImportStarUsed)
-
-    def test_localImportStar(self):
-        '''A local import * still allows undefined names to be found in upper scopes'''
-        self.flakes('''
-        def a():
-            from fu import *
-        bar
-        ''', m.ImportStarUsed, m.UndefinedName)
-
-    def test_unpackedParameter(self):
-        '''Unpacked function parameters create bindings'''
-        self.flakes('''
-        def a((bar, baz)):
-            bar; baz
-        ''')
-
-    def test_definedByGlobal(self):
-        '''"global" can make an otherwise undefined name in another function defined'''
-        self.flakes('''
-        def a(): global fu; fu = 1
-        def b(): fu
-        ''')
-    test_definedByGlobal.todo = ''
-
-    def test_globalInGlobalScope(self):
-        """
-        A global statement in the global scope is ignored.
-        """
-        self.flakes('''
-        global x
-        def foo():
-            print x
-        ''', m.UndefinedName)
-
-    def test_del(self):
-        '''del deletes bindings'''
-        self.flakes('a = 1; del a; a', m.UndefinedName)
-
-    def test_delGlobal(self):
-        '''del a global binding from a function'''
-        self.flakes('''
-        a = 1
-        def f():
-            global a
-            del a
-        a
-        ''')
-
-    def test_delUndefined(self):
-        '''del an undefined name'''
-        self.flakes('del a', m.UndefinedName)
-
-    def test_globalFromNestedScope(self):
-        '''global names are available from nested scopes'''
-        self.flakes('''
-        a = 1
-        def b():
-            def c():
-                a
-        ''')
-
-    def test_laterRedefinedGlobalFromNestedScope(self):
-        """
-        Test that referencing a local name that shadows a global, before it is
-        defined, generates a warning.
-        """
-        self.flakes('''
-        a = 1
-        def fun():
-            a
-            a = 2
-            return a
-        ''', m.UndefinedLocal)
-
-    def test_laterRedefinedGlobalFromNestedScope2(self):
-        """
-        Test that referencing a local name in a nested scope that shadows a
-        global declared in an enclosing scope, before it is defined, generates
-        a warning.
-        """
-        self.flakes('''
-            a = 1
-            def fun():
-                global a
-                def fun2():
-                    a
-                    a = 2
-                    return a
-        ''', m.UndefinedLocal)
-
-
-    def test_intermediateClassScopeIgnored(self):
-        """
-        If a name defined in an enclosing scope is shadowed by a local variable
-        and the name is used locally before it is bound, an unbound local
-        warning is emitted, even if there is a class scope between the enclosing
-        scope and the local scope.
-        """
-        self.flakes('''
-        def f():
-            x = 1
-            class g:
-                def h(self):
-                    a = x
-                    x = None
-                    print x, a
-            print x
-        ''', m.UndefinedLocal)
-
-
-    def test_doubleNestingReportsClosestName(self):
-        """
-        Test that referencing a local name in a nested scope that shadows a
-        variable declared in two different outer scopes before it is defined
-        in the innermost scope generates an UnboundLocal warning which
-        refers to the nearest shadowed name.
-        """
-        exc = self.flakes('''
-            def a():
-                x = 1
-                def b():
-                    x = 2 # line 5
-                    def c():
-                        x
-                        x = 3
-                        return x
-                    return x
-                return x
-        ''', m.UndefinedLocal).messages[0]
-        self.assertEqual(exc.message_args, ('x', 5))
-
-
-    def test_laterRedefinedGlobalFromNestedScope3(self):
-        """
-        Test that referencing a local name in a nested scope that shadows a
-        global, before it is defined, generates a warning.
-        """
-        self.flakes('''
-            def fun():
-                a = 1
-                def fun2():
-                    a
-                    a = 1
-                    return a
-                return a
-        ''', m.UndefinedLocal)
-
-    def test_nestedClass(self):
-        '''nested classes can access enclosing scope'''
-        self.flakes('''
-        def f(foo):
-            class C:
-                bar = foo
-                def f(self):
-                    return foo
-            return C()
-
-        f(123).f()
-        ''')
-
-    def test_badNestedClass(self):
-        '''free variables in nested classes must bind at class creation'''
-        self.flakes('''
-        def f():
-            class C:
-                bar = foo
-            foo = 456
-            return foo
-        f()
-        ''', m.UndefinedName)
-
-    def test_definedAsStarArgs(self):
-        '''star and double-star arg names are defined'''
-        self.flakes('''
-        def f(a, *b, **c):
-            print a, b, c
-        ''')
-
-    def test_definedInGenExp(self):
-        """
-        Using the loop variable of a generator expression results in no
-        warnings.
-        """
-        self.flakes('(a for a in xrange(10) if a)')
-
-
-
-class NameTests(TestCase):
-    """
-    Tests for some extra cases of name handling.
-    """
-    def test_impossibleContext(self):
-        """
-        A Name node with an unrecognized context results in a RuntimeError being
-        raised.
-        """
-        tree = compile("x = 10", "<test>", "exec", PyCF_ONLY_AST)
-        # Make it into something unrecognizable.
-        tree.body[0].targets[0].ctx = object()
-        self.assertRaises(RuntimeError, checker.Checker, tree)

=== removed file 'Pyflakes/setup.py'
--- Pyflakes/setup.py	2011-09-03 16:31:04 +0000
+++ Pyflakes/setup.py	1970-01-01 00:00:00 +0000
@@ -1,29 +0,0 @@
-#!/usr/bin/python
-# Copyright 2005-2011 Divmod, Inc.  See LICENSE file for details
-
-from distutils.core import setup
-
-setup(
-    name="pyflakes",
-    license="MIT",
-    version="0.5.0",
-    description="passive checker of Python programs",
-    author="Phil Frost",
-    author_email="indigo@xxxxxxxxxxx",
-    maintainer="Divmod developers",
-    maintainer_email="divmod-dev@xxxxxxxxxxxxxxxxxxx",
-    url="https://launchpad.net/pyflakes";,
-    packages=["pyflakes", "pyflakes.scripts", "pyflakes.test"],
-    scripts=["bin/pyflakes"],
-    long_description="""Pyflakes is program to analyze Python programs and detect various errors. It
-works by parsing the source file, not importing it, so it is safe to use on
-modules with side effects. It's also much faster.""",
-    classifiers=[
-        "Development Status :: 6 - Mature",
-        "Environment :: Console",
-        "Intended Audience :: Developers",
-        "License :: OSI Approved :: MIT License",
-        "Programming Language :: Python",
-        "Topic :: Software Development",
-        "Topic :: Utilities",
-        ])


Follow ups