class_docstr: Checker for PEP 257, NumPy and Google conventions.
  
  D10x: Missing docstrings
  D20x: Whitespace issues
  D30x: Docstring formatting
  D40x: Docstring content issues
class_docstr_tok: ["Checker","for","PEP","257",",","NumPy","and","Google","conventions",".","D10x",":","Missing","docstrings","D20x",":","Whitespace","issues","D30x",":","Docstring","formatting","D40x",":","Docstring","content","issues"]
docstr: D10{0,1,2,3}: Public definitions should have docstrings.
  
  All modules should normally have docstrings.  [...] all functions and
  classes exported by a module should also have docstrings. Public
  methods (including the __init__ constructor) should also have
  docstrings.
  
  Note: Public (exported) definitions are either those with names listed
        in __all__ variable (if present), or those that do not start
        with a single underscore.
docstr_tok: ["D10","{","0,1,2,3","}",":","Public","definitions","should","have","docstrings",".","All","modules","should","normally","have","docstrings",".","[","...","]","all","functions","and","classes","exported","by","a","module","should","also","have","docstrings",".","Public","methods","(","including","the","__init__","constructor",")","should","also","have","docstrings",".","Note",":","Public","(","exported",")","definitions","are","either","those","with","names","listed","in","__all__","variable","(","if","present",")",",","or","those","that","do","not","start","with","a","single","underscore","."]
code: def check_docstring_missing(self, definition, docstring):
      """D10{0,1,2,3}: Public definitions should have docstrings.
  
      All modules should normally have docstrings.  [...] all functions and
      classes exported by a module should also have docstrings. Public
      methods (including the __init__ constructor) should also have
      docstrings.
  
      Note: Public (exported) definitions are either those with names listed
            in __all__ variable (if present), or those that do not start
            with a single underscore.
  
      """
  
      def method_violation():
          if definition.is_magic:
              return violations.D105()
          if definition.is_init:
              if (
                  self.ignore_self_only_init
                  and len(definition.param_names) == 1
              ):
                  return None
              return violations.D107()
          if not definition.is_overload:
              return violations.D102()
          return None
  
      if not docstring and definition.is_public:
          codes = {
              Module: violations.D100,
              Class: violations.D101,
              NestedClass: violations.D106,
              Method: method_violation,
              NestedFunction: violations.D103,
              Function: (
                  lambda: violations.D103()
                  if not definition.is_overload
                  else None
              ),
              Package: violations.D104,
          }
          return codes[type(definition)]()
  
imports: import ast
  import string
  import tokenize
  from collections import namedtuple
  from itertools import chain, takewhile
  from re import compile
  from textwrap import dedent
  from .None import violations
  from .config import IllegalConfiguration
  from .parser import AllError, Class, Definition, Function, Method, Module, NestedClass, NestedFunction, Package, ParseError, Parser, StringIO
  from .utils import common_prefix_length, is_blank, log, pairwise, strip_non_alphanumeric
  from .wordlists import IMPERATIVE_BLACKLIST, IMPERATIVE_VERBS, stem
label_desc: Use image node_id 3 for calling the ConventionChecker obj's underlying member method code with example usage: obj.check_docstring_missing(definition, docstring) and returns: None, codes, violations, violations, violations, None