From 22f2f2c43c5d08d81594746d49482f7e37bc020e Mon Sep 17 00:00:00 2001 From: David Douard Date: Fri, 30 Aug 2019 16:57:42 +0200 Subject: [PATCH] core: make it possible to specify the api_baseurl init argument in override_config This is required to be able to make lister classes instanciation easier and more reliable, especially in the context of cli tools like 'swh lister run', for which we want to be able to specify any lister init argument as extra parameter of the command. --- swh/lister/core/indexing_lister.py | 2 +- swh/lister/core/lister_transports.py | 6 +++++- swh/lister/core/page_by_page_lister.py | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/swh/lister/core/indexing_lister.py b/swh/lister/core/indexing_lister.py index 21d4a82..834d5f9 100644 --- a/swh/lister/core/indexing_lister.py +++ b/swh/lister/core/indexing_lister.py @@ -245,5 +245,5 @@ class IndexingHttpLister(ListerHttpTransport, IndexingLister): """Convenience class for ensuring right lookup and init order when combining IndexingLister and ListerHttpTransport.""" def __init__(self, api_baseurl=None, override_config=None): - ListerHttpTransport.__init__(self, api_baseurl=api_baseurl) IndexingLister.__init__(self, override_config=override_config) + ListerHttpTransport.__init__(self, api_baseurl=api_baseurl) diff --git a/swh/lister/core/lister_transports.py b/swh/lister/core/lister_transports.py index 2bacb6c..ff0827c 100644 --- a/swh/lister/core/lister_transports.py +++ b/swh/lister/core/lister_transports.py @@ -29,7 +29,7 @@ class ListerHttpTransport(abc.ABC): To be used in conjunction with ListerBase or a subclass of it. """ - + DEFAULT_URL = None PATH_TEMPLATE = AbstractAttribute('string containing a python string' ' format pattern that produces the API' ' endpoint path for listing stored' @@ -143,6 +143,10 @@ class ListerHttpTransport(abc.ABC): return False, 0 def __init__(self, api_baseurl=None): + if not api_baseurl: + api_baseurl = self.config.get('api_baseurl') + if not api_baseurl: + api_baseurl = self.DEFAULT_URL if not api_baseurl: raise NameError('HTTP Lister Transport requires api_baseurl.') self.api_baseurl = api_baseurl # eg. 'https://api.github.com' diff --git a/swh/lister/core/page_by_page_lister.py b/swh/lister/core/page_by_page_lister.py index f05b3a5..4895068 100644 --- a/swh/lister/core/page_by_page_lister.py +++ b/swh/lister/core/page_by_page_lister.py @@ -156,5 +156,5 @@ class PageByPageHttpLister(ListerHttpTransport, PageByPageLister): """ def __init__(self, api_baseurl=None, override_config=None): - ListerHttpTransport.__init__(self, api_baseurl=api_baseurl) PageByPageLister.__init__(self, override_config=override_config) + ListerHttpTransport.__init__(self, api_baseurl=api_baseurl)