Source code for linkml.generators.panderagen.pandera.pandera_dataframe_generator
import logging
from dataclasses import dataclass
from enum import Enum
from ..dataframe_generator import DataframeGenerator
from .slot_handler_pandera import SlotHandlerPandera
logger = logging.getLogger(__name__)
class TemplateEnum(Enum):
CLASS_BASED = "panderagen_class_based"
OBJECT_BASED = "panderagen_object_based"
POLARS_SCHEMA = "polars_schema"
[docs]
@dataclass
class PanderaDataframeGenerator(DataframeGenerator):
"""
Generates Pandera python classes from a LinkML schema.
Status: incompletely implemented
Two styles are supported:
- class-based
- schema-based (not implemented)
"""
TEMPLATE_DIRECTORY = "panderagen_class_based"
# ObjectVars
inline_validator_mixin: bool = False
coerce: bool = False
def _default_type_map(self) -> dict:
return {
"xsd:string": "str",
"xsd:integer": "int",
"xsd:int": "int",
"xsd:float": "float",
"xsd:double": "float",
"xsd:boolean": "bool",
"xsd:dateTime": "DateTime()",
"xsd:date": "Date",
"xsd:time": "Time",
"xsd:anyURI": "str",
"xsd:decimal": "float",
}
def __post_init__(self):
super().__post_init__()
self.slot_handler = SlotHandlerPandera(self)
[docs]
@staticmethod
def make_multivalued(range: str) -> str:
return "List"