# Path: bin/deps/pydocstyle/config.py
# class IllegalConfiguration(Exception):
#     """An exception for illegal configurations."""
# 
#     pass
# 
# Path: bin/deps/pydocstyle/parser.py
#     def next(obj, default=nothing):
#     def __str__(self):
# def humanize(string):
#     def __init__(self, *args):
#     def __hash__(self):
#     def __eq__(self, other):
#     def __repr__(self):
#     def __iter__(self):
#     def _publicity(self):
#     def source(self):
#         def is_empty_or_comment(line):
#     def __str__(self):
#     def is_public(self):
#     def __str__(self):
#     def is_public(self):
#     def is_test(self):
#     def is_magic(self):
#     def is_init(self):
#     def is_public(self):
#     def is_public(self):
#     def __init__(self, message):
#     def __init__(self, filelike):
#     def move(self):
#     def _next_from_generator(self):
#     def __iter__(self):
#     def __repr__(self):
#     def __init__(self, *args):
#     def parse(self, filelike, filename):
#     def __call__(self, *args, **kwargs):
#     def consume(self, kind):
#     def leapfrog(self, kind, value=None):
#     def parse_docstring(self):
#     def parse_decorators(self):
#     def parse_definitions(self, class_, all=False):
#     def parse_all(self):
#     def parse_module(self):
#     def parse_definition(self, class_):
#     def parse_skip_comment(self):
#     def check_current(self, kind=None, value=None):
#     def parse_from_import_statement(self):
#     def _parse_from_import_source(self):
#     def _parse_from_import_names(self, is_future_import):
# class ParseError(Exception):
# class Value(object):
# class Definition(Value):
# class Module(Definition):
# class Package(Module):
# class Function(Definition):
# class NestedFunction(Function):
# class Method(Function):
# class Class(Definition):
# class NestedClass(Class):
# class Decorator(Value):
# class AllError(Exception):
# class TokenStream(object):
# class TokenKind(int):
# class Token(Value):
# class Parser(object):
# VARIADIC_MAGIC_METHODS = ('__init__', '__call__', '__new__')
#     LOGICAL_NEWLINES = {tk.NEWLINE, tk.INDENT, tk.DEDENT}
# 
# Path: bin/deps/pydocstyle/utils.py
# def is_blank(string):
# def pairwise(iterable, default_value):


import ast
import string
import sys
import tokenize as tk
from itertools import takewhile
from re import compile as re
from collections import namedtuple
from . import violations
from .config import IllegalConfiguration
from .parser import (Package, Module, Class, NestedClass, Definition, AllError,
                     Method, Function, NestedFunction, Parser, StringIO,
                     ParseError)
from .utils import log, is_blank, pairwise
from .wordlists import IMPERATIVE_VERBS, IMPERATIVE_BLACKLIST, stem
        """D20{6,7,8}: The entire docstring should be indented same as code.

        The entire docstring is indented the same as the quotes at its
        first line.

        """
        if docstring:
            indent = self._get_docstring_indent(definition, docstring)
            lines = docstring.split('\n')
            if len(lines) > 1:
                lines = lines[1:]  # First line does not need indent.
                indents = [leading_space(l) for l in lines if not is_blank(l)]
                if set(' \t') == set(''.join(indents) + indent):
                    yield violations.D206()
                if (len(indents) > 1 and min(indents[:-1]) > indent or
                        indents[-1] > indent):
                    yield violations.D208()
                if min(indents) < indent:
                    yield violations.D207()

    @check_for(Definition)
    def check_newline_after_last_paragraph(self, definition, docstring):
        """D209: Put multi-line docstring closing quotes on separate line.

        Unless the entire docstring fits on a line, place the closing
        quotes on a line by themselves.

        """
        if docstring:
            lines = [l for l in ast.literal_eval(docstring).split('\n')

# Path: bin/deps/pydocstyle/config.py
# class IllegalConfiguration(Exception):
#     """An exception for illegal configurations."""
# 
#     pass
# 
# Path: bin/deps/pydocstyle/parser.py
#     def next(obj, default=nothing):
#     def __str__(self):
# def humanize(string):
#     def __init__(self, *args):
#     def __hash__(self):
#     def __eq__(self, other):
#     def __repr__(self):
#     def __iter__(self):
#     def _publicity(self):
#     def source(self):
#         def is_empty_or_comment(line):
#     def __str__(self):
#     def is_public(self):
#     def __str__(self):
#     def is_public(self):
#     def is_test(self):
#     def is_magic(self):
#     def is_init(self):
#     def is_public(self):
#     def is_public(self):
#     def __init__(self, message):
#     def __init__(self, filelike):
#     def move(self):
#     def _next_from_generator(self):
#     def __iter__(self):
#     def __repr__(self):
#     def __init__(self, *args):
#     def parse(self, filelike, filename):
#     def __call__(self, *args, **kwargs):
#     def consume(self, kind):
#     def leapfrog(self, kind, value=None):
#     def parse_docstring(self):
#     def parse_decorators(self):
#     def parse_definitions(self, class_, all=False):
#     def parse_all(self):
#     def parse_module(self):
#     def parse_definition(self, class_):
#     def parse_skip_comment(self):
#     def check_current(self, kind=None, value=None):
#     def parse_from_import_statement(self):
#     def _parse_from_import_source(self):
#     def _parse_from_import_names(self, is_future_import):
# class ParseError(Exception):
# class Value(object):
# class Definition(Value):
# class Module(Definition):
# class Package(Module):
# class Function(Definition):
# class NestedFunction(Function):
# class Method(Function):
# class Class(Definition):
# class NestedClass(Class):
# class Decorator(Value):
# class AllError(Exception):
# class TokenStream(object):
# class TokenKind(int):
# class Token(Value):
# class Parser(object):
# VARIADIC_MAGIC_METHODS = ('__init__', '__call__', '__new__')
#     LOGICAL_NEWLINES = {tk.NEWLINE, tk.INDENT, tk.DEDENT}
# 
# Path: bin/deps/pydocstyle/utils.py
# def is_blank(string):
# def pairwise(iterable, default_value):


# Path: bin/deps/pydocstyle/checker.py
import ast
import string
import sys
import tokenize as tk
from itertools import takewhile
from re import compile as re
from collections import namedtuple
from . import violations
from .config import IllegalConfiguration
from .parser import (Package, Module, Class, NestedClass, Definition, AllError,
                     Method, Function, NestedFunction, Parser, StringIO,
                     ParseError)
from .utils import log, is_blank, pairwise
from .wordlists import IMPERATIVE_VERBS, IMPERATIVE_BLACKLIST, stem

        """D20{6,7,8}: The entire docstring should be indented same as code.

        The entire docstring is indented the same as the quotes at its
        first line.

        """
        if docstring:
            indent = self._get_docstring_indent(definition, docstring)
            lines = docstring.split('\n')
            if len(lines) > 1:
                lines = lines[1:]  # First line does not need indent.
                indents = [leading_space(l) for l in lines if not is_blank(l)]
                if set(' \t') == set(''.join(indents) + indent):
                    yield violations.D206()
                if (len(indents) > 1 and min(indents[:-1]) > indent or
                        indents[-1] > indent):
                    yield violations.D208()
                if min(indents) < indent:
                    yield violations.D207()

    @check_for(Definition)
    def check_newline_after_last_paragraph(self, definition, docstring):
        """D209: Put multi-line docstring closing quotes on separate line.

        Unless the entire docstring fits on a line, place the closing
        quotes on a line by themselves.

        """
        if docstring:
            lines = [l for l in ast.literal_eval(docstring).split('\n')

                     if not is_blank(l)]