173) -> Tuple[Optional[str], Optional[LinkSource]]:
174 path: Optional[str] = None
175 url: Optional[str] = None
177 url = path_to_url(location)
178 path = location
180 url = location
181 path = url_to_path(location)
182 elif is_url(location):
183 url = location
184
185 if url is None:
186 msg = (
187 "Location '%s' is ignored: "
188 "it is either a non-existing path or lacks a specific scheme."
189 )
191 return (None, None)
192
193 if path is None:
194 source: LinkSource = _RemoteFileSource(
195 candidates_from_page=candidates_from_page,
196 page_validator=page_validator,
197 link=Link(url, cache_link_parsing=cache_link_parsing),
198 )
199 return (url, source)
200
202 if expand_dir:
203 source = _FlatDirectorySource(
204 candidates_from_page=candidates_from_page,
205 path=path,
206 )
207 else:
208 source = _IndexDirectorySource(
209 candidates_from_page=candidates_from_page,
210 link=Link(url, cache_link_parsing=cache_link_parsing),
211 )
212 return (url, source)
214 source = _LocalFileSource(
215 candidates_from_page=candidates_from_page,
216 link=Link(url, cache_link_parsing=cache_link_parsing),
217 )
218 return (url, source)
220 "Location '%s' is ignored: it is neither a file nor a directory.",
221 location,
222 )
223 return (url, None)