From 3a40e9a2f071aee279e03d1fe7ee4b469b48d552 Mon Sep 17 00:00:00 2001
From: florian <f.spreckelsen@inidscale.com>
Date: Fri, 18 Nov 2022 17:55:31 +0100
Subject: [PATCH] MAINT: Use new error and reorganize imports

---
 src/caoscrawler/crawl.py | 47 +++++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 22 deletions(-)

diff --git a/src/caoscrawler/crawl.py b/src/caoscrawler/crawl.py
index be6e00ce..bc482c31 100644
--- a/src/caoscrawler/crawl.py
+++ b/src/caoscrawler/crawl.py
@@ -29,35 +29,40 @@ the acuired data with CaosDB.
 """
 
 from __future__ import annotations
+
+import argparse
 import importlib
-from caosadvancedtools.cache import UpdateCache, Cache
-import uuid
-import sys
+import logging
 import os
+import sys
+import uuid
+import warnings
 import yaml
+
+from argparse import RawTextHelpFormatter
+from collections import defaultdict
+from copy import deepcopy
 from enum import Enum
-import logging
 from importlib_resources import files
-import argparse
-from argparse import RawTextHelpFormatter
+from jsonschema import validate
+from typing import Any, Optional, Type, Union
+
 import caosdb as db
+
+from caosadvancedtools.cache import UpdateCache, Cache
 from caosadvancedtools.crawler import Crawler as OldCrawler
-import warnings
+from caosdb.apiutils import (compare_entities, EntityMergeConflictError,
+                             merge_entities)
 from caosdb.common.datatype import is_reference
-from .stores import GeneralStore, RecordStore
-from .identified_cache import IdentifiedCache
-from .structure_elements import StructureElement, Directory
+
 from .converters import Converter, DirectoryConverter
 from .identifiable_adapters import (IdentifiableAdapter,
                                     LocalStorageIdentifiableAdapter,
                                     CaosDBIdentifiableAdapter)
-from collections import defaultdict
-from typing import Any, Optional, Type, Union
-from caosdb.apiutils import compare_entities, merge_entities
-from copy import deepcopy
-from jsonschema import validate
-
+from .identified_cache import IdentifiedCache
 from .macros import defmacro_constructor, macro_constructor
+from .stores import GeneralStore, RecordStore
+from .structure_elements import StructureElement, Directory
 
 logger = logging.getLogger(__name__)
 
@@ -744,11 +749,8 @@ class Crawler(object):
                     newrecord = self.get_from_any_cache(record)
                     try:
                         merge_entities(newrecord, record)
-                    except RuntimeError as re:
-                        if "Merge conflict" in str(re):
-                            continue
-                        else:
-                            raise re
+                    except EntityMergeConflictError:
+                        continue
                     Crawler.bend_references_to_new_object(
                         old=record, new=newrecord, entities=flat + to_be_updated + to_be_inserted)
 
@@ -986,7 +988,8 @@ class Crawler(object):
         if self.identifiableAdapter is None:
             raise RuntimeError("Should not happen.")
 
-        to_be_inserted, to_be_updated = self.split_into_inserts_and_updates(crawled_data)
+        to_be_inserted, to_be_updated = self.split_into_inserts_and_updates(
+            crawled_data)
 
         # TODO: refactoring of typo
         for el in to_be_updated:
-- 
GitLab