import os def count_loc(directory, exclude=("_test",), extensions=(".py",), verbose=0): loc = 0 for root, _, fnames in os.walk(directory): skip = False for ex in exclude: if root.endswith(ex): skip = True if skip: continue for fname in fnames: skip = False for ext in extensions: if not fname.endswith(ext): skip = True break for ex in exclude: if fname.endswith(ex + ext): skip = True break if skip: continue fname = os.path.join(root, fname) if verbose: print(f"Count LoCs in {fname}") with open(fname) as f: lines = f.read().split("\n") string_open = False for line in lines: line = line.strip() if not line or line.startswith("#"): continue if not string_open: if not line.startswith('"""'): loc += 1 else: if not line.endswith('"""'): string_open = True else: if line.startswith('"""'): string_open = False return loc