chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
from typing import Type, TypeVar
|
||||
|
||||
import yaml
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
ModelT = TypeVar("ModelT", bound=BaseModel)
|
||||
|
||||
|
||||
class BaseModelExtended(BaseModel):
|
||||
# NOTE(edoakes): Pydantic protects the namespace `model_` by default and prints
|
||||
# warnings if you define fields with that prefix. However, we added such fields
|
||||
# before this behavior existed. To avoid spamming user-facing logs, we mark the
|
||||
# namespace as not protected. This means we need to be careful about overriding
|
||||
# internal attributes starting with `model_`.
|
||||
# See: https://github.com/anyscale/ray-llm/issues/1425
|
||||
model_config = ConfigDict(
|
||||
protected_namespaces=tuple(),
|
||||
extra="forbid",
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def parse_yaml(cls: Type[ModelT], file, **kwargs) -> ModelT:
|
||||
kwargs.setdefault("Loader", yaml.SafeLoader)
|
||||
dict_args = yaml.load(file, **kwargs)
|
||||
return cls.model_validate(dict_args)
|
||||
|
||||
@classmethod
|
||||
def from_file(cls: Type[ModelT], path: str, **kwargs) -> ModelT:
|
||||
"""Load a model from a YAML file path."""
|
||||
with open(path, "r") as f:
|
||||
return cls.parse_yaml(f, **kwargs)
|
||||
Reference in New Issue
Block a user