From 35cfd9334d381d06e8a5364a2eaa4b7b8d7b0bbc Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sun, 20 Oct 2013 07:38:41 -0400 Subject: Now I can use collections.defaultdict --HG-- branch : 4.0 --- TODO.txt | 4 ++-- coverage/parser.py | 6 ++---- coverage/results.py | 5 ++--- tests/coveragetest.py | 9 +++------ 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/TODO.txt b/TODO.txt index d53dc688..30d5bd6a 100644 --- a/TODO.txt +++ b/TODO.txt @@ -16,10 +16,10 @@ Key: + set, sorted, reversed, rpartition + generator expressions + decorators - - collections.defaultdict + + collections.defaultdict + .startswith((,)) - "with" statements - + - .format() ? + Remove code only run on <2.6 - Change data file to json diff --git a/coverage/parser.py b/coverage/parser.py index 010cd73a..6332f637 100644 --- a/coverage/parser.py +++ b/coverage/parser.py @@ -1,6 +1,6 @@ """Code parsing for Coverage.""" -import dis, re, sys, token, tokenize +import collections, dis, re, sys, token, tokenize from coverage.backward import StringIO from coverage.backward import open_source, range # pylint: disable=W0622 @@ -242,7 +242,7 @@ class CodeParser(object): """ excluded_lines = self.first_lines(self.excluded) - exit_counts = {} + exit_counts = collections.defaultdict(int) for l1, l2 in self.arcs(): if l1 < 0: # Don't ever report -1 as a line number @@ -253,8 +253,6 @@ class CodeParser(object): if l2 in excluded_lines: # Arcs to excluded lines shouldn't count. continue - if l1 not in exit_counts: - exit_counts[l1] = 0 exit_counts[l1] += 1 # Class definitions have one extra exit, so remove one for each: diff --git a/coverage/results.py b/coverage/results.py index bfd9e52e..e6475afb 100644 --- a/coverage/results.py +++ b/coverage/results.py @@ -1,5 +1,6 @@ """Results of coverage measurement.""" +import collections import os from coverage.backward import iitems @@ -158,11 +159,9 @@ class Analysis(object): """ missing = self.arcs_missing() branch_lines = set(self.branch_lines()) - mba = {} + mba = collections.defaultdict(list) for l1, l2 in missing: if l1 in branch_lines: - if l1 not in mba: - mba[l1] = [] mba[l1].append(l2) return mba diff --git a/tests/coveragetest.py b/tests/coveragetest.py index d4d82f12..f3ca53a1 100644 --- a/tests/coveragetest.py +++ b/tests/coveragetest.py @@ -1,7 +1,7 @@ """Base test case class for coverage testing.""" import glob, imp, os, random, shlex, shutil, sys, tempfile, textwrap -import atexit +import atexit, collections import coverage from coverage.backward import StringIO, to_bytes @@ -506,7 +506,7 @@ class CoverageTest(TestCase): self.test_method_made_any_files = False # Map from class to info about how it ran. - class_behaviors = {} + class_behaviors = collections.defaultdict(ClassBehavior) @classmethod def report_on_class_behavior(cls): @@ -536,10 +536,7 @@ class CoverageTest(TestCase): def class_behavior(self): """Get the ClassBehavior instance for this test.""" - cls = self.__class__ - if cls not in self.class_behaviors: - self.class_behaviors[cls] = self.ClassBehavior() - return self.class_behaviors[cls] + return self.class_behaviors[self.__class__] # When the process ends, find out about bad classes. -- cgit v1.2.1