parser

Parse objects for rendering in documentation.
import griffe
from griffe.dataclasses import Function, Parameters
def func_data(func:Function):
    assert func.is_function, f'{func} is not a function'
    return {'func_name': func.name,
            'parameters': [p.as_dict() for p in func.parameters]}
func = griffe.load('fastcore.parallel.parallel')
func
<Function('parallel', 103, 117)>
func_data(func)
{'func_name': 'parallel',
 'parameters': [{'name': 'f',
   'annotation': None,
   'kind': <ParameterKind.positional_or_keyword: 'positional or keyword'>,
   'default': None},
  {'name': 'items',
   'annotation': None,
   'kind': <ParameterKind.positional_or_keyword: 'positional or keyword'>,
   'default': None},
  {'name': 'args',
   'annotation': None,
   'kind': <ParameterKind.var_positional: 'variadic positional'>,
   'default': '()'},
  {'name': 'n_workers',
   'annotation': None,
   'kind': <ParameterKind.keyword_only: 'keyword-only'>,
   'default': 'defaults.cpus'},
  {'name': 'total',
   'annotation': None,
   'kind': <ParameterKind.keyword_only: 'keyword-only'>,
   'default': 'None'},
  {'name': 'progress',
   'annotation': None,
   'kind': <ParameterKind.keyword_only: 'keyword-only'>,
   'default': 'None'},
  {'name': 'pause',
   'annotation': None,
   'kind': <ParameterKind.keyword_only: 'keyword-only'>,
   'default': '0'},
  {'name': 'method',
   'annotation': None,
   'kind': <ParameterKind.keyword_only: 'keyword-only'>,
   'default': 'None'},
  {'name': 'threadpool',
   'annotation': None,
   'kind': <ParameterKind.keyword_only: 'keyword-only'>,
   'default': 'False'},
  {'name': 'timeout',
   'annotation': None,
   'kind': <ParameterKind.keyword_only: 'keyword-only'>,
   'default': 'None'},
  {'name': 'chunksize',
   'annotation': None,
   'kind': <ParameterKind.keyword_only: 'keyword-only'>,
   'default': '1'},
  {'name': 'kwargs',
   'annotation': None,
   'kind': <ParameterKind.var_keyword: 'variadic keyword'>,
   'default': '{}'}]}