diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 43e5eff1171da8d69eb8897bea678bf90572570a..7fa7fc1e3ba287611b84d22cd969ef50655f8a8f 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:10 +FROM debian:11 RUN apt-get update && \ apt-get install \ curl \ @@ -13,7 +13,7 @@ RUN apt-get update && \ tox \ git \ openjdk-11-jdk-headless \ - python-autopep8 \ + python3-autopep8 \ python3-pytest \ libxml2 \ -y diff --git a/src/caosadvancedtools/models/data_model.py b/src/caosadvancedtools/models/data_model.py index a4804dd0fb0300af9b166717f41f341a57b677d4..e198d15ca2c56eceec29c356cabdf28ac44895b2 100644 --- a/src/caosadvancedtools/models/data_model.py +++ b/src/caosadvancedtools/models/data_model.py @@ -23,6 +23,11 @@ # ** end header # from copy import deepcopy +# TODO(fspreck) for backwards compatibility with Python < 3.9 but this is +# actually +# [deprecated](https://docs.python.org/3/library/typing.html#typing.List), so +# remove this, when we drop support for old Python versions. +from typing import List import caosdb as db from caosdb.apiutils import compare_entities, describe_diff @@ -68,14 +73,14 @@ class DataModel(dict): else: super().__init__(args) - def append(self, entity): + def append(self, entity: db.Entity): self[entity.name] = entity - def extend(self, entities): + def extend(self, entities: List[db.Entity]): for entity in entities: self.append(entity) - def sync_data_model(self, noquestion=False): + def sync_data_model(self, noquestion: bool = False, verbose: bool = True): """Synchronize this DataModel with a CaosDB instance. Updates existing entities from the CaosDB instance and inserts @@ -100,23 +105,27 @@ class DataModel(dict): self.sync_ids_by_name(tmp_exist) if len(non_existing_entities) > 0: - print("New entities:") + if verbose: + print("New entities:") - for ent in non_existing_entities: - print(ent.name) + for ent in non_existing_entities: + print(ent.name) if noquestion or str(input("Do you really want to insert those " "entities? [y/N] ")).lower() == "y": non_existing_entities.insert() self.sync_ids_by_name(non_existing_entities) - print("Updated entities.") + if verbose: + print("Updated entities.") else: return else: - print("No new entities.") + if verbose: + print("No new entities.") if len(existing_entities) > 0: - print("Inspecting changes that will be made...") + if verbose: + print("Inspecting changes that will be made...") any_change = False for ent in existing_entities: @@ -126,18 +135,22 @@ class DataModel(dict): ), name=ent.name)) if diff != "": - print(diff) + if verbose: + print(diff) any_change = True if any_change: if noquestion or input("Do you really want to apply the above " "changes? [y/N]") == "y": existing_entities.update() - print("Synchronized existing entities.") + if verbose: + print("Synchronized existing entities.") else: - print("No differences found. No update") + if verbose: + print("No differences found. No update") else: - print("No existing entities updated.") + if verbose: + print("No existing entities updated.") @staticmethod def get_existing_entities(entities):