From efad9eb624adc7bdf538da8dd1000db23688fb20 Mon Sep 17 00:00:00 2001 From: Jan Moeller Date: Mon, 31 Jul 2023 00:00:02 +0200 Subject: [PATCH] fix(repair_collection): use DiscoverResult logic to discover collection fixes error: `DAVSession.__init__() missing 1 required keyword-only argument: 'connector'`. Reuses the existing logic in DiscoverResult to determine if the storage requires a 'connector' arg. --- vdirsyncer/cli/discover.py | 6 +++--- vdirsyncer/cli/tasks.py | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/vdirsyncer/cli/discover.py b/vdirsyncer/cli/discover.py index c28af14..e18aa20 100644 --- a/vdirsyncer/cli/discover.py +++ b/vdirsyncer/cli/discover.py @@ -76,8 +76,8 @@ async def collections_for_pair( logger.info(f"Discovering collections for pair {pair.name}") - a_discovered = _DiscoverResult(pair.config_a, connector=connector) - b_discovered = _DiscoverResult(pair.config_b, connector=connector) + a_discovered = DiscoverResult(pair.config_a, connector=connector) + b_discovered = DiscoverResult(pair.config_b, connector=connector) if list_collections: # TODO: We should gather data and THEN print, so it can be async. @@ -155,7 +155,7 @@ def _expand_collections_cache(collections, config_a, config_b): yield name, (a, b) -class _DiscoverResult: +class DiscoverResult: def __init__(self, config, *, connector): self._cls, _ = storage_class_from_config(config) diff --git a/vdirsyncer/cli/tasks.py b/vdirsyncer/cli/tasks.py index 7a94f9f..8aa2b43 100644 --- a/vdirsyncer/cli/tasks.py +++ b/vdirsyncer/cli/tasks.py @@ -5,8 +5,8 @@ import aiohttp from .. import exceptions from .. import sync from .config import CollectionConfig +from .discover import DiscoverResult from .discover import collections_for_pair -from .discover import storage_class_from_config from .discover import storage_instance_from_config from .utils import JobFailed from .utils import cli_logger @@ -115,8 +115,9 @@ async def repair_collection( if collection is not None: cli_logger.info("Discovering collections (skipping cache).") - cls, config = storage_class_from_config(config) - async for config in cls.discover(**config): # noqa E902 + get_discovered = DiscoverResult(config, connector=connector) + discovered = await get_discovered.get_self() + for config in discovered.values(): if config["collection"] == collection: break else: