From f90cb65bba7871ea8aad980772e0b10b4b39e2e1 Mon Sep 17 00:00:00 2001 From: Vadym Moshynskyi Date: Thu, 13 Nov 2025 13:38:57 +0100 Subject: [PATCH 1/2] IEBH-353: Sync with the latest changes --- .env.example | 4 - .github/workflows/hdc-pipeline.yml | 36 ++ .pre-commit-config.yaml | 18 +- app/config.py | 33 -- app/models/models_attribute_templates.py | 8 +- app/models/models_collections.py | 3 +- app/models/models_items.py | 99 ++--- app/models/models_lineage_provenance.py | 2 +- app/routers/router_utils.py | 2 +- app/routers/v1/attribute_templates/crud.py | 3 +- app/routers/v1/favourites/utils.py | 4 +- app/routers/v1/items/api_items.py | 15 +- app/routers/v1/items/crud_items.py | 9 +- .../v1/items/crud_lineage_provenance.py | 7 +- app/schemas/metadata.items.avsc | 372 +++++++++--------- migrations/versions/0a475ee40d8a_.py | 3 +- ...57f1fd_update_column_archived_to_status.py | 3 +- .../versions/212e0e60c178_add_items_table.py | 1 - ...5e2987093_add_attribute_templates_table.py | 1 - ...a86209d0f_fix_lineage_provenance_tables.py | 1 - .../6417f7affeb1_update_items_model.py | 1 - ...44ba6b47222_change_items_size_to_bigint.py | 1 - ...36326a3_add_time_columns_to_items_table.py | 1 - .../7bb14ddd2c05_add_upload_id_in_storage.py | 1 - .../c12398f0647f_add_favourites_table.py | 1 - .../c9d07577d8d2_add_collections_tables.py | 1 - .../cad81b7e09aa_add_other_items_tables.py | 1 - ...add_time_columns_and_modify_constraint_.py | 1 - ...349cb95a9_update_file_unique_constraint.py | 3 +- ...3c1185f01_add_lineage_provenance_tables.py | 1 - poetry.lock | 62 +-- pyproject.toml | 4 +- 32 files changed, 346 insertions(+), 356 deletions(-) create mode 100644 .github/workflows/hdc-pipeline.yml diff --git a/.env.example b/.env.example index 29eefc9..fff61b4 100644 --- a/.env.example +++ b/.env.example @@ -10,7 +10,6 @@ LOGGING_FORMAT= # example: json KAFKA_URL= # example: kafka:29099 KAFKA_TOPIC= # example: metadata.items AUTH_HOST= # example: http://auth_service -CONFIG_CENTER_ENABLED= # example: false OPSDB_UTILITY_USERNAME= # example: postgres OPSDB_UTILITY_HOST= # example: db OPSDB_UTILITY_PORT= # example: 5432 @@ -25,7 +24,4 @@ CORE_ZONE_VALUE= # example: 1 # is sensitive/secret OPSDB_UTILITY_PASSWORD= # example: postgres -VAULT_URL= # example: http://vault.vault -VAULT_CRT= # example: /secrets/ca.crt -VAULT_TOKEN= # example: vault_token RSA_PUBLIC_KEY= # example: MIGeMA0GCSqGSIb... diff --git a/.github/workflows/hdc-pipeline.yml b/.github/workflows/hdc-pipeline.yml new file mode 100644 index 0000000..b4b89b1 --- /dev/null +++ b/.github/workflows/hdc-pipeline.yml @@ -0,0 +1,36 @@ +name: HDC ci/cd pipeline + +permissions: + contents: write + issues: write + pull-requests: write + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + run_tests_hdc: + uses: PilotDataPlatform/pilot-hdc-ci-tools/.github/workflows/run_tests.yml@main + with: + min_coverage_percent: 86 + secrets: inherit + + build_and_publish_hdc: + needs: [run_tests_hdc] + uses: PilotDataPlatform/pilot-hdc-ci-tools/.github/workflows/build_and_publish.yml@main + with: + matrix_config: '["alembic","metadata"]' + service_name: 'metadata' + secrets: inherit + + deploy_hdc: + needs: [build_and_publish_hdc] + uses: PilotDataPlatform/pilot-hdc-ci-tools/.github/workflows/trigger_deployment.yml@main + with: + hdc_service_name: 'metadata' + secrets: inherit diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9ffd5fa..96be327 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -67,15 +67,15 @@ repos: '--max-line-length=120', ] -# - repo: https://github.com/PyCQA/docformatter -# rev: v1.7.5 -# hooks: -# - id: docformatter -# args: [ -# '--wrap-summaries=120', -# '--wrap-descriptions=120', -# '--in-place', -# ] + - repo: https://github.com/PyCQA/docformatter + rev: v1.7.7 + hooks: + - id: docformatter + args: [ + '--wrap-summaries=120', + '--wrap-descriptions=120', + '--in-place', + ] - repo: https://github.com/Lucas-C/pre-commit-hooks rev: v1.5.5 diff --git a/app/config.py b/app/config.py index 78052b3..c95eef7 100644 --- a/app/config.py +++ b/app/config.py @@ -7,40 +7,11 @@ import base64 import logging from functools import lru_cache -from typing import Any -from typing import Dict -from typing import Optional -from common import VaultClient from pydantic import BaseSettings from pydantic import Extra -class VaultConfig(BaseSettings): - """Store vault related configuration.""" - - APP_NAME: str = 'metadata' - CONFIG_CENTER_ENABLED: bool = False - - VAULT_URL: Optional[str] - VAULT_CRT: Optional[str] - VAULT_TOKEN: Optional[str] - - class Config: - env_file = '.env' - env_file_encoding = 'utf-8' - - -def load_vault_settings(settings: BaseSettings) -> Dict[str, Any]: - config = VaultConfig() - - if not config.CONFIG_CENTER_ENABLED: - return {} - - client = VaultClient(config.VAULT_URL, config.VAULT_CRT, config.VAULT_TOKEN) - return client.get_from_vault(config.APP_NAME) - - class Settings(BaseSettings): version = '2.2.0' APP_NAME: str = 'metadata_service' @@ -78,10 +49,6 @@ class Config: env_file_encoding = 'utf-8' extra = Extra.allow - @classmethod - def customise_sources(cls, init_settings, env_settings, file_secret_settings): - return env_settings, load_vault_settings, init_settings, file_secret_settings - def __init__(self): super().__init__() self.AUTH_SERVICE = self.AUTH_HOST + '/v1/' diff --git a/app/models/models_attribute_templates.py b/app/models/models_attribute_templates.py index 26d4427..b5816d9 100644 --- a/app/models/models_attribute_templates.py +++ b/app/models/models_attribute_templates.py @@ -4,8 +4,6 @@ # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. -from typing import List -from typing import Optional from uuid import UUID from pydantic import BaseModel @@ -21,7 +19,7 @@ class GETTemplate(BaseModel): class GETTemplates(BaseModel): project_code: str - name: Optional[str] + name: str | None page_size: int = 10 page: int = 0 @@ -54,7 +52,7 @@ class POSTTemplateAttributes(BaseModel): name: str optional: bool = True type: str = 'text' - options: Optional[list[str]] + options: list[str] | None @validator('type') def type_validation(cls, v): @@ -66,7 +64,7 @@ def type_validation(cls, v): class POSTTemplate(BaseModel): name: str project_code: str - attributes: List[POSTTemplateAttributes] + attributes: list[POSTTemplateAttributes] class POSTTemplateResponse(GETTemplateResponse): diff --git a/app/models/models_collections.py b/app/models/models_collections.py index 096d56f..0939e0a 100644 --- a/app/models/models_collections.py +++ b/app/models/models_collections.py @@ -5,7 +5,6 @@ # You may not use this file except in compliance with the License. import re -from typing import Optional from uuid import UUID from pydantic import BaseModel @@ -87,7 +86,7 @@ class GETCollectionItemsResponse(APIResponse): class POSTCollection(BaseModel): - id: Optional[UUID] = Field(example='3fa85f64-5717-4562-b3fc-2c963f66afa6') + id: UUID | None = Field(example='3fa85f64-5717-4562-b3fc-2c963f66afa6') owner: str container_code: str name: str diff --git a/app/models/models_items.py b/app/models/models_items.py index fcac96f..159ba5e 100644 --- a/app/models/models_items.py +++ b/app/models/models_items.py @@ -6,7 +6,6 @@ from datetime import datetime from enum import Enum -from typing import Optional from uuid import UUID from pydantic import BaseModel @@ -21,17 +20,19 @@ class ItemStatus(str, Enum): - """The new enum type for file status + """The new enum type for file status. + - REGISTERED means file is created by upload service but not complete yet. either in progress or fail. - ACTIVE means file uploading is complete. - - ARCHIVED means the file has been deleted.""" + - ARCHIVED means the file has been deleted. + """ REGISTERED = 'REGISTERED' ACTIVE = 'ACTIVE' ARCHIVED = 'ARCHIVED' def __str__(self): - return '%s' % self.name + return f'{self.name}' class ItemType(str, Enum): @@ -40,7 +41,7 @@ class ItemType(str, Enum): NAME_FOLDER = 'name_folder' def __str__(self): - return '%s' % self.name + return f'{self.name}' class ContainerType(str, Enum): @@ -48,7 +49,7 @@ class ContainerType(str, Enum): DATASET = 'dataset' def __str__(self): - return '%s' % self.name + return f'{self.name}' class GETItem(BaseModel): @@ -57,7 +58,7 @@ class GETItem(BaseModel): class GETItemByLocation(BaseModel): name: str - parent_path: str + parent_path: str | None container_code: str container_type: ContainerType zone: int @@ -70,21 +71,21 @@ class GETItemsByIDs(BaseModel): class GETItemsByLocation(PaginationRequest): - container_code: Optional[str] - zone: Optional[int] + container_code: str | None + zone: int | None recursive: bool = False status: ItemStatus = ItemStatus.ACTIVE - parent_path: Optional[str] - restore_path: Optional[str] - name: Optional[str] - owner: Optional[str] - type: Optional[str] - container_type: Optional[str] - auth_user: Optional[str] - project_role: Optional[str] - fav_user: Optional[str] - last_updated_start: Optional[datetime] = None - last_updated_end: Optional[datetime] = None + parent_path: str | None + restore_path: str | None + name: str | None + owner: str | None + type: str | None + container_type: str | None + auth_user: str | None + project_role: str | None + fav_user: str | None + last_updated_start: datetime | None = None + last_updated_end: datetime | None = None class Config: anystr_strip_whitespace = True @@ -126,9 +127,9 @@ class GETItemResponse(APIResponse): class POSTItem(BaseModel): - id: Optional[UUID] - parent: Optional[UUID] = Field(example='3fa85f64-5717-4562-b3fc-2c963f66afa6') - parent_path: Optional[str] = Field(example='path/to/file') + id: UUID | None + parent: UUID | None = Field(example='3fa85f64-5717-4562-b3fc-2c963f66afa6') + parent_path: str | None = Field(example='path/to/file') container_code: str container_type: str = 'project' type: str = 'file' @@ -137,15 +138,15 @@ class POSTItem(BaseModel): name: str = Field(example='file_name.txt') size: int = 0 owner: str - upload_id: Optional[str] - location_uri: Optional[str] - version: Optional[str] + upload_id: str | None + location_uri: str | None + version: str | None tags: list[str] = [] system_tags: list[str] = [] - attribute_template_id: Optional[UUID] - attributes: Optional[dict] = {} - tfrm_source: Optional[UUID] = None - tfrm_type: Optional[TransformationType] = None + attribute_template_id: UUID | None + attributes: dict | None = {} + tfrm_source: UUID | None = None + tfrm_type: TransformationType | None = None class Config: anystr_strip_whitespace = True @@ -237,22 +238,22 @@ class POSTItemResponse(GETItemResponse): class PUTItem(POSTItem): - parent: Optional[UUID] = Field(example='3fa85f64-5717-4562-b3fc-2c963f66afa6', default='') - parent_path: Optional[str] = Field(example='path/to/file', default='') - type: Optional[str] - status: Optional[ItemStatus] - zone: Optional[int] - name: Optional[str] = Field(example='file_name.txt') - size: Optional[int] - owner: Optional[str] - container_code: Optional[str] - container_type: Optional[str] - location_uri: Optional[str] - version: Optional[str] - tags: Optional[list[str]] - system_tags: Optional[list[str]] - attribute_template_id: Optional[UUID] - attributes: Optional[dict] + parent: UUID | None = Field(example='3fa85f64-5717-4562-b3fc-2c963f66afa6', default='') + parent_path: str | None = Field(example='path/to/file', default='') + type: str | None + status: ItemStatus | None + zone: int | None + name: str | None = Field(example='file_name.txt') + size: int | None + owner: str | None + container_code: str | None + container_type: str | None + location_uri: str | None + version: str | None + tags: list[str] | None + system_tags: list[str] | None + attribute_template_id: UUID | None + attributes: dict | None class Config: anystr_strip_whitespace = True @@ -275,9 +276,9 @@ class DELETEItemResponse(APIResponse): class PUTItemsBequeath(BaseModel): - attribute_template_id: Optional[UUID] - attributes: Optional[dict] - system_tags: Optional[list[str]] + attribute_template_id: UUID | None + attributes: dict | None + system_tags: list[str] | None class PUTItemsBequeathResponse(GETItemResponse): diff --git a/app/models/models_lineage_provenance.py b/app/models/models_lineage_provenance.py index 6ba3616..fb91c1b 100644 --- a/app/models/models_lineage_provenance.py +++ b/app/models/models_lineage_provenance.py @@ -20,7 +20,7 @@ class TransformationType(str, Enum): ARCHIVE = 'archive' def __str__(self): - return '%s' % self.name + return f'{self.name}' class GETLineageProvenance(BaseModel): diff --git a/app/routers/router_utils.py b/app/routers/router_utils.py index 4546ed9..fee5d2b 100644 --- a/app/routers/router_utils.py +++ b/app/routers/router_utils.py @@ -4,7 +4,7 @@ # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. -from typing import Callable +from collections.abc import Callable from pydantic import BaseModel diff --git a/app/routers/v1/attribute_templates/crud.py b/app/routers/v1/attribute_templates/crud.py index 7d343d3..0d2ed9d 100644 --- a/app/routers/v1/attribute_templates/crud.py +++ b/app/routers/v1/attribute_templates/crud.py @@ -4,7 +4,6 @@ # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. -from typing import List from uuid import UUID from fastapi_sqlalchemy import db @@ -33,7 +32,7 @@ def get_templates_by_project_code(params: GETTemplates, api_response: APIRespons paginate(params, api_response, template_query, None) -def format_attributes_for_json(attributes: POSTTemplateAttributes) -> List[dict]: +def format_attributes_for_json(attributes: POSTTemplateAttributes) -> list[dict]: json_attributes = [] for attribute in attributes: json_attributes.append( diff --git a/app/routers/v1/favourites/utils.py b/app/routers/v1/favourites/utils.py index 5f02358..efb9361 100644 --- a/app/routers/v1/favourites/utils.py +++ b/app/routers/v1/favourites/utils.py @@ -4,15 +4,13 @@ # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. -from typing import Union - from app.app_utils import construct_display_path from app.models.sql_collections import CollectionsModel from app.models.sql_favourites import FavouritesModel from app.models.sql_items import ItemModel -def create_favourite_response(favourite: FavouritesModel, entity: Union[ItemModel, CollectionsModel]) -> dict: +def create_favourite_response(favourite: FavouritesModel, entity: ItemModel | CollectionsModel) -> dict: return { 'id': str(favourite.item_id) if type(entity) is ItemModel else str(favourite.collection_id), 'type': entity.type if type(entity) is ItemModel else 'collection', diff --git a/app/routers/v1/items/api_items.py b/app/routers/v1/items/api_items.py index bd7a040..f29e246 100644 --- a/app/routers/v1/items/api_items.py +++ b/app/routers/v1/items/api_items.py @@ -4,7 +4,6 @@ # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. -from typing import List from uuid import UUID from fastapi import APIRouter @@ -142,7 +141,7 @@ async def delete_item( @cbv(router_bulk) class APIItemsBulk: @router_bulk.get('/batch/', response_model=GETItemResponse, summary='Get many items by IDs') - async def get_items_by_ids(self, ids: List[UUID] = Query(None), params: GETItemsByIDs = Depends()) -> JSONResponse: + async def get_items_by_ids(self, ids: list[UUID] = Query(None), params: GETItemsByIDs = Depends()) -> JSONResponse: try: api_response = GETItemResponse() get_items_by_ids(params, ids, api_response) @@ -175,16 +174,14 @@ async def create_items( except DuplicateRecordException: set_api_response_error(api_response, 'Item conflict in database', EAPIResponseCode.conflict) except Exception as e: - set_api_response_error( - api_response, 'Failed to create items: %s' % (str(e)), EAPIResponseCode.internal_error - ) + set_api_response_error(api_response, f'Failed to create items: {e}', EAPIResponseCode.internal_error) return api_response.json_response() @router_bulk.put('/batch/', response_model=PUTItemResponse, summary='Update many items') async def update_items( self, data: PUTItems, - ids: List[UUID] = Query(None), + ids: list[UUID] = Query(None), kafka_client: KafkaProducerClient = Depends(get_kafka_client), ) -> JSONResponse: try: @@ -195,14 +192,12 @@ async def update_items( except BadRequestException as e: set_api_response_error(api_response, str(e), EAPIResponseCode.bad_request) except Exception as e: - set_api_response_error( - api_response, 'Failed to update items: %s' % (str(e)), EAPIResponseCode.internal_error - ) + set_api_response_error(api_response, f'Failed to update items: {e}', EAPIResponseCode.internal_error) return api_response.json_response() @router_bulk.delete('/batch/', response_model=DELETEItemResponse, summary='Permanently delete many items by IDs') async def delete_items_by_ids( - self, ids: List[UUID] = Query(None), kafka_client: KafkaProducerClient = Depends(get_kafka_client) + self, ids: list[UUID] = Query(None), kafka_client: KafkaProducerClient = Depends(get_kafka_client) ) -> JSONResponse: try: api_response = DELETEItemResponse() diff --git a/app/routers/v1/items/crud_items.py b/app/routers/v1/items/crud_items.py index d5904ae..974a1f9 100644 --- a/app/routers/v1/items/crud_items.py +++ b/app/routers/v1/items/crud_items.py @@ -7,7 +7,6 @@ import time import uuid from datetime import datetime -from typing import Tuple from uuid import UUID from fastapi_sqlalchemy import db @@ -168,7 +167,7 @@ def attributes_match_template(attributes: dict, template_id: UUID) -> bool: return False -def get_item_by_id(item_id: UUID) -> Tuple[ItemModel, StorageModel, ExtendedModel]: +def get_item_by_id(item_id: UUID) -> tuple[ItemModel, StorageModel, ExtendedModel]: item_query = ( db.session.query(ItemModel, StorageModel, ExtendedModel) .join(StorageModel, ExtendedModel) @@ -186,7 +185,11 @@ def get_item_by_location(params: GETItemsByLocation): .join(StorageModel, ExtendedModel) .filter( ItemModel.name == params.name, - ItemModel.parent_path == Ltree(encode_path_for_ltree(params.parent_path)), + ( + ItemModel.parent_path == Ltree(encode_path_for_ltree(params.parent_path)) + if params.parent_path is not None + else ItemModel.parent_path.is_(None) + ), ItemModel.container_code == params.container_code, ItemModel.container_type == params.container_type, ItemModel.zone == params.zone, diff --git a/app/routers/v1/items/crud_lineage_provenance.py b/app/routers/v1/items/crud_lineage_provenance.py index 033094d..1b321d8 100644 --- a/app/routers/v1/items/crud_lineage_provenance.py +++ b/app/routers/v1/items/crud_lineage_provenance.py @@ -5,7 +5,6 @@ # You may not use this file except in compliance with the License. from operator import or_ -from typing import List from uuid import UUID from fastapi_sqlalchemy import db @@ -20,7 +19,7 @@ from app.routers.router_exceptions import EntityNotFoundException -def get_lineage_by_item_id(item_id: UUID) -> List[LineageModel]: +def get_lineage_by_item_id(item_id: UUID) -> list[LineageModel]: lineage_query = db.session.query(LineageModel).filter( or_(LineageModel.consumes.any(item_id), LineageModel.produces.any(item_id)) ) @@ -33,7 +32,7 @@ def get_lineage_by_item_id(item_id: UUID) -> List[LineageModel]: return item_lineage -def get_provenance_snapshots_by_item_id(item_id: UUID) -> List[ProvenanceModel]: +def get_provenance_snapshots_by_item_id(item_id: UUID) -> list[ProvenanceModel]: provenance_query = ( db.session.query(ProvenanceModel) .filter(ProvenanceModel.item_id == item_id) @@ -73,7 +72,7 @@ def get_lineage_provenance_by_item_id(item_id: UUID) -> dict: return response -def create_lineage(consumes: List[UUID], produces: List[UUID], tfrm_type: TransformationType) -> UUID: +def create_lineage(consumes: list[UUID], produces: list[UUID], tfrm_type: TransformationType) -> UUID: lineage_model_data = {'consumes': consumes, 'produces': produces, 'tfrm_type': tfrm_type} lineage = LineageModel(**lineage_model_data) db.session.add(lineage) diff --git a/app/schemas/metadata.items.avsc b/app/schemas/metadata.items.avsc index 4870746..7876542 100644 --- a/app/schemas/metadata.items.avsc +++ b/app/schemas/metadata.items.avsc @@ -1,192 +1,192 @@ { - "type":"record", - "name":"Items", - "namespace":"metadata.items", - "fields":[ - { - "name":"id", - "type":{ - "type":"string", - "logicalType":"uuid" - } - }, - { - "name":"parent", - "type":[ - { - "type":"string", - "logicalType":"uuid" - }, - "null" - ] - }, - { - "name":"parent_path", - "type":[ - "string", - "null" - ] - }, - { - "name":"restore_path", - "type":[ - "string", - "null" - ] - }, - { - "name":"status", - "type":"string" - }, - { - "name":"type", - "type":"string" - }, - { - "name":"zone", - "type":"int" - }, - { - "name":"name", - "type":"string" - }, - { - "name":"size", - "type":"int" - }, - { - "name":"owner", - "type":"string" - }, - { - "name":"container_code", - "type":"string" - }, - { - "name":"container_type", - "type":"string" - }, - { - "name":"to_delete", - "default":false, - "type":"boolean" - }, - { - "name":"created_time", - "type":{ - "type":"long", - "logicalType":"timestamp-millis" - } - }, - { - "name":"last_updated_time", - "type":{ - "type":"long", - "logicalType":"timestamp-millis" - } - }, - { - "name":"storage", - "type":{ - "type":"record", - "name":"storage", - "fields":[ - { - "name":"id", - "type":{ - "type":"string", - "logicalType":"uuid" - } - }, - { - "name":"location_uri", - "default":null, - "type":[ - "string", - "null" - ] - }, - { - "name":"version", - "default":null, - "type":[ - "string", - "null" - ] - } + "type": "record", + "name": "Items", + "namespace": "metadata.items", + "fields": [ + { + "name": "id", + "type": { + "type": "string", + "logicalType": "uuid" + } + }, + { + "name": "parent", + "type": [ + "null", + { + "type": "string", + "logicalType": "uuid" + } + ] + }, + { + "name": "parent_path", + "type": [ + "null", + "string" + ] + }, + { + "name": "restore_path", + "type": [ + "null", + "string" + ] + }, + { + "name": "status", + "type": "string" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "zone", + "type": "int" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "size", + "type": "int" + }, + { + "name": "owner", + "type": "string" + }, + { + "name": "container_code", + "type": "string" + }, + { + "name": "container_type", + "type": "string" + }, + { + "name": "to_delete", + "default": false, + "type": "boolean" + }, + { + "name": "created_time", + "type": { + "type": "long", + "logicalType": "timestamp-millis" + } + }, + { + "name": "last_updated_time", + "type": { + "type": "long", + "logicalType": "timestamp-millis" + } + }, + { + "name": "storage", + "type": { + "type": "record", + "name": "storage", + "fields": [ + { + "name": "id", + "type": { + "type": "string", + "logicalType": "uuid" + } + }, + { + "name": "location_uri", + "default": null, + "type": [ + "null", + "string" + ] + }, + { + "name": "version", + "default": null, + "type": [ + "null", + "string" ] - } - }, - { - "name":"extended", - "type":{ - "type":"record", - "name":"extended", - "fields":[ - { - "name":"id", - "type":{ - "type":"string", - "logicalType":"uuid" + } + ] + } + }, + { + "name": "extended", + "type": { + "type": "record", + "name": "extended", + "fields": [ + { + "name": "id", + "type": { + "type": "string", + "logicalType": "uuid" + } + }, + { + "name": "template_id", + "default": null, + "type": [ + "null", + { + "type": "string", + "logicalType": "uuid" + } + ] + }, + { + "name": "template_name", + "default": null, + "type": [ + "null", + "string" + ] + }, + { + "name": "extra", + "type": { + "type": "record", + "name": "extra", + "fields": [ + { + "name": "tags", + "type": { + "type": "array", + "items": "string" } - }, - { - "name":"template_id", - "default":null, - "type":[ - "null", - { - "type":"string", - "logicalType":"uuid" - } - ] - }, - { - "name":"template_name", - "default":null, - "type":[ - "string", - "null" - ] - }, - { - "name":"extra", - "type":{ - "type":"record", - "name":"extra", - "fields":[ - { - "name":"tags", - "type":{ - "type":"array", - "items":"string" - } - }, - { - "name":"system_tags", - "type":{ - "type":"array", - "items":"string" - } - }, - { - "name":"attributes", - "type":{ - "type":"map", - "name":"attributes", - "values":[ - { - "type":"map", - "values":"string" - } - ] - } - } - ] + }, + { + "name": "system_tags", + "type": { + "type": "array", + "items": "string" } - } - ] - } + }, + { + "name": "attributes", + "type": { + "type": "map", + "name": "attributes", + "values": [ + { + "type": "map", + "values": "string" + } + ] + } + } + ] + } + } + ] } - ] + } + ] } diff --git a/migrations/versions/0a475ee40d8a_.py b/migrations/versions/0a475ee40d8a_.py index 8896ea4..ebe7321 100644 --- a/migrations/versions/0a475ee40d8a_.py +++ b/migrations/versions/0a475ee40d8a_.py @@ -3,8 +3,7 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - -"""empty message. +"""Empty message. Revision ID: 0a475ee40d8a Revises: 5dfa86209d0f diff --git a/migrations/versions/15315557f1fd_update_column_archived_to_status.py b/migrations/versions/15315557f1fd_update_column_archived_to_status.py index da1a42d..059d63e 100644 --- a/migrations/versions/15315557f1fd_update_column_archived_to_status.py +++ b/migrations/versions/15315557f1fd_update_column_archived_to_status.py @@ -3,8 +3,7 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - -"""update column archived to status. +"""Update column archived to status. Revision ID: 15315557f1fd Revises: 6417f7affeb1 diff --git a/migrations/versions/212e0e60c178_add_items_table.py b/migrations/versions/212e0e60c178_add_items_table.py index b4f10a4..98c7855 100644 --- a/migrations/versions/212e0e60c178_add_items_table.py +++ b/migrations/versions/212e0e60c178_add_items_table.py @@ -3,7 +3,6 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - """Add items table. Revision ID: 212e0e60c178 diff --git a/migrations/versions/5df5e2987093_add_attribute_templates_table.py b/migrations/versions/5df5e2987093_add_attribute_templates_table.py index 2a28bb9..210b802 100644 --- a/migrations/versions/5df5e2987093_add_attribute_templates_table.py +++ b/migrations/versions/5df5e2987093_add_attribute_templates_table.py @@ -3,7 +3,6 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - """Add attribute_templates table. Revision ID: 5df5e2987093 diff --git a/migrations/versions/5dfa86209d0f_fix_lineage_provenance_tables.py b/migrations/versions/5dfa86209d0f_fix_lineage_provenance_tables.py index b593e01..c164bbe 100644 --- a/migrations/versions/5dfa86209d0f_fix_lineage_provenance_tables.py +++ b/migrations/versions/5dfa86209d0f_fix_lineage_provenance_tables.py @@ -3,7 +3,6 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - """Fix lineage provenance tables. Revision ID: 5dfa86209d0f diff --git a/migrations/versions/6417f7affeb1_update_items_model.py b/migrations/versions/6417f7affeb1_update_items_model.py index a14b7c9..6f1b0de 100644 --- a/migrations/versions/6417f7affeb1_update_items_model.py +++ b/migrations/versions/6417f7affeb1_update_items_model.py @@ -3,7 +3,6 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - """Update items model. Revision ID: 6417f7affeb1 diff --git a/migrations/versions/644ba6b47222_change_items_size_to_bigint.py b/migrations/versions/644ba6b47222_change_items_size_to_bigint.py index fc6b536..39cdd59 100644 --- a/migrations/versions/644ba6b47222_change_items_size_to_bigint.py +++ b/migrations/versions/644ba6b47222_change_items_size_to_bigint.py @@ -3,7 +3,6 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - """Change items size to bigint. Revision ID: 644ba6b47222 diff --git a/migrations/versions/76ffd36326a3_add_time_columns_to_items_table.py b/migrations/versions/76ffd36326a3_add_time_columns_to_items_table.py index 3ac23f5..4618dca 100644 --- a/migrations/versions/76ffd36326a3_add_time_columns_to_items_table.py +++ b/migrations/versions/76ffd36326a3_add_time_columns_to_items_table.py @@ -3,7 +3,6 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - """Add time columns to items table. Revision ID: 76ffd36326a3 diff --git a/migrations/versions/7bb14ddd2c05_add_upload_id_in_storage.py b/migrations/versions/7bb14ddd2c05_add_upload_id_in_storage.py index 3f8b89f..4418559 100644 --- a/migrations/versions/7bb14ddd2c05_add_upload_id_in_storage.py +++ b/migrations/versions/7bb14ddd2c05_add_upload_id_in_storage.py @@ -3,7 +3,6 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - """add_upload_id_in_storage. Revision ID: 7bb14ddd2c05 diff --git a/migrations/versions/c12398f0647f_add_favourites_table.py b/migrations/versions/c12398f0647f_add_favourites_table.py index e10c98d..1fd0b72 100644 --- a/migrations/versions/c12398f0647f_add_favourites_table.py +++ b/migrations/versions/c12398f0647f_add_favourites_table.py @@ -3,7 +3,6 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - """Add favourites table. Revision ID: c12398f0647f diff --git a/migrations/versions/c9d07577d8d2_add_collections_tables.py b/migrations/versions/c9d07577d8d2_add_collections_tables.py index 2f899a3..70cf5cb 100644 --- a/migrations/versions/c9d07577d8d2_add_collections_tables.py +++ b/migrations/versions/c9d07577d8d2_add_collections_tables.py @@ -3,7 +3,6 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - """add_collections_tables. Revision ID: c9d07577d8d2 diff --git a/migrations/versions/cad81b7e09aa_add_other_items_tables.py b/migrations/versions/cad81b7e09aa_add_other_items_tables.py index 5e972e2..a5bb3e6 100644 --- a/migrations/versions/cad81b7e09aa_add_other_items_tables.py +++ b/migrations/versions/cad81b7e09aa_add_other_items_tables.py @@ -3,7 +3,6 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - """Add other items tables. Revision ID: cad81b7e09aa diff --git a/migrations/versions/e9ee5505b100_add_time_columns_and_modify_constraint_.py b/migrations/versions/e9ee5505b100_add_time_columns_and_modify_constraint_.py index 89dd8fa..93e520f 100644 --- a/migrations/versions/e9ee5505b100_add_time_columns_and_modify_constraint_.py +++ b/migrations/versions/e9ee5505b100_add_time_columns_and_modify_constraint_.py @@ -3,7 +3,6 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - """add_time_columns_and_modify_constraint_to_collections_table. Revision ID: e9ee5505b100 diff --git a/migrations/versions/f10349cb95a9_update_file_unique_constraint.py b/migrations/versions/f10349cb95a9_update_file_unique_constraint.py index b9ce0e7..168f3ea 100644 --- a/migrations/versions/f10349cb95a9_update_file_unique_constraint.py +++ b/migrations/versions/f10349cb95a9_update_file_unique_constraint.py @@ -3,8 +3,7 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - -"""update file unique constraint. +"""Update file unique constraint. Revision ID: f10349cb95a9 Revises: fe53c1185f01 diff --git a/migrations/versions/fe53c1185f01_add_lineage_provenance_tables.py b/migrations/versions/fe53c1185f01_add_lineage_provenance_tables.py index e58512a..4b75f7b 100644 --- a/migrations/versions/fe53c1185f01_add_lineage_provenance_tables.py +++ b/migrations/versions/fe53c1185f01_add_lineage_provenance_tables.py @@ -3,7 +3,6 @@ # Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, # Version 3.0 (the "License") available at https://www.gnu.org/licenses/agpl-3.0.en.html. # You may not use this file except in compliance with the License. - """Add lineage provenance tables. Revision ID: fe53c1185f01 diff --git a/poetry.lock b/poetry.lock index 775f992..edbecc1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. [[package]] name = "aioboto3" @@ -755,34 +755,48 @@ sqlalchemy = ">=1.3.12,<2.0.0" [[package]] name = "fastavro" -version = "1.6.0" +version = "1.10.0" description = "Fast read/write of AVRO files" optional = false -python-versions = ">=3.7" -files = [ - {file = "fastavro-1.6.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:cbaa7e5db05694c70985c7ddc8afd9f7c9aef3e66e78cb18d05c70db221eaa1a"}, - {file = "fastavro-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d18d3540aab5f34bb88ad58d2f45b2c64f10bd04ad126bb79024a1e07d6db2b"}, - {file = "fastavro-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1271f11304951d4b61415480ec53c2d44c297eb00fd2d95098171805a6350d7"}, - {file = "fastavro-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:a80eec11dfc879299f4e20e6c5b19307dc50ec20a6f431fcfe2f29c5ae63c575"}, - {file = "fastavro-1.6.0-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:77354c17dc36cd21a3127004fd83854e799899b26f42fbe4a8bce3424c493551"}, - {file = "fastavro-1.6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:209afeb9dcdf624b10f223c17d3469fefd9669bdaceaf5a3fb47cb74a107e443"}, - {file = "fastavro-1.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b78ce36f45cd582c8d8b5c8ade764b378d0f3581c1e62fba895945984dec107a"}, - {file = "fastavro-1.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6ac6db0c8229e5c3f633208e9d7e9e016ee725cbc53a9e5993b4c070c189f506"}, - {file = "fastavro-1.6.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:7511fbf7e1251ae34965894cf59ad982612268a5043fbfeaf309db8f75c25489"}, - {file = "fastavro-1.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c039f259c61e75d920b2ce236d676a7dbf122ee136df92133542a99174491392"}, - {file = "fastavro-1.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:970599975812c8df4aba06ac4e4e558211fc645f3ca44a8fab12b0f2152fd959"}, - {file = "fastavro-1.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:ca4a3b4c39d2b280523111fb4ea09dd114ab78e7ee8adb166804624ce4b7ad98"}, - {file = "fastavro-1.6.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:878b06ac7f6e411c849ceafd2cc7dd9e6eb3f7d4a5268aa6f02eb8460a069082"}, - {file = "fastavro-1.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b788093cf45763e69cd8ffa2464a518edd13340a48e13c4211f85f25f91c972"}, - {file = "fastavro-1.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a69d35e66812b3aed7204d796c2a0f132d2d5a115d94cc1fb3f5da3577a74d97"}, - {file = "fastavro-1.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:4eee1bfa7a5d35d252a58c96b727c4645a0e0db3f4c44b94de444d3b086bbc48"}, - {file = "fastavro-1.6.0.tar.gz", hash = "sha256:64759b161bbacb5fdcbd54bd5cee05d8510836e09290e958937334dbf1bb587f"}, +python-versions = ">=3.9" +files = [ + {file = "fastavro-1.10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1a9fe0672d2caf0fe54e3be659b13de3cad25a267f2073d6f4b9f8862acc31eb"}, + {file = "fastavro-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86dd0410770e0c99363788f0584523709d85e57bb457372ec5c285a482c17fe6"}, + {file = "fastavro-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:190e80dc7d77d03a6a8597a026146b32a0bbe45e3487ab4904dc8c1bebecb26d"}, + {file = "fastavro-1.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bf570d63be9155c3fdc415f60a49c171548334b70fff0679a184b69c29b6bc61"}, + {file = "fastavro-1.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e07abb6798e95dccecaec316265e35a018b523d1f3944ad396d0a93cb95e0a08"}, + {file = "fastavro-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:37203097ed11d0b8fd3c004904748777d730cafd26e278167ea602eebdef8eb2"}, + {file = "fastavro-1.10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d183c075f527ab695a27ae75f210d4a86bce660cda2f85ae84d5606efc15ef50"}, + {file = "fastavro-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7a95a2c0639bffd7c079b59e9a796bfc3a9acd78acff7088f7c54ade24e4a77"}, + {file = "fastavro-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a678153b5da1b024a32ec3f611b2e7afd24deac588cb51dd1b0019935191a6d"}, + {file = "fastavro-1.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:67a597a5cfea4dddcf8b49eaf8c2b5ffee7fda15b578849185bc690ec0cd0d8f"}, + {file = "fastavro-1.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1fd689724760b17f69565d8a4e7785ed79becd451d1c99263c40cb2d6491f1d4"}, + {file = "fastavro-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:4f949d463f9ac4221128a51e4e34e2562f401e5925adcadfd28637a73df6c2d8"}, + {file = "fastavro-1.10.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:cfe57cb0d72f304bd0dcc5a3208ca6a7363a9ae76f3073307d095c9d053b29d4"}, + {file = "fastavro-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74e517440c824cb65fb29d3e3903a9406f4d7c75490cef47e55c4c82cdc66270"}, + {file = "fastavro-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:203c17d44cadde76e8eecb30f2d1b4f33eb478877552d71f049265dc6f2ecd10"}, + {file = "fastavro-1.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6575be7f2b5f94023b5a4e766b0251924945ad55e9a96672dc523656d17fe251"}, + {file = "fastavro-1.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe471deb675ed2f01ee2aac958fbf8ebb13ea00fa4ce7f87e57710a0bc592208"}, + {file = "fastavro-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:567ff515f2a5d26d9674b31c95477f3e6022ec206124c62169bc2ffaf0889089"}, + {file = "fastavro-1.10.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:82263af0adfddb39c85f9517d736e1e940fe506dfcc35bc9ab9f85e0fa9236d8"}, + {file = "fastavro-1.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:566c193109ff0ff84f1072a165b7106c4f96050078a4e6ac7391f81ca1ef3efa"}, + {file = "fastavro-1.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e400d2e55d068404d9fea7c5021f8b999c6f9d9afa1d1f3652ec92c105ffcbdd"}, + {file = "fastavro-1.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9b8227497f71565270f9249fc9af32a93644ca683a0167cfe66d203845c3a038"}, + {file = "fastavro-1.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e62d04c65461b30ac6d314e4197ad666371e97ae8cb2c16f971d802f6c7f514"}, + {file = "fastavro-1.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:86baf8c9740ab570d0d4d18517da71626fe9be4d1142bea684db52bd5adb078f"}, + {file = "fastavro-1.10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5bccbb6f8e9e5b834cca964f0e6ebc27ebe65319d3940b0b397751a470f45612"}, + {file = "fastavro-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0132f6b0b53f61a0a508a577f64beb5de1a5e068a9b4c0e1df6e3b66568eec4"}, + {file = "fastavro-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca37a363b711202c6071a6d4787e68e15fa3ab108261058c4aae853c582339af"}, + {file = "fastavro-1.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:cf38cecdd67ca9bd92e6e9ba34a30db6343e7a3bedf171753ee78f8bd9f8a670"}, + {file = "fastavro-1.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f4dd10e0ed42982122d20cdf1a88aa50ee09e5a9cd9b39abdffb1aa4f5b76435"}, + {file = "fastavro-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:aaef147dc14dd2d7823246178fd06fc5e477460e070dc6d9e07dd8193a6bc93c"}, + {file = "fastavro-1.10.0.tar.gz", hash = "sha256:47bf41ac6d52cdfe4a3da88c75a802321321b37b663a900d12765101a5d6886f"}, ] [package.extras] -codecs = ["lz4", "python-snappy", "zstandard"] +codecs = ["cramjam", "lz4", "zstandard"] lz4 = ["lz4"] -snappy = ["python-snappy"] +snappy = ["cramjam"] zstandard = ["zstandard"] [[package]] @@ -2100,4 +2114,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "b7665bcf96dbc36814477116125335efbbff1c46512cc33a56cc480138010e4b" +content-hash = "f3e0b97c98cb0458c80c45292a2cfe7f6474330d02d6e7b6fd86a533e434d23c" diff --git a/pyproject.toml b/pyproject.toml index 3a13be0..9fc4959 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "metadata" -version = "2.2.5" +version = "2.2.10" description = "Create and update file metadata" authors = ["Indoc Research"] @@ -15,7 +15,7 @@ requests = "2.24.0" sqlalchemy-utils = "0.38.2" uvicorn = "0.17.5" python-json-logger = "2.0.2" -fastavro = "1.6.0" +fastavro = "1.10.0" kafka-python = "^2.0.2" pilot-platform-common = "0.3.0" From cd6ec8c30ecdb07277a8ab2cd1081a04006544b5 Mon Sep 17 00:00:00 2001 From: Vadym Moshynskyi Date: Thu, 13 Nov 2025 14:13:21 +0100 Subject: [PATCH 2/2] IEBH-353: Bump versions --- Dockerfile | 2 +- app/config.py | 2 +- poetry.lock | 8 ++------ pyproject.toml | 2 +- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index cee8e74..e7405a8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM docker-registry.ebrains.eu/hdc-services-image/base-image:python-3.10.12-v2 AS production-environment +FROM docker-registry.ebrains.eu/hdc-services-image/base-image:python-3.10.14-v1 AS production-environment ENV PYTHONDONTWRITEBYTECODE=true \ PYTHONIOENCODING=UTF-8 \ diff --git a/app/config.py b/app/config.py index c95eef7..1bc3fca 100644 --- a/app/config.py +++ b/app/config.py @@ -13,7 +13,7 @@ class Settings(BaseSettings): - version = '2.2.0' + version = '2.2.10' APP_NAME: str = 'metadata_service' PORT: int = 5065 HOST: str = '0.0.0.0' diff --git a/poetry.lock b/poetry.lock index edbecc1..cf3816c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -158,9 +158,6 @@ files = [ {file = "aioitertools-0.11.0.tar.gz", hash = "sha256:42c68b8dd3a69c2bf7f2233bf7df4bb58b557bca5252ac02ed5187bbc67d6831"}, ] -[package.dependencies] -typing_extensions = {version = ">=4.0", markers = "python_version < \"3.10\""} - [[package]] name = "aioredis" version = "2.0.1" @@ -1823,7 +1820,6 @@ files = [ [package.dependencies] anyio = ">=3.4.0,<5" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"] @@ -2113,5 +2109,5 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" -python-versions = "^3.9" -content-hash = "f3e0b97c98cb0458c80c45292a2cfe7f6474330d02d6e7b6fd86a533e434d23c" +python-versions = ">=3.10,<3.11" +content-hash = "74f59626334b606045aaec0a3e55e9dc41b980f66e8056faba0dd1da228e2e53" diff --git a/pyproject.toml b/pyproject.toml index 9fc4959..205d3a2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ description = "Create and update file metadata" authors = ["Indoc Research"] [tool.poetry.dependencies] -python = "^3.9" +python = ">=3.10,<3.11" fastapi = "0.88.0" fastapi-health = "0.4.0" fastapi-sqlalchemy = "0.2.1"