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