From 9fc4a0f0db9b97c3af1fea61b665bfb31c7ba60c Mon Sep 17 00:00:00 2001 From: Mahdi Lamb Date: Sun, 20 Aug 2023 13:38:12 +0100 Subject: [PATCH 1/2] update for pydantic v2 --- pydantic2ts/cli/script.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/pydantic2ts/cli/script.py b/pydantic2ts/cli/script.py index 8518395..efe3540 100644 --- a/pydantic2ts/cli/script.py +++ b/pydantic2ts/cli/script.py @@ -64,9 +64,7 @@ def is_concrete_pydantic_model(obj) -> bool: if not inspect.isclass(obj): return False elif obj is BaseModel: - return False - elif GenericModel and issubclass(obj, GenericModel): - return bool(obj.__concrete__) + return getattr(obj, "__concrete__", False) else: return issubclass(obj, BaseModel) @@ -152,18 +150,18 @@ def generate_json_schema(models: List[Type[BaseModel]]) -> str: '[k: string]: any' from being added to every interface. This change is reverted once the schema has been generated. """ - model_extras = [getattr(m.Config, "extra", None) for m in models] + model_extras = [m.model_config.get("extra", None) for m in models] try: for m in models: - if getattr(m.Config, "extra", None) != Extra.allow: - m.Config.extra = Extra.forbid + if m.model_config.get("extra", None) != Extra.allow: + m.model_config["extra"] = Extra.forbid master_model = create_model( - "_Master_", **{m.__name__: (m, ...) for m in models} + "_Master_", **{m.__name__: (m, ...) for m in models}, __base__=m ) - master_model.Config.extra = Extra.forbid - master_model.Config.schema_extra = staticmethod(clean_schema) + master_model.model_config["extra"] = Extra.forbid + master_model.model_config["schema_extra"] = staticmethod(clean_schema) schema = json.loads(master_model.schema_json()) @@ -175,7 +173,7 @@ def generate_json_schema(models: List[Type[BaseModel]]) -> str: finally: for m, x in zip(models, model_extras): if x is not None: - m.Config.extra = x + m.model_config.extra = x def generate_typescript_defs( From ddfca5e58f53883b6c2294bc24e2180f17e84326 Mon Sep 17 00:00:00 2001 From: Mahdi Lamb Date: Fri, 25 Aug 2023 00:52:07 +0100 Subject: [PATCH 2/2] no extra attr --- pydantic2ts/cli/script.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydantic2ts/cli/script.py b/pydantic2ts/cli/script.py index efe3540..50c2b66 100644 --- a/pydantic2ts/cli/script.py +++ b/pydantic2ts/cli/script.py @@ -173,7 +173,7 @@ def generate_json_schema(models: List[Type[BaseModel]]) -> str: finally: for m, x in zip(models, model_extras): if x is not None: - m.model_config.extra = x + m.model_config["extra"] = x def generate_typescript_defs(