@@ -2862,6 +2862,25 @@ def create_simple_retriever(
28622862 use_cache : Optional [bool ] = None ,
28632863 ** kwargs : Any ,
28642864 ) -> SimpleRetriever :
2865+ def _get_url () -> str :
2866+ """
2867+ Closure to get the URL from the requester. This is used to get the URL in the case of a lazy retriever.
2868+ This is needed because the URL is not set until the requester is created.
2869+ """
2870+
2871+ _url = (
2872+ model .requester .url
2873+ if hasattr (model .requester , "url" ) and model .requester .url is not None
2874+ else requester .get_url ()
2875+ )
2876+ _url_base = (
2877+ model .requester .url_base
2878+ if hasattr (model .requester , "url_base" ) and model .requester .url_base is not None
2879+ else requester .get_url_base ()
2880+ )
2881+
2882+ return _url or _url_base
2883+
28652884 decoder = (
28662885 self ._create_component_from_model (model = model .decoder , config = config )
28672886 if model .decoder
@@ -2926,17 +2945,6 @@ def create_simple_retriever(
29262945 use_cache = use_cache ,
29272946 config = config ,
29282947 )
2929- _url = (
2930- model .requester .url
2931- if hasattr (model .requester , "url" ) and model .requester .url is not None
2932- else requester .get_url ()
2933- )
2934- _url_base = (
2935- model .requester .url_base
2936- if hasattr (model .requester , "url_base" ) and model .requester .url_base is not None
2937- else requester .get_url_base ()
2938- )
2939- url_base = _url or _url_base
29402948
29412949 # Define cursor only if per partition or common incremental support is needed
29422950 cursor = stream_slicer if isinstance (stream_slicer , DeclarativeCursor ) else None
@@ -2960,7 +2968,7 @@ def create_simple_retriever(
29602968 self ._create_component_from_model (
29612969 model = model .paginator ,
29622970 config = config ,
2963- url_base = url_base ,
2971+ url_base = _get_url () ,
29642972 decoder = decoder ,
29652973 cursor_used_for_stop_condition = cursor_used_for_stop_condition ,
29662974 )
0 commit comments