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: D417: `Parameters` section check for numpy style.
  
  Check for a valid `Parameters` section. Checks that:
      * The section documents all function arguments (D417)
          except `self` or `cls` if it is a method.
docstr_tok: ["D417",":","`","Parameters","`","section","check","for","numpy","style",".","Check","for","a","valid","`","Parameters","`","section",".","Checks","that",":","*","The","section","documents","all","function","arguments","(","D417",")","except","`","self","`","or","`","cls","`","if","it","is","a","method","."]
code: def _check_parameters_section(docstring, definition, context):
      """D417: `Parameters` section check for numpy style.
  
      Check for a valid `Parameters` section. Checks that:
          * The section documents all function arguments (D417)
              except `self` or `cls` if it is a method.
  
      """
      docstring_args = set()
      section_level_indent = leading_space(context.line)
      # Join line continuations, then resplit by line.
      content = (
          "\n".join(context.following_lines)
          .replace("\\\n", "")
          .split("\n")
      )
      for current_line, next_line in zip(content, content[1:]):
          # All parameter definitions in the Numpy parameters
          # section must be at the same indent level as the section
          # name.
          # Also, we ensure that the following line is indented,
          # and has some string, to ensure that the parameter actually
          # has a description.
          # This means, this is a parameter doc with some description
          if (
              (leading_space(current_line) == section_level_indent)
              and (
                  len(leading_space(next_line))
                  > len(leading_space(current_line))
              )
              and next_line.strip()
          ):
              # In case the parameter has type definitions, it
              # will have a colon
              if ":" in current_line:
                  parameters, parameter_type = current_line.split(
                      ":", 1
                  )
              # Else, we simply have the list of parameters defined
              # on the current line.
              else:
                  parameters = current_line.strip()
              # Numpy allows grouping of multiple parameters of same
              # type in the same line. They are comma separated.
              parameter_list = parameters.split(",")
              for parameter in parameter_list:
                  docstring_args.add(parameter.strip())
      yield from ConventionChecker._check_missing_args(
          docstring_args, 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 28 for calling the ConventionChecker obj's underlying member method code with example usage: obj._check_parameters_section(docstring, definition, context) without return types