diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 92f4f55ddd4b932bd3272007a515e9fcd4eb7cbf..4871791ad66734b31d0a46270d0d571aa0e3ae4b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,47 +1,20 @@ -default: - image: "registry.forgemia.inra.fr/cdos-pub/pycode-quality/python-venv:3.10" - tags: ["test"] +include: + - project: "cdos-pub/pycode-quality" + ref: "main" + file: + - ".gitlab/ci/static-analysis.yml" + - ".gitlab/ci/pip.yml" stages: - - Code quality + - Static Analysis - Test - - Ship - -.static_analysis_base: - stage: Code quality - allow_failure: true - image: "registry.forgemia.inra.fr/cdos-pub/pycode-quality/python-linters:3.10" - -Flake8: - extends: .static_analysis_base - script: - - flake8 $PWD/stac_extension_genmeta - -Pylint: - extends: .static_analysis_base - script: - - pylint --disable=too-many-arguments $PWD/stac_extension_genmeta - -Codespell: - extends: .static_analysis_base - script: - - codespell --skip="*.png,*.jinja2,*venv/*" + - Pip Tests: + image: "registry.forgemia.inra.fr/cdos-pub/pycode-quality/python-venv:3.10" stage: Test script: - pip install pip --upgrade - pip install . - python3 tests/extensions_test.py -Publish the package: - stage: Ship - only: [tags] - variables: - PRVTOKEN: "\"PRIVATE-TOKEN: ${CI_JOB_TOKEN}\"" - URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi" - script: - - pip install build twine - - python -m build - - TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --verbose --repository-url $URL dist/* - diff --git a/stac_extension_genmeta/__init__.py b/stac_extension_genmeta/__init__.py index 885783b6fa0cdae5b01b8975a4b186c647371742..0affe20f6888bdc3894aa0bd6514549c7c50d422 100644 --- a/stac_extension_genmeta/__init__.py +++ b/stac_extension_genmeta/__init__.py @@ -1,2 +1,2 @@ from .core import create_extension_cls -__version__ = "0.1.0" +__version__ = "0.1.1" diff --git a/stac_extension_genmeta/core.py b/stac_extension_genmeta/core.py index bcf66f32fa8b7079d19502cbe40a2f767b5cb25d..862a0d0abbbc2e68248925b2ffb7a584bb416c5b 100644 --- a/stac_extension_genmeta/core.py +++ b/stac_extension_genmeta/core.py @@ -59,9 +59,8 @@ def create_extension_cls( key: self._get_property(info.alias, str) for key, info in model_cls.__fields__.items() } - self.md = model_cls(**props) if all( - prop is not None for prop in props.values() - ) else None + props = {p: v for p, v in props.items() if v is not None} + self.md = model_cls(**props) if props else None def __getattr__(self, item): # forward getattr to self.md diff --git a/tests/extensions_test.py b/tests/extensions_test.py index 89e4650ab728e49f7b4219534737c9de03e882a7..85ec7019c7a29c8de763b55692336a0773c24d04 100644 --- a/tests/extensions_test.py +++ b/tests/extensions_test.py @@ -18,6 +18,7 @@ class MyExtensionMetadataModel(BaseModel): name: str = Field(title="Process name", alias=f"{PREFIX}:name") authors: List[str] = Field(title="Authors", alias=f"{PREFIX}:authors") version: str = Field(title="Process version", alias=f"{PREFIX}:version") + opt_field: str | None = Field(title="Some optional field", alias=f"{PREFIX}:opt_field", default=None) # Create the extension class