From a811f0a3ff2e246b6e9f1d8c1d675f29e2e1f8bc Mon Sep 17 00:00:00 2001 From: sanderegg <35365065+sanderegg@users.noreply.github.com> Date: Mon, 16 Dec 2024 08:30:45 +0100 Subject: [PATCH 1/9] removed submit column --- .../23c0b8409738_remove_submit_timestamp.py | 36 +++++++++++++++++++ .../models/comp_tasks.py | 4 --- 2 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 packages/postgres-database/src/simcore_postgres_database/migration/versions/23c0b8409738_remove_submit_timestamp.py diff --git a/packages/postgres-database/src/simcore_postgres_database/migration/versions/23c0b8409738_remove_submit_timestamp.py b/packages/postgres-database/src/simcore_postgres_database/migration/versions/23c0b8409738_remove_submit_timestamp.py new file mode 100644 index 000000000000..889b850f48d5 --- /dev/null +++ b/packages/postgres-database/src/simcore_postgres_database/migration/versions/23c0b8409738_remove_submit_timestamp.py @@ -0,0 +1,36 @@ +"""remove submit timestamp + +Revision ID: 23c0b8409738 +Revises: 77ac824a77ff +Create Date: 2024-12-16 07:30:03.814989+00:00 + +""" +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = "23c0b8409738" +down_revision = "77ac824a77ff" +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("comp_tasks", "submit") + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "comp_tasks", + sa.Column( + "submit", + postgresql.TIMESTAMP(timezone=True), + autoincrement=False, + nullable=True, + ), + ) + # ### end Alembic commands ### diff --git a/packages/postgres-database/src/simcore_postgres_database/models/comp_tasks.py b/packages/postgres-database/src/simcore_postgres_database/models/comp_tasks.py index af5dc451cc33..8389495d9b6b 100644 --- a/packages/postgres-database/src/simcore_postgres_database/models/comp_tasks.py +++ b/packages/postgres-database/src/simcore_postgres_database/models/comp_tasks.py @@ -77,10 +77,6 @@ class NodeClass(enum.Enum): nullable=True, doc="current progress of the task if available", ), - # utc timestamps for submission/start/end - sa.Column( - "submit", sa.DateTime(timezone=True), doc="UTC timestamp for task submission" - ), sa.Column( "start", sa.DateTime(timezone=True), doc="UTC timestamp when task started" ), From eb9b0fa986706f21e64499b8796a6ff15c21547c Mon Sep 17 00:00:00 2001 From: sanderegg <35365065+sanderegg@users.noreply.github.com> Date: Mon, 16 Dec 2024 08:32:40 +0100 Subject: [PATCH 2/9] removed submit column --- .../models/comp_tasks.py | 4 +-- .../db/repositories/comp_tasks/_utils.py | 29 +++++++++---------- .../director-v2/tests/unit/test_utils_dags.py | 20 +++++-------- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/services/director-v2/src/simcore_service_director_v2/models/comp_tasks.py b/services/director-v2/src/simcore_service_director_v2/models/comp_tasks.py index 4bf9e1e30af2..2b646cf424e8 100644 --- a/services/director-v2/src/simcore_service_director_v2/models/comp_tasks.py +++ b/services/director-v2/src/simcore_service_director_v2/models/comp_tasks.py @@ -128,7 +128,6 @@ class CompTaskAtDB(BaseModel): description="the hex digest of the resolved inputs +outputs hash at the time when the last outputs were generated", ) image: Image - submit: dt.datetime start: dt.datetime | None = None end: dt.datetime | None = None state: RunningState @@ -163,7 +162,7 @@ def _convert_state_from_state_type_enum_if_needed(cls, v): return RunningState(DB_TO_RUNNING_STATE[StateType(v)]) return v - @field_validator("start", "end", "submit") + @field_validator("start", "end") @classmethod def _ensure_utc(cls, v: dt.datetime | None) -> dt.datetime | None: if v is not None and v.tzinfo is None: @@ -228,7 +227,6 @@ def to_db_model(self, **exclusion_rules) -> dict[str, Any]: } }, "image": image_example, - "submit": "2021-03-01 13:07:34.19161", "node_class": "INTERACTIVE", "state": "NOT_STARTED", "progress": 0.44, diff --git a/services/director-v2/src/simcore_service_director_v2/modules/db/repositories/comp_tasks/_utils.py b/services/director-v2/src/simcore_service_director_v2/modules/db/repositories/comp_tasks/_utils.py index 2619d9ce98f4..b703691926f0 100644 --- a/services/director-v2/src/simcore_service_director_v2/modules/db/repositories/comp_tasks/_utils.py +++ b/services/director-v2/src/simcore_service_director_v2/modules/db/repositories/comp_tasks/_utils.py @@ -145,12 +145,12 @@ async def _get_node_infos( None, ) - result: tuple[ServiceMetaDataPublished, ServiceExtras, SimcoreServiceLabels] = ( - await asyncio.gather( - _get_service_details(catalog_client, user_id, product_name, node), - director_client.get_service_extras(node.key, node.version), - director_client.get_service_labels(node), - ) + result: tuple[ + ServiceMetaDataPublished, ServiceExtras, SimcoreServiceLabels + ] = await asyncio.gather( + _get_service_details(catalog_client, user_id, product_name, node), + director_client.get_service_extras(node.key, node.version), + director_client.get_service_labels(node), ) return result @@ -246,9 +246,9 @@ async def _get_pricing_and_hardware_infos( return pricing_info, hardware_info -_RAM_SAFE_MARGIN_RATIO: Final[float] = ( - 0.1 # NOTE: machines always have less available RAM than advertised -) +_RAM_SAFE_MARGIN_RATIO: Final[ + float +] = 0.1 # NOTE: machines always have less available RAM than advertised _CPUS_SAFE_MARGIN: Final[float] = 0.1 @@ -266,11 +266,11 @@ async def _update_project_node_resources_from_hardware_info( if not hardware_info.aws_ec2_instances: return try: - unordered_list_ec2_instance_types: list[EC2InstanceTypeGet] = ( - await get_instance_type_details( - rabbitmq_rpc_client, - instance_type_names=set(hardware_info.aws_ec2_instances), - ) + unordered_list_ec2_instance_types: list[ + EC2InstanceTypeGet + ] = await get_instance_type_details( + rabbitmq_rpc_client, + instance_type_names=set(hardware_info.aws_ec2_instances), ) assert unordered_list_ec2_instance_types # nosec @@ -439,7 +439,6 @@ async def generate_tasks_list_from_project( inputs=node.inputs, outputs=node.outputs, image=image, - submit=arrow.utcnow().datetime, state=task_state, internal_id=internal_id, node_class=to_node_class(node.key), diff --git a/services/director-v2/tests/unit/test_utils_dags.py b/services/director-v2/tests/unit/test_utils_dags.py index 11975ac9e881..0fc17030a2d4 100644 --- a/services/director-v2/tests/unit/test_utils_dags.py +++ b/services/director-v2/tests/unit/test_utils_dags.py @@ -485,9 +485,8 @@ def pipeline_test_params( state=RunningState.NOT_STARTED, internal_id=3, node_class=NodeClass.COMPUTATIONAL, - submit=datetime.datetime.now(tz=datetime.timezone.utc), - created=datetime.datetime.now(tz=datetime.timezone.utc), - modified=datetime.datetime.now(tz=datetime.timezone.utc), + created=datetime.datetime.now(tz=datetime.UTC), + modified=datetime.datetime.now(tz=datetime.UTC), last_heartbeat=None, progress=1.00, ) @@ -536,9 +535,8 @@ def pipeline_test_params( state=RunningState.NOT_STARTED, internal_id=3, node_class=NodeClass.COMPUTATIONAL, - submit=datetime.datetime.now(tz=datetime.timezone.utc), - created=datetime.datetime.now(tz=datetime.timezone.utc), - modified=datetime.datetime.now(tz=datetime.timezone.utc), + created=datetime.datetime.now(tz=datetime.UTC), + modified=datetime.datetime.now(tz=datetime.UTC), last_heartbeat=None, ), CompTaskAtDB.model_construct( @@ -550,9 +548,8 @@ def pipeline_test_params( state=RunningState.NOT_STARTED, internal_id=3, node_class=NodeClass.COMPUTATIONAL, - submit=datetime.datetime.now(tz=datetime.timezone.utc), - created=datetime.datetime.now(tz=datetime.timezone.utc), - modified=datetime.datetime.now(tz=datetime.timezone.utc), + created=datetime.datetime.now(tz=datetime.UTC), + modified=datetime.datetime.now(tz=datetime.UTC), last_heartbeat=None, ), CompTaskAtDB.model_construct( @@ -564,9 +561,8 @@ def pipeline_test_params( state=RunningState.NOT_STARTED, internal_id=3, node_class=NodeClass.COMPUTATIONAL, - submit=datetime.datetime.now(tz=datetime.timezone.utc), - created=datetime.datetime.now(tz=datetime.timezone.utc), - modified=datetime.datetime.now(tz=datetime.timezone.utc), + created=datetime.datetime.now(tz=datetime.UTC), + modified=datetime.datetime.now(tz=datetime.UTC), last_heartbeat=None, progress=1.00, ), From f30226d1733c402da72c06c66a6a9441ea574f66 Mon Sep 17 00:00:00 2001 From: sanderegg <35365065+sanderegg@users.noreply.github.com> Date: Mon, 16 Dec 2024 08:49:18 +0100 Subject: [PATCH 3/9] corrected return submitted datetime --- .../api/routes/computations.py | 46 +++++++++---------- .../simcore_service_director_v2/utils/dags.py | 11 ----- 2 files changed, 23 insertions(+), 34 deletions(-) diff --git a/services/director-v2/src/simcore_service_director_v2/api/routes/computations.py b/services/director-v2/src/simcore_service_director_v2/api/routes/computations.py index f0b6e635ac7c..450d7d840d47 100644 --- a/services/director-v2/src/simcore_service_director_v2/api/routes/computations.py +++ b/services/director-v2/src/simcore_service_director_v2/api/routes/computations.py @@ -75,7 +75,6 @@ compute_pipeline_details, compute_pipeline_started_timestamp, compute_pipeline_stopped_timestamp, - compute_pipeline_submitted_timestamp, create_complete_dag, create_complete_dag_from_tasks, create_minimal_computational_graph_based_on_selection, @@ -396,9 +395,7 @@ async def create_computation( # noqa: PLR0913 # pylint: disable=too-many-positi stopped=compute_pipeline_stopped_timestamp( minimal_computational_dag, comp_tasks ), - submitted=compute_pipeline_submitted_timestamp( - minimal_computational_dag, comp_tasks - ), + submitted=last_run.created if last_run else None, ) except ProjectNotFoundError as e: @@ -498,7 +495,7 @@ async def get_computation( result=None, started=compute_pipeline_started_timestamp(pipeline_dag, all_tasks), stopped=compute_pipeline_stopped_timestamp(pipeline_dag, all_tasks), - submitted=compute_pipeline_submitted_timestamp(pipeline_dag, all_tasks), + submitted=last_run.created if last_run else None, ) @@ -554,26 +551,29 @@ async def stop_computation( ) # get run details if any - last_run: CompRunsAtDB | None = None - with contextlib.suppress(ComputationalRunNotFoundError): - last_run = await comp_runs_repo.get( - user_id=computation_stop.user_id, project_id=project_id + async def _create_computation_response() -> ComputationGet: + last_run: CompRunsAtDB | None = None + with contextlib.suppress(ComputationalRunNotFoundError): + last_run = await comp_runs_repo.get( + user_id=computation_stop.user_id, project_id=project_id + ) + + return ComputationGet( + id=project_id, + state=pipeline_state, + pipeline_details=await compute_pipeline_details( + complete_dag, pipeline_dag, tasks + ), + url=TypeAdapter(AnyHttpUrl).validate_python(f"{request.url}"), + stop_url=None, + iteration=last_run.iteration if last_run else None, + result=None, + started=compute_pipeline_started_timestamp(pipeline_dag, tasks), + stopped=compute_pipeline_stopped_timestamp(pipeline_dag, tasks), + submitted=last_run.created if last_run else None, ) - return ComputationGet( - id=project_id, - state=pipeline_state, - pipeline_details=await compute_pipeline_details( - complete_dag, pipeline_dag, tasks - ), - url=TypeAdapter(AnyHttpUrl).validate_python(f"{request.url}"), - stop_url=None, - iteration=last_run.iteration if last_run else None, - result=None, - started=compute_pipeline_started_timestamp(pipeline_dag, tasks), - stopped=compute_pipeline_stopped_timestamp(pipeline_dag, tasks), - submitted=compute_pipeline_submitted_timestamp(pipeline_dag, tasks), - ) + return await _create_computation_response() except ProjectNotFoundError as e: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"{e}") from e diff --git a/services/director-v2/src/simcore_service_director_v2/utils/dags.py b/services/director-v2/src/simcore_service_director_v2/utils/dags.py index 07d60e82fd51..2b8593fce072 100644 --- a/services/director-v2/src/simcore_service_director_v2/utils/dags.py +++ b/services/director-v2/src/simcore_service_director_v2/utils/dags.py @@ -217,17 +217,6 @@ def compute_pipeline_stopped_timestamp( return pipeline_stopped_at -def compute_pipeline_submitted_timestamp( - pipeline_dag: nx.DiGraph, comp_tasks: list[CompTaskAtDB] -) -> datetime.datetime | None: - if not pipeline_dag.nodes: - return None - node_id_to_comp_task: dict[NodeIDStr, CompTaskAtDB] = { - NodeIDStr(f"{task.node_id}"): task for task in comp_tasks - } - return max(node_id_to_comp_task[node_id].submit for node_id in pipeline_dag.nodes) - - async def compute_pipeline_details( complete_dag: nx.DiGraph, pipeline_dag: nx.DiGraph, comp_tasks: list[CompTaskAtDB] ) -> PipelineDetails: From 8bd3653d0ecda6a67af813ad374078647a889565 Mon Sep 17 00:00:00 2001 From: sanderegg <35365065+sanderegg@users.noreply.github.com> Date: Mon, 16 Dec 2024 08:51:56 +0100 Subject: [PATCH 4/9] corrected return submitted datetime --- .../src/pytest_simcore/helpers/faker_factories.py | 8 ++++---- services/director-v2/tests/mocks/fake_task.json | 1 - services/director-v2/tests/unit/with_dbs/conftest.py | 1 - 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/pytest-simcore/src/pytest_simcore/helpers/faker_factories.py b/packages/pytest-simcore/src/pytest_simcore/helpers/faker_factories.py index d4418a5ef816..803987b3b8af 100644 --- a/packages/pytest-simcore/src/pytest_simcore/helpers/faker_factories.py +++ b/packages/pytest-simcore/src/pytest_simcore/helpers/faker_factories.py @@ -16,10 +16,11 @@ import json import random from collections.abc import Callable -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from typing import Any, Final from uuid import uuid4 +import arrow import faker from faker import Faker @@ -182,7 +183,7 @@ def fake_task_factory(first_internal_id=1) -> Callable: _index_in_sequence = itertools.count(start=first_internal_id) def fake_task(**overrides) -> dict[str, Any]: - t0 = datetime.utcnow() + t0 = arrow.utcnow().datetime data = { "project_id": uuid4(), "node_id": uuid4(), @@ -193,7 +194,6 @@ def fake_task(**overrides) -> dict[str, Any]: "outputs": json.dumps({}), "image": json.dumps({}), "state": random.choice(_get_comp_pipeline_test_states()), - "submit": t0, "start": t0 + timedelta(seconds=1), "end": t0 + timedelta(minutes=5), } @@ -251,7 +251,7 @@ def random_product( def utcnow() -> datetime: - return datetime.now(tz=timezone.utc) + return datetime.now(tz=UTC) def random_payment_method( diff --git a/services/director-v2/tests/mocks/fake_task.json b/services/director-v2/tests/mocks/fake_task.json index 00a9dfe3501b..57d7a4c28372 100644 --- a/services/director-v2/tests/mocks/fake_task.json +++ b/services/director-v2/tests/mocks/fake_task.json @@ -50,7 +50,6 @@ "requires_gpu": false, "requires_mpi": true }, - "submit": "1994-11-10T19:23:02.115Z", "state": "PUBLISHED", "internal_id": 21107840, "node_class": "COMPUTATIONAL", diff --git a/services/director-v2/tests/unit/with_dbs/conftest.py b/services/director-v2/tests/unit/with_dbs/conftest.py index 703686d25263..9b0d03e6eed5 100644 --- a/services/director-v2/tests/unit/with_dbs/conftest.py +++ b/services/director-v2/tests/unit/with_dbs/conftest.py @@ -118,7 +118,6 @@ async def _( ), "node_class": to_node_class(node_data.key), "internal_id": internal_id + 1, - "submit": datetime.datetime.now(datetime.UTC), "job_id": generate_dask_job_id( service_key=node_data.key, service_version=node_data.version, From cac396e9473bc0418e5de00ca1c981dd803ab4db Mon Sep 17 00:00:00 2001 From: sanderegg <35365065+sanderegg@users.noreply.github.com> Date: Mon, 16 Dec 2024 11:12:59 +0100 Subject: [PATCH 5/9] @GitHK review: remove crap --- .../api/routes/computations.py | 42 +++++++++---------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/services/director-v2/src/simcore_service_director_v2/api/routes/computations.py b/services/director-v2/src/simcore_service_director_v2/api/routes/computations.py index 450d7d840d47..707d7a8cc1eb 100644 --- a/services/director-v2/src/simcore_service_director_v2/api/routes/computations.py +++ b/services/director-v2/src/simcore_service_director_v2/api/routes/computations.py @@ -1,4 +1,4 @@ -""" CRUD operations on a "computation" resource +"""CRUD operations on a "computation" resource A computation is a resource that represents a running pipeline of computational services in a give project Therefore, @@ -15,7 +15,6 @@ # pylint: disable=too-many-arguments # pylint: disable=too-many-statements - import contextlib import logging from typing import Annotated, Any, Final @@ -551,29 +550,26 @@ async def stop_computation( ) # get run details if any - async def _create_computation_response() -> ComputationGet: - last_run: CompRunsAtDB | None = None - with contextlib.suppress(ComputationalRunNotFoundError): - last_run = await comp_runs_repo.get( - user_id=computation_stop.user_id, project_id=project_id - ) - - return ComputationGet( - id=project_id, - state=pipeline_state, - pipeline_details=await compute_pipeline_details( - complete_dag, pipeline_dag, tasks - ), - url=TypeAdapter(AnyHttpUrl).validate_python(f"{request.url}"), - stop_url=None, - iteration=last_run.iteration if last_run else None, - result=None, - started=compute_pipeline_started_timestamp(pipeline_dag, tasks), - stopped=compute_pipeline_stopped_timestamp(pipeline_dag, tasks), - submitted=last_run.created if last_run else None, + last_run: CompRunsAtDB | None = None + with contextlib.suppress(ComputationalRunNotFoundError): + last_run = await comp_runs_repo.get( + user_id=computation_stop.user_id, project_id=project_id ) - return await _create_computation_response() + return ComputationGet( + id=project_id, + state=pipeline_state, + pipeline_details=await compute_pipeline_details( + complete_dag, pipeline_dag, tasks + ), + url=TypeAdapter(AnyHttpUrl).validate_python(f"{request.url}"), + stop_url=None, + iteration=last_run.iteration if last_run else None, + result=None, + started=compute_pipeline_started_timestamp(pipeline_dag, tasks), + stopped=compute_pipeline_stopped_timestamp(pipeline_dag, tasks), + submitted=last_run.created if last_run else None, + ) except ProjectNotFoundError as e: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"{e}") from e From 8c7be19ca98fa4fbd8607e4de3b886aa38c7bce0 Mon Sep 17 00:00:00 2001 From: sanderegg <35365065+sanderegg@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:05:57 +0100 Subject: [PATCH 6/9] fixed test --- .../comp_scheduler/test_api_route_computations.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/services/director-v2/tests/unit/with_dbs/comp_scheduler/test_api_route_computations.py b/services/director-v2/tests/unit/with_dbs/comp_scheduler/test_api_route_computations.py index 4c8ed5f4b78f..2d076c3fdf07 100644 --- a/services/director-v2/tests/unit/with_dbs/comp_scheduler/test_api_route_computations.py +++ b/services/director-v2/tests/unit/with_dbs/comp_scheduler/test_api_route_computations.py @@ -258,7 +258,11 @@ def _mocked_services_details( ).isoformat() } - data = {**ServiceGet.model_config["json_schema_extra"]["examples"][0], **data_published, **deprecated} # type: ignore + data = { + **ServiceGet.model_config["json_schema_extra"]["examples"][0], + **data_published, + **deprecated, + } # type: ignore payload = ServiceGet.model_validate(data) @@ -354,7 +358,6 @@ def _mocked_get_pricing_unit(request, pricing_plan_id: int) -> httpx.Response: assert_all_called=False, assert_all_mocked=True, ) as respx_mock: - respx_mock.get( re.compile( r"services/(?Psimcore/services/(comp|dynamic|frontend)/[^/]+)/(?P[^\.]+.[^\.]+.[^/\?]+)/pricing-plan.+" @@ -915,13 +918,7 @@ async def test_get_computation_from_not_started_computation_task( stopped=None, submitted=None, ) - _CHANGED_FIELDS = {"submitted"} - assert returned_computation.model_dump( - exclude=_CHANGED_FIELDS - ) == expected_computation.model_dump(exclude=_CHANGED_FIELDS) - assert returned_computation.model_dump( - include=_CHANGED_FIELDS - ) != expected_computation.model_dump(include=_CHANGED_FIELDS) + assert returned_computation == expected_computation async def test_get_computation_from_published_computation_task( From 5d1884738b499b30a3b450eedc3882209cf26e4e Mon Sep 17 00:00:00 2001 From: sanderegg <35365065+sanderegg@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:06:59 +0100 Subject: [PATCH 7/9] updated min threshold --- .codecov.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.codecov.yml b/.codecov.yml index eb2e66973481..f4a4f9cbcf41 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -10,10 +10,10 @@ flag_management: statuses: - type: project target: auto - threshold: 2% + threshold: 5% - type: patch target: auto - threshold: 2% + threshold: 5% component_management: @@ -22,7 +22,7 @@ component_management: statuses: - type: project target: auto - threshold: 2% + threshold: 5% branches: - "!master" individual_components: @@ -116,12 +116,12 @@ coverage: project: default: informational: true - threshold: 2% + threshold: 5% patch: default: informational: true - threshold: 2% + threshold: 5% comment: layout: "header,diff,flags,components,footer" From ec20f4f833eae1b94e3255223a5ad1fa3a3a75b7 Mon Sep 17 00:00:00 2001 From: sanderegg <35365065+sanderegg@users.noreply.github.com> Date: Mon, 16 Dec 2024 15:55:40 +0100 Subject: [PATCH 8/9] upgraded upgrade --- ...> 52a0e8148dd5_remove_submit_timestamp.py} | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) rename packages/postgres-database/src/simcore_postgres_database/migration/versions/{23c0b8409738_remove_submit_timestamp.py => 52a0e8148dd5_remove_submit_timestamp.py} (54%) diff --git a/packages/postgres-database/src/simcore_postgres_database/migration/versions/23c0b8409738_remove_submit_timestamp.py b/packages/postgres-database/src/simcore_postgres_database/migration/versions/52a0e8148dd5_remove_submit_timestamp.py similarity index 54% rename from packages/postgres-database/src/simcore_postgres_database/migration/versions/23c0b8409738_remove_submit_timestamp.py rename to packages/postgres-database/src/simcore_postgres_database/migration/versions/52a0e8148dd5_remove_submit_timestamp.py index 889b850f48d5..8589578abe75 100644 --- a/packages/postgres-database/src/simcore_postgres_database/migration/versions/23c0b8409738_remove_submit_timestamp.py +++ b/packages/postgres-database/src/simcore_postgres_database/migration/versions/52a0e8148dd5_remove_submit_timestamp.py @@ -1,36 +1,28 @@ """remove submit timestamp -Revision ID: 23c0b8409738 +Revision ID: 52a0e8148dd5 Revises: 77ac824a77ff -Create Date: 2024-12-16 07:30:03.814989+00:00 +Create Date: 2024-12-16 14:55:15.114923+00:00 """ -import sqlalchemy as sa from alembic import op +import sqlalchemy as sa from sqlalchemy.dialects import postgresql # revision identifiers, used by Alembic. -revision = "23c0b8409738" -down_revision = "77ac824a77ff" +revision = '52a0e8148dd5' +down_revision = '77ac824a77ff' branch_labels = None depends_on = None def upgrade(): # ### commands auto generated by Alembic - please adjust! ### - op.drop_column("comp_tasks", "submit") + op.drop_column('comp_tasks', 'submit') # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### - op.add_column( - "comp_tasks", - sa.Column( - "submit", - postgresql.TIMESTAMP(timezone=True), - autoincrement=False, - nullable=True, - ), - ) + op.add_column('comp_tasks', sa.Column('submit', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True)) # ### end Alembic commands ### From 200a6d18798e2d95a381b5e1f4b370e18fff6c19 Mon Sep 17 00:00:00 2001 From: sanderegg <35365065+sanderegg@users.noreply.github.com> Date: Tue, 17 Dec 2024 13:18:25 +0100 Subject: [PATCH 9/9] missing arrow --- packages/postgres-database/requirements/_test.in | 1 + packages/postgres-database/requirements/_test.txt | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/postgres-database/requirements/_test.in b/packages/postgres-database/requirements/_test.in index 3249c9c02b20..d0b7af019df3 100644 --- a/packages/postgres-database/requirements/_test.in +++ b/packages/postgres-database/requirements/_test.in @@ -10,6 +10,7 @@ --constraint _migration.txt aiopg[sa] +arrow coverage faker pytest diff --git a/packages/postgres-database/requirements/_test.txt b/packages/postgres-database/requirements/_test.txt index 49636a365c30..6b6c490ce721 100644 --- a/packages/postgres-database/requirements/_test.txt +++ b/packages/postgres-database/requirements/_test.txt @@ -1,5 +1,7 @@ aiopg==1.4.0 # via -r requirements/_test.in +arrow==1.3.0 + # via -r requirements/_test.in async-timeout==4.0.3 # via # -c requirements/_base.txt @@ -52,7 +54,9 @@ pytest-instafail==0.5.0 pytest-runner==6.0.1 # via -r requirements/_test.in python-dateutil==2.9.0.post0 - # via faker + # via + # arrow + # faker pyyaml==6.0.2 # via # -c requirements/../../../requirements/constraints.txt @@ -72,6 +76,8 @@ types-docker==7.1.0.20240827 # via -r requirements/_test.in types-psycopg2==2.9.21.20241019 # via -r requirements/_test.in +types-python-dateutil==2.9.0.20241206 + # via arrow types-requests==2.32.0.20241016 # via types-docker typing-extensions==4.12.2