Skip to content

Architecture

This diagrams created by executing make diagrams

Class Diagram

Class diagram focusing on models.base and models.models:

classDiagram
  class BaseModel {
    model_config : ConfigDict
  }
  class CaseNode {
    name() str
    to_pydantic_model() type[BaseModel]
  }
  class ChoiceNode {
    name() str
    to_pydantic_model() type[BaseModel]
  }
  class ContainerNode {
    name() str
  }
  class GeneratedClass {
    class_name : str | PydanticUndefinedType
    cls : Type[BaseModel] | Type[RootModel] | PydanticUndefinedType
    field_annotation : Type | None
    field_info : FieldInfo | PydanticUndefinedType
    assert_is_valid()
    to_field() Tuple[Type[BaseModel] | Type, FieldInfo]
  }
  class LeafListNode {
    get_base_class() type | Node | Enum
    name() str
    to_pydantic_model() type[BaseModel | RootModel]
  }
  class LeafNode {
    get_base_class() type | Node | Enum
    name() str
    to_pydantic_model() type[BaseModel | RootModel]
  }
  class ListNode {
    name() str
    to_pydantic_model() type[BaseModel]
  }
  class ModelRoot {
    root_node : Node | None
    to_pydantic_model() type[BaseModel] | None
  }
  class ModuleNode {
    name() str
    to_pydantic_model() type[BaseModel] | type[RootModel]
  }
  class Node {
    alias_mapping : Dict[str, str]
    arg : str
    children : List[Node]
    comments : str | None
    config : bool
    default
    description : str | None
    keyword : str
    mandatory : bool
    raw_statement : Statement
    substmts : List[Statement]
    ensure_unique_name(name: str) str
    extract_statement_list(statement: Statement, attr_name: str) List[Node]
    get_base_class() type | Node | Enum
    get_output_class() GeneratedClass
    get_qualified_name() str
    make_unique_name(suffix: str)
    name()* str
    to_pydantic_model() Type[BaseModel] | Type[RootModel]
  }
  class RootModel {
    model_config : ConfigDict
  }
  class TypeDefNode {
    get_base_class() type | Node | Enum
    name() str
    to_pydantic_model() type[RootModel]
  }
  CaseNode --|> Node
  ChoiceNode --|> Node
  ContainerNode --|> Node
  LeafListNode --|> Node
  LeafNode --|> Node
  ListNode --|> Node
  ModuleNode --|> Node
  TypeDefNode --|> Node
  GeneratedClass --* Node : _output_model
  GeneratedClass --* CaseNode : _output_model
  GeneratedClass --* ChoiceNode : _output_model
  GeneratedClass --* ContainerNode : _output_model
  GeneratedClass --* LeafListNode : _output_model
  GeneratedClass --* LeafNode : _output_model
  GeneratedClass --* ListNode : _output_model
  GeneratedClass --* ModuleNode : _output_model
  GeneratedClass --* TypeDefNode : _output_model

Packages Diagram

Package overview:

classDiagram
  class pydantify {
  }
  class __main__ {
  }
  class exceptions {
  }
  class main {
  }
  class models {
  }
  class base {
  }
  class models {
  }
  class nodefactory {
  }
  class typeresolver {
  }
  class plugins {
  }
  class pydantic_plugin {
  }
  class utility {
  }
  class function_tools {
  }
  class model_generator {
  }
  class patterns {
  }
  class restconf {
  }
  class yang_sources_tracker {
  }
  __main__ --> main
  main --> model_generator
  models --> base
  models --> models
  models --> nodefactory
  models --> typeresolver
  base --> nodefactory
  nodefactory --> exceptions
  pydantic_plugin --> model_generator
  utility --> function_tools
  utility --> restconf
  utility --> yang_sources_tracker