From b8b6cfef7bd3b00f3cf99246ca28ffd5ebcdc287 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi?= <remi.cresson@inrae.fr> Date: Thu, 13 Feb 2025 20:48:30 +0100 Subject: [PATCH 1/4] wip --- pyproject.toml | 2 +- stac_extension_genmeta/core.py | 6 +++--- stac_extension_genmeta/testing.py | 12 +++++++----- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 9169482..c49f38f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ genmeta_cli = "stac_extension_genmeta.cli:app" packages = ["stac_extension_genmeta"] [project.optional-dependencies] -validation = ["requests", "pystac[validation]"] +test = ["requests", "pystac[validation]", "difflib"] [tool.setuptools.dynamic] version = { attr = "stac_extension_genmeta.__version__" } diff --git a/stac_extension_genmeta/core.py b/stac_extension_genmeta/core.py index c8b1eb2..15ace43 100644 --- a/stac_extension_genmeta/core.py +++ b/stac_extension_genmeta/core.py @@ -12,7 +12,7 @@ from .schema import generate_schema import json -class BaseExtensionModel(BaseException): +class BaseExtensionModel(BaseModel): """Base class for extensions models.""" model_config = ConfigDict(populate_by_name=True) @@ -59,7 +59,7 @@ def create_extension_cls(model_cls: BaseModel, schema_uri: str) -> PropertiesExt # If not possible, self.md is set to `None` props = { key: self._get_property(info.alias, str) - for key, info in model_cls.__fields__.items() + for key, info in model_cls.model_fields.items() } props = {p: v for p, v in props.items() if v is not None} self.md = model_cls(**props) if props else None @@ -81,7 +81,7 @@ def create_extension_cls(model_cls: BaseModel, schema_uri: str) -> PropertiesExt # Set properties md = md or model_cls(**kwargs) for key, value in md.model_dump(exclude_unset=True).items(): - alias = model_cls.__fields__[key].alias or key + alias = model_cls.model_fields[key].alias or key self._set_property(alias, value, pop_if_none=False) @classmethod diff --git a/stac_extension_genmeta/testing.py b/stac_extension_genmeta/testing.py index 5f51e2d..f134f7c 100644 --- a/stac_extension_genmeta/testing.py +++ b/stac_extension_genmeta/testing.py @@ -2,6 +2,8 @@ import pystac from datetime import datetime import random import json +import requests +import difflib def create_dummy_item(date=None): @@ -65,9 +67,11 @@ def basic_test( validate: bool = True ): print( - f"Extension metadata model: \n{ext_md.__class__.schema_json(indent=2)}" + f"Extension metadata model: \n{ext_md.__class__.model_json_schema()}" ) + ext_cls.print_schema() + def apply(stac_obj, method="arg"): """ Apply the extension to the item @@ -81,7 +85,7 @@ def basic_test( elif method == "dict": d = { name: getattr(ext_md, name) - for name in ext_md.__fields__ + for name in ext_md.model_fields } print(f"Passing kwargs: {d}") ext.apply(**d) @@ -97,7 +101,7 @@ def basic_test( Compare the metadata carried by the stac object with the expected metadata. """ read_ext = ext_cls(stac_obj) - for field in ext_md.__class__.__fields__: + for field in ext_md.__class__.model_fields: ref = getattr(ext_md, field) got = getattr(read_ext, field) assert got == ref, f"'{field}': values differ: {got} (expected {ref})" @@ -152,7 +156,6 @@ def basic_test( def is_schema_url_synced(cls): - import requests local_schema = cls.get_schema() url = cls.get_schema_uri() remote_schema = requests.get(url).json() @@ -165,7 +168,6 @@ def is_schema_url_synced(cls): ) if local_schema != remote_schema: print("Schema differs:") - import difflib def _json2str(dic): return json.dumps(dic, indent=2).split("\n") -- GitLab From 5c4b39091f8740388670eb812ecdcc704e0f8c06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi?= <remi.cresson@inrae.fr> Date: Thu, 13 Feb 2025 21:01:18 +0100 Subject: [PATCH 2/4] wip --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4bb2302..4a210d4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -16,6 +16,6 @@ Tests: except: [main, tags] script: - pip install pip --upgrade - - pip install . + - pip install .[test] - python3 tests/extensions_test.py -- GitLab From 34a3ad94cfc689088467d70e65724625fec0e12b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi?= <remi.cresson@inrae.fr> Date: Thu, 13 Feb 2025 21:06:08 +0100 Subject: [PATCH 3/4] wip --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c49f38f..105cdbd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ genmeta_cli = "stac_extension_genmeta.cli:app" packages = ["stac_extension_genmeta"] [project.optional-dependencies] -test = ["requests", "pystac[validation]", "difflib"] +test = ["requests", "pystac[validation]"] [tool.setuptools.dynamic] version = { attr = "stac_extension_genmeta.__version__" } -- GitLab From 9a9de7816d0f4b2adf53ab95e0eecc08ad98b1f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi?= <remi.cresson@inrae.fr> Date: Thu, 13 Feb 2025 21:06:57 +0100 Subject: [PATCH 4/4] wip --- stac_extension_genmeta/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stac_extension_genmeta/__init__.py b/stac_extension_genmeta/__init__.py index ff56c03..55989ae 100644 --- a/stac_extension_genmeta/__init__.py +++ b/stac_extension_genmeta/__init__.py @@ -2,4 +2,4 @@ from .core import create_extension_cls, BaseExtensionModel # noqa -__version__ = "0.1.3" +__version__ = "0.1.3-dev1" -- GitLab