def visit_Assign(self, node):

        pos = self.block_position(node)

        for t in node.targets:
            self.visit(t)

        for name in self.cache:
            if not self.symbols['vars'].has_key(name):
                self.symbols['vars'][name] = {'assignments': [], 'uses': []}

            self.symbols['vars'][name]['assignments'].append(pos)

        self.clear_cache()
        self.visit(node.value)

        for name in self.cache:
            if not self.symbols['vars'].has_key(name):
                self.symbols['vars'][name] = {'assignments': [], 'uses': []}

            self.symbols['vars'][name]['uses'].append(pos)

        self.clear_cache()
Visits Assign nodes in a tree.  Adds relevant data about them to symbols.
dataset/ETHPy150Open earwig/bitshift/bitshift/parser/python.py/_TreeWalker.visit_Assign