Source code for multidoc.parsing.models
from pydantic import BaseModel
from typing import List, Optional
from multidoc.parsing.io import yaml2dict
#
# class DocStyle(BaseModel):
# pass
#
# #
# class NumpyDoc(DocStyle):
# name: str
# short_summary: Optional[str]
# deprecation_warning: Optional[str]
# extended_summary: Optional[str]
# parameters: Optional[List[Parameter]]
# returns: Optional[Returns] or Optional[List[Returns]]
# yields: Optional[List[Yields] or Yields]
# other_parameters: Optional[List[Parameter]]
# raises: Optional[List[Raises] or Raises]
# warns: Optional[List[Raises] or Raises]
# warnings: Optional[str]
# see_also: Optional[str]
# notes: Optional[str]
# references: Optional[str]
# examples: Optional[str]
# class APIElement(BaseModel):
# name: str
class APIDeclaration:
pass
[docs]class FileBased(BaseModel):
"""FileBased declaration ``pydantic.BaseModel`` data structure.
Attributes
----------
"""
[docs] @classmethod
def parse_yaml(cls, path, **kwargs):
"""
Parameters
----------
path
local
Returns
-------
"""
return cls.parse_obj(yaml2dict(path, **kwargs))
class DirBased(FileBased):
@classmethod
def parse_yaml(cls, path, local: dict = None):
"""
Parameters
----------
path
local
Returns
-------
"""
local = local if local is not None else {}
return cls.parse_obj(yaml2dict(path, local))
[docs]class Parameter(BaseModel):
"""Parameter docstring ``pydantic.BaseModel`` data structure.
Attributes
----------
Parameter.name : str
Parameter.type : Optional[str]
Parameter.description : Optional[str]
Examples
--------
.. code-block:: yaml
:caption: Used in :class:`~multidoc.parsing.Function` parameters.
functions:
- name: foo_function
parameters:
- name: bar_parameter
type: Any
description: "The bar parameter"
.. code-block:: yaml
:caption: Used in :class:`~multidoc.parsing.Class` method parameters.
classes:
- name: FooClass
methods:
- name: bar_method
parameters:
- name: bar_parameter
type: Any
description: "The bar parameter"
"""
name: str
type: Optional[str]
description: Optional[str]
class Property(BaseModel):
"""
Attributes
----------
Property.name : str
Property.type : Optional[str]
Property.description : Optional[str]
Property.readonly : bool = False
"""
name: str
type: Optional[str]
description: Optional[str]
readonly : bool = False
[docs]class Returns(BaseModel):
"""Returns docstring ``pydantic.BaseModel`` data structure.
Attributes
----------
Returns.name : Optional[str]
Returns.type : Optional[str]
Returns.description : str
"""
name: Optional[str]
type: Optional[str]
description: Optional[str]
class AutoClassConfig(BaseModel):
"""
See https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#directive-autoclass
"""
members: Optional[str]
undoc_members: Optional[str]
private_members: Optional[str]
special_members: Optional[str]
no_undoc_members: Optional[bool]
inherited_members: Optional[bool]
class Yields(BaseModel):
"""Yields docstring ``pydantic.BaseModel`` data structure.
Attributes
----------
Yields.name: Optional[str]
Yields.type: Optional[str]
Yields.description: Optional[str]
"""
name: Optional[str]
type: Optional[str]
description: Optional[str]
class Raises(BaseModel):
"""Raises docstring ``pydantic.BaseModel`` data structure.
Attributes
----------
Raises.name: str
Raises.type: Optional[str]
Raises.description: Optional[str]
"""
name: str
type: Optional[str]
description: Optional[str]
[docs]class Function(BaseModel):
"""Function docstring ``pydantic.BaseModel`` data structure.
Attributes
----------
Function.name : str
Function.short_summary : Optional[str] # test
Function.deprecation_warning : Optional[str]
Function.extended_summary : Optional[str]
Function.parameters : Optional[List[Parameter]]
Function.returns : Optional[Returns] or Optional[List[Returns]]
Function.yields : Optional[List[Yields] or Yields]
Function.other_parameters : Optional[List[Parameter]]
Function.raises : Optional[List[Raises] or Raises]
Function.warns : Optional[List[Raises] or Raises]
Function.warnings : Optional[str]
Function.see_also : Optional[str]
Function.notes : Optional[str]
Function.references : Optional[str]
Function.examples : Optional[str]
"""
name: str
short_summary: Optional[str]
deprecation_warning: Optional[str]
extended_summary: Optional[str]
parameters: Optional[List[Parameter]]
returns: Optional[Returns] or Optional[List[Returns]]
yields: Optional[List[Yields] or Yields]
other_parameters: Optional[List[Parameter]]
raises: Optional[List[Raises] or Raises]
warns: Optional[List[Raises] or Raises]
warnings: Optional[str]
see_also: Optional[str]
notes: Optional[str]
references: Optional[str]
examples: Optional[str]
class EnumMember(BaseModel):
name: str
description: Optional[str]
value: Optional[int]
[docs]class Class(BaseModel):
"""Class docstring ``pydantic.BaseModel`` data structure.
Attributes
----------
Class.name : str
Class.short_summary : Optional[str] # test
Class.deprecation_warning : Optional[str]
Class.extended_summary : Optional[str]
Class.parameters : Optional[List[Parameter]]
Class.returns : Optional[Returns] or Optional[List[Returns]]
Class.yields : Optional[List[Yields] or Yields]
Class.other_parameters : Optional[List[Parameter]]
Class.raises : Optional[List[Raises] or Raises]
Class.warns : Optional[List[Raises] or Raises]
Class.warnings : Optional[str]
Class.see_also : Optional[str]
Class.notes : Optional[str]
Class.references : Optional[str]
Class.examples : Optional[str]
Class.methods : Optional[str]
"""
name: str
short_summary: Optional[str]
deprecation_warning: Optional[str]
extended_summary: Optional[str]
parameters: Optional[List[Parameter]]
attributes: Optional[List[Parameter]]
properties: Optional[List[Property]]
yields: Optional[List[Yields] or Yields]
other_parameters: Optional[List[Parameter] or Parameter]
raises: Optional[List[Raises] or Raises]
warns: Optional[List[Raises] or Raises]
warnings: Optional[str]
see_also: Optional[str]
notes: Optional[str]
references: Optional[str]
examples: Optional[str]
methods: Optional[List[Function]]
autoclass: Optional[AutoClassConfig]
class Enum(BaseModel):
name: str
short_summary: Optional[str]
extended_summary: Optional[str]
members: Optional[List[EnumMember]]
[docs]class Constant(BaseModel):
"""Constant docstring ``pydantic.BaseModel`` data structure.
Attributes
----------
Constant.summary: str
Constant.extended_summary: Optional[str]
Constant.see_also: Optional[str]
Constant.references: Optional[str]
Constant.examples: Optional[str]
"""
summary: str
extended_summary: Optional[str]
see_also: Optional[str]
references: Optional[str]
examples: Optional[str]
[docs]class Config(BaseModel):
"""Multidoc module config ``pydantic.BaseModel`` data structure.
Attributes
----------
Config.name: Optional[str]
Config.version: Optional[str]
"""
name: Optional[str]
version: Optional[str]
[docs]class Module(FileBased):
"""Module docstring ``pydantic.BaseModel`` data structure.
Attributes
----------
Module.config: Optional[Config]
Module.summary: Optional[str]
Module.extended_summary: Optional[str]
Module.routine_listings: Optional[str]
Module.see_also: Optional[str]
Module.notes: Optional[str]
Module.references: Optional[str]
Module.examples: Optional[str]
Module.classes: Optional[List[Class]]
Module.functions: Optional[List[Function]]
Module.constants: Optional[List[Constant]]
"""
config: Optional[Config]
summary: Optional[str]
extended_summary: Optional[str]
routine_listings: Optional[str]
see_also: Optional[str]
notes: Optional[str]
references: Optional[str]
examples: Optional[str]
# MODULE structure
enums: Optional[List[Enum]]
classes: Optional[List[Class]]
functions: Optional[List[Function]]
constants: Optional[List[Constant]]
[docs]class Package(Module):
"""Module docstring ``pydantic.BaseModel`` data structure.
Attributes
----------
Package.config: Optional[Config]
Package.summary: Optional[str]
Package.extended_summary: Optional[str]
Package.routine_listings: Optional[str]
Package.see_also: Optional[str]
Package.notes: Optional[str]
Package.references: Optional[str]
Package.examples: Optional[str]
Package.classes: Optional[List[Class]]
Package.functions: Optional[List[Function]]
Package.constants: Optional[List[Constant]]
Package.modules: Optional[List[str]]
"""
modules: Optional[List[str]]
# def __init__(self):
# super().__init__()
#
if __name__ == "__main__":
import json
# r = Package.schema()
# print(json.dumps(r, indent=4))
# p = Package()
# print(p)