diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a2c78e6..98daeccf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +## [v0.21.0] - 2026-02-16 + - Update vecorel-cli +- Make the library better usable as a Python library - Add support for Python 3.14, remove support for Python 3.10 - Support HCAT mapping CSV files without crop_code - Split Germany BB and NDS in block dataset and crop fields @@ -463,7 +466,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - First release -[Unreleased]: +[Unreleased]: +[v0.21.0]: [v0.20.3]: [v0.20.2]: [v0.20.1]: diff --git a/fiboa_cli/convert.py b/fiboa_cli/convert.py new file mode 100644 index 00000000..b9ffa6f2 --- /dev/null +++ b/fiboa_cli/convert.py @@ -0,0 +1,5 @@ +from vecorel_cli.convert import ConvertData as Base + + +class ConvertData(Base): + pass diff --git a/fiboa_cli/converters.py b/fiboa_cli/converters.py new file mode 100644 index 00000000..6b83d988 --- /dev/null +++ b/fiboa_cli/converters.py @@ -0,0 +1,5 @@ +from vecorel_cli.converters import Converters as Base + + +class Converters(Base): + pass diff --git a/fiboa_cli/create_geojson.py b/fiboa_cli/create_geojson.py new file mode 100644 index 00000000..797d004a --- /dev/null +++ b/fiboa_cli/create_geojson.py @@ -0,0 +1,5 @@ +from vecorel_cli.create_geojson import CreateGeoJson as Base + + +class CreateGeoJson(Base): + pass diff --git a/fiboa_cli/create_geoparquet.py b/fiboa_cli/create_geoparquet.py new file mode 100644 index 00000000..e7234ead --- /dev/null +++ b/fiboa_cli/create_geoparquet.py @@ -0,0 +1,5 @@ +from vecorel_cli.create_geoparquet import CreateGeoParquet as Base + + +class CreateGeoParquet(Base): + pass diff --git a/fiboa_cli/create_jsonschema.py b/fiboa_cli/create_jsonschema.py new file mode 100644 index 00000000..a16cfd3d --- /dev/null +++ b/fiboa_cli/create_jsonschema.py @@ -0,0 +1,5 @@ +from vecorel_cli.create_jsonschema import CreateJsonSchema as Base + + +class CreateJsonSchema(Base): + pass diff --git a/fiboa_cli/create_stac.py b/fiboa_cli/create_stac.py index 07083ff5..ae291d01 100644 --- a/fiboa_cli/create_stac.py +++ b/fiboa_cli/create_stac.py @@ -1,14 +1,14 @@ import click from geopandas import GeoDataFrame from vecorel_cli.cli.options import JSON_INDENT, VECOREL_FILE_ARG, VECOREL_TARGET_CONSOLE -from vecorel_cli.create_stac import CreateStacCollection +from vecorel_cli.create_stac import CreateStacCollection as Base from vecorel_cli.registry import VecorelRegistry from vecorel_cli.vecorel.collection import Collection from fiboa_cli.fiboa.version import get_versions -class CreateFiboaStacCollection(CreateStacCollection): +class CreateStacCollection(Base): temporal_property = "determination:datetime" @staticmethod @@ -24,7 +24,7 @@ def get_cli_args(): type=click.STRING, help="The temporal property to use for the temporal extent.", show_default=True, - default=CreateFiboaStacCollection.temporal_property, + default=CreateStacCollection.temporal_property, ), # todo: allow additional parameters for missing data in the collection? # https://stackoverflow.com/questions/36513706/python-click-pass-unspecified-number-of-kwargs diff --git a/fiboa_cli/describe.py b/fiboa_cli/describe.py index 2180b73a..6532852b 100644 --- a/fiboa_cli/describe.py +++ b/fiboa_cli/describe.py @@ -1,18 +1,18 @@ from pathlib import Path from typing import Union -from vecorel_cli.describe import DescribeFile +from vecorel_cli.describe import DescribeFile as Base from vecorel_cli.vecorel.schemas import CollectionSchemas from yarl import URL from .fiboa.version import get_versions -class DescribeFiboaFile(DescribeFile): +class DescribeFile(Base): @staticmethod def get_cli_callback(cmd): def callback(source, num, properties, verbose): - return DescribeFiboaFile(source).run(num=num, properties=properties, verbose=verbose) + return DescribeFile(source).run(num=num, properties=properties, verbose=verbose) return callback diff --git a/fiboa_cli/improve.py b/fiboa_cli/improve.py index 09a81008..ab7080ff 100644 --- a/fiboa_cli/improve.py +++ b/fiboa_cli/improve.py @@ -5,7 +5,7 @@ from geopandas import GeoDataFrame from vecorel_cli.basecommand import runnable from vecorel_cli.encoding.auto import create_encoding -from vecorel_cli.improve import ImproveData +from vecorel_cli.improve import ImproveData as Base from vecorel_cli.vecorel.collection import Collection from vecorel_cli.vecorel.extensions import ADMIN_DIVISION from vecorel_cli.vecorel.version import sdl_uri @@ -13,14 +13,14 @@ from fiboa_cli.conversion.fiboa_converter import FiboaBaseConverter from fiboa_cli.datasets.commons.ec import AddHCATMixin from fiboa_cli.datasets.commons.hcat import CROP_EXTENSION, HCAT_EXTENSION -from fiboa_cli.registry import FIBOA_SPECIFICATION +from fiboa_cli.registry import Registry -class Improve(ImproveData): +class ImproveData(Base): @staticmethod def get_cli_args(): return { - **ImproveData.get_cli_args(), + **Base.get_cli_args(), "add-hcat": click.option( "--add-hcat", "-hcat", @@ -99,7 +99,7 @@ def migrate_fiboa_2( return geodata, original self.info(f"Migrating data from fiboa version {original['fiboa_version']}") - schemas = {"https://vecorel.org/specification/v0.1.0/schema.yaml", FIBOA_SPECIFICATION} + schemas = set() for e in original.get("fiboa_extensions", []): if e in EXTENSION_MAPPING: schemas.add(EXTENSION_MAPPING[e]) @@ -107,14 +107,13 @@ def migrate_fiboa_2( base = {k: original[k] for k in ("title", "description", "attribution") if k in original} collection_id = original.get("id") or file_name.split(".")[0] - collection = Collection( - {"schemas": {collection_id: list(schemas)}, "collection": collection_id} | base - ) + collection = Collection(Registry.get_default_collection(collection_id, extensions=schemas)) + collection.update(base) # Migrate custom schemas if "fiboa_custom_schemas" in original: collection["schemas:custom"] = { - "$schema": "https://vecorel.org/sdl/v0.2.0/schema.json", + "$schema": sdl_uri, "required": [], "collection": {}, } | original["fiboa_custom_schemas"] diff --git a/fiboa_cli/merge.py b/fiboa_cli/merge.py new file mode 100644 index 00000000..41cace5f --- /dev/null +++ b/fiboa_cli/merge.py @@ -0,0 +1,5 @@ +from vecorel_cli.merge import MergeDatasets as Base + + +class MergeDatasets(Base): + pass diff --git a/fiboa_cli/publish.py b/fiboa_cli/publish.py index 13db9b93..122cc4da 100644 --- a/fiboa_cli/publish.py +++ b/fiboa_cli/publish.py @@ -11,13 +11,13 @@ import spdx_license_list from vecorel_cli.basecommand import BaseCommand, runnable from vecorel_cli.cli.options import VECOREL_TARGET -from vecorel_cli.convert import ConvertData -from vecorel_cli.converters import Converters from vecorel_cli.encoding.auto import create_encoding -from vecorel_cli.validate import ValidateData -from .create_stac import CreateFiboaStacCollection +from .convert import ConvertData +from .converters import Converters +from .create_stac import CreateStacCollection from .registry import Registry +from .validate import ValidateData STAC_EXTENSION = "https://stac-extensions.github.io/web-map-links/v1.2.0/schema.json" DESCRIPTIONS = { @@ -364,7 +364,7 @@ def create_stac_collection(self, target, file_name, parquet_file, stac_file): self.success(f"Creating STAC collection.json for {parquet_file}") p_stac.parent.mkdir(exist_ok=True) - CreateFiboaStacCollection().create_cli(parquet_file, stac_file) + CreateStacCollection().create_cli(parquet_file, stac_file) Path(target, "stac").mkdir(parents=True, exist_ok=True) data = json.load(open(stac_file, "r")) diff --git a/fiboa_cli/registry.py b/fiboa_cli/registry.py index 611810ff..56e0f04d 100644 --- a/fiboa_cli/registry.py +++ b/fiboa_cli/registry.py @@ -2,9 +2,7 @@ from vecorel_cli.registry import Registry, VecorelRegistry -from fiboa_cli.fiboa.version import spec_pattern - -FIBOA_SPECIFICATION = "https://fiboa.org/specification/v0.3.0/schema.yaml" +from fiboa_cli.fiboa.version import get_fiboa_uri, spec_pattern class FiboaRegistry(VecorelRegistry): @@ -27,19 +25,42 @@ class FiboaRegistry(VecorelRegistry): ignored_datasets = VecorelRegistry.ignored_datasets + ["es.py"] def register_commands(self): - super().register_commands() - - from .create_stac import CreateFiboaStacCollection - from .describe import DescribeFiboaFile - from .improve import Improve + from .convert import ConvertData + from .converters import Converters + from .create_geojson import CreateGeoJson + from .create_geoparquet import CreateGeoParquet + from .create_jsonschema import CreateJsonSchema + from .create_stac import CreateStacCollection + from .describe import DescribeFile + from .improve import ImproveData + from .merge import MergeDatasets from .publish import Publish - from .rename_extension import RenameFiboaExtension + from .rename_extension import RenameExtension + from .validate import ValidateData + from .validate_schema import ValidateSchema + + commands = [ + ConvertData, + Converters, + CreateGeoJson, + CreateGeoParquet, + CreateJsonSchema, + CreateStacCollection, + DescribeFile, + ImproveData, + MergeDatasets, + Publish, + RenameExtension, + ValidateData, + ValidateSchema, + ] + + for command in commands: + self.set_command(command) - self.set_command(CreateFiboaStacCollection) - self.set_command(DescribeFiboaFile) - self.set_command(RenameFiboaExtension) - self.set_command(Improve) - self.set_command(Publish) + def get_default_collection(self, id: str, extensions: set | list | None = None) -> dict: + extensions = {get_fiboa_uri()} | set(extensions) + return super().get_default_collection(id, extensions=extensions) Registry.instance = FiboaRegistry() diff --git a/fiboa_cli/rename_extension.py b/fiboa_cli/rename_extension.py index 6a06d782..72737c11 100644 --- a/fiboa_cli/rename_extension.py +++ b/fiboa_cli/rename_extension.py @@ -1,13 +1,13 @@ -from vecorel_cli.rename_extension import RenameExtension +from vecorel_cli.rename_extension import RenameExtension as Base -class RenameFiboaExtension(RenameExtension): +class RenameExtension(Base): template_org: str = "fiboa" template_domain: str = "fiboa.org" @staticmethod def get_cli_callback(cmd): def callback(folder, title, slug, org, prefix): - return RenameFiboaExtension(title, slug, org, prefix).run(folder=folder) + return RenameExtension(title, slug, org, prefix).run(folder=folder) return callback diff --git a/fiboa_cli/validate.py b/fiboa_cli/validate.py new file mode 100644 index 00000000..3a66468b --- /dev/null +++ b/fiboa_cli/validate.py @@ -0,0 +1,5 @@ +from vecorel_cli.validate import ValidateData as Base + + +class ValidateData(Base): + pass diff --git a/fiboa_cli/validate_schema.py b/fiboa_cli/validate_schema.py new file mode 100644 index 00000000..72b3b458 --- /dev/null +++ b/fiboa_cli/validate_schema.py @@ -0,0 +1,5 @@ +from vecorel_cli.validate_schema import ValidateSchema as Base + + +class ValidateSchema(Base): + pass diff --git a/pixi.lock b/pixi.lock index f1569118..1f6b2a69 100644 --- a/pixi.lock +++ b/pixi.lock @@ -173,7 +173,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: ./ osx-64: @@ -334,7 +334,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: ./ osx-arm64: @@ -496,7 +496,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: ./ win-64: @@ -656,7 +656,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl - pypi: ./ @@ -808,7 +808,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: ./ osx-64: @@ -944,7 +944,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: ./ osx-arm64: @@ -1081,7 +1081,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: ./ win-64: @@ -1217,7 +1217,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl - pypi: ./ @@ -1331,7 +1331,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: ./ osx-64: @@ -1430,7 +1430,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: ./ osx-arm64: @@ -1530,7 +1530,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: ./ win-64: @@ -1627,7 +1627,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl - pypi: ./ @@ -1768,7 +1768,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: ./ osx-64: @@ -1894,7 +1894,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: ./ osx-arm64: @@ -2021,7 +2021,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: ./ win-64: @@ -2144,7 +2144,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/99/4772b8e00a136f3e01236de33b0efda31ee7077203ba5967fcc76da94d65/texttable-1.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl - pypi: ./ @@ -2802,10 +2802,10 @@ packages: timestamp: 1763918099466 - pypi: ./ name: fiboa-cli - version: 0.20.3 - sha256: cdc8009fbb382b3fbbb0dfbb5c1deb4322f973c42eb5ffeae6ff45ec4a185366 + version: 0.21.0 + sha256: 5a8a4c3d9234870ac9a54c0cc925c41f59ca033ee111dd241c1af9633591f47b requires_dist: - - vecorel-cli==0.2.14 + - vecorel-cli==0.2.15 - spdx-license-list==3.27.0 requires_python: '>=3.11' editable: true @@ -7075,10 +7075,10 @@ packages: purls: [] size: 115235 timestamp: 1767320173250 -- pypi: https://files.pythonhosted.org/packages/e5/03/0c068f61834507dc94ba883e54971e742414a2a55b4d9cb90d55b52c33bb/vecorel_cli-0.2.14-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/da/b6/ba9cfde9eb83094a6642a42f036b90f74dcff9abdd307cbdd21dc996e562/vecorel_cli-0.2.15-py3-none-any.whl name: vecorel-cli - version: 0.2.14 - sha256: 2f250ae0cbf8efe894ad8972ec607c77c85d775c27d4b7a5d123730b36d59ad8 + version: 0.2.15 + sha256: b8e297b5967521b994dc7342aa72cf43cc0a0326609d8e7c4afb32d09c9f786c requires_dist: - pyyaml>=6.0,<7.0 - click>=8.1,<9.0 diff --git a/pyproject.toml b/pyproject.toml index 301028f6..735559ce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,11 +1,11 @@ [build-system] # upper bound due to https://github.com/pypa/setuptools/issues/5174 -requires = ["setuptools>=61.0,<82.0", "wheel"] +requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "fiboa-cli" -version = "0.20.3" +version = "0.21.0" description = "CLI tools such as validation and file format conversion for fiboa." readme = "README.md" license = "Apache-2.0" @@ -23,7 +23,7 @@ classifiers = [ ] requires-python = ">=3.11" dependencies = [ - "vecorel-cli==0.2.14", + "vecorel-cli==0.2.15", "spdx-license-list==3.27.0", ] diff --git a/tests/data-files/stac-collection.json b/tests/data-files/stac-collection.json index fef2cb62..aa993ae6 100644 --- a/tests/data-files/stac-collection.json +++ b/tests/data-files/stac-collection.json @@ -19,8 +19,8 @@ "roles": ["data"], "href": "file://C:/Dev/fiboa-cli/tests/data-files/fiboa-example.json", "processing:software": { - "fiboa-cli": "0.20.1", - "vecorel-cli": "0.2.3" + "fiboa-cli": "0.21.0", + "vecorel-cli": "0.2.15" }, "type": "application/geo+json" } diff --git a/tests/test_convert.py b/tests/test_convert.py index dc7698d0..2766e5b5 100644 --- a/tests/test_convert.py +++ b/tests/test_convert.py @@ -6,8 +6,9 @@ import pyarrow.parquet as pq from loguru import logger from pytest import mark -from vecorel_cli.convert import ConvertData -from vecorel_cli.validate import ValidateData + +from fiboa_cli.convert import ConvertData +from fiboa_cli.validate import ValidateData """ Create input files with: `ogr2ogr output.gpkg -limit 100 input.gpkg` diff --git a/tests/test_converters.py b/tests/test_converters.py index a4ebc343..3a11d833 100644 --- a/tests/test_converters.py +++ b/tests/test_converters.py @@ -1,8 +1,8 @@ import spdx_license_list -from vecorel_cli.converters import Converters from vecorel_cli.vecorel.schemas import VecorelSchema from vecorel_cli.vecorel.util import load_file +from fiboa_cli.converters import Converters from fiboa_cli.fiboa.version import get_fiboa_uri diff --git a/tests/test_create_stac.py b/tests/test_create_stac.py index bd473e4d..a1debaf4 100644 --- a/tests/test_create_stac.py +++ b/tests/test_create_stac.py @@ -2,7 +2,7 @@ from vecorel_cli.vecorel.util import load_file -from fiboa_cli.create_stac import CreateFiboaStacCollection +from fiboa_cli.create_stac import CreateStacCollection from fiboa_cli.registry import Registry @@ -11,7 +11,7 @@ def test_create_stac_collection(tmp_folder: Path): expected_file = "tests/data-files/stac-collection.json" out_file = tmp_folder / "collection.json" - gj = CreateFiboaStacCollection() + gj = CreateStacCollection() gj.create_cli(source, out_file) assert out_file.exists() diff --git a/tests/test_describe.py b/tests/test_describe.py index 1a76f53e..34f96496 100644 --- a/tests/test_describe.py +++ b/tests/test_describe.py @@ -4,7 +4,7 @@ from loguru import logger from vecorel_cli.vecorel.version import vecorel_version -from fiboa_cli.describe import DescribeFiboaFile +from fiboa_cli.describe import DescribeFile from fiboa_cli.fiboa.version import fiboa_version, spec_pattern @@ -13,7 +13,7 @@ def test_describe(capsys): logger.remove() logger.add(sys.stdout, format="{message}", level="DEBUG", colorize=False) - describe = DescribeFiboaFile("tests/data-files/fiboa-example.json") + describe = DescribeFile("tests/data-files/fiboa-example.json") describe.describe() out, err = capsys.readouterr() diff --git a/tests/test_improve.py b/tests/test_improve.py index 2e2dd5de..bb9a797c 100644 --- a/tests/test_improve.py +++ b/tests/test_improve.py @@ -2,9 +2,9 @@ import geopandas from pytest import mark -from vecorel_cli.validate import ValidateData -from fiboa_cli.improve import Improve +from fiboa_cli.improve import ImproveData +from fiboa_cli.validate import ValidateData files = [ "fiboa-example.json", @@ -20,7 +20,7 @@ def test_improve_base(tmp_parquet_file, base): # Fiboa-0_2 file is not fiboa or vecorel compliant assert ValidateData().validate(source).is_valid() == ("fiboa_0_2" not in base) - Improve().improve_file(source=source, target=tmp_parquet_file) + ImproveData().improve_file(source=source, target=tmp_parquet_file) result = ValidateData().validate(tmp_parquet_file) assert result.is_valid(), result.errors @@ -30,7 +30,7 @@ def test_improve_hcat(tmp_parquet_file, base, hcat): source = Path("tests/data-files") / base hcat = "tests/data-files/convert/" + hcat - Improve().improve_file(source=source, target=tmp_parquet_file, add_hcat=hcat) + ImproveData().improve_file(source=source, target=tmp_parquet_file, add_hcat=hcat) result = ValidateData().validate(tmp_parquet_file, num=100) assert result.is_valid(), result.errors diff --git a/tests/test_validate.py b/tests/test_validate.py index 3233b3f6..de38ac78 100644 --- a/tests/test_validate.py +++ b/tests/test_validate.py @@ -2,7 +2,8 @@ import pytest from jsonschema.exceptions import ValidationError -from vecorel_cli.validate import ValidateData + +from fiboa_cli.validate import ValidateData @pytest.mark.parametrize(