Open URLs and yield a stream of url+stream pairs. Args: data: iterator over dict(url=...) handler: exception handler. kw: keyword arguments for gopen.gopen. Yields: a stream of url+stream pairs.
(
data,
handler,
**kw,
)
| 190 | break |
| 191 | |
| 192 | def url_opener( |
| 193 | data, |
| 194 | handler, |
| 195 | **kw, |
| 196 | ): |
| 197 | """Open URLs and yield a stream of url+stream pairs. |
| 198 | |
| 199 | Args: |
| 200 | data: iterator over dict(url=...) |
| 201 | handler: exception handler. |
| 202 | kw: keyword arguments for gopen.gopen. |
| 203 | |
| 204 | Yields: |
| 205 | a stream of url+stream pairs. |
| 206 | """ |
| 207 | for sample in data: |
| 208 | assert isinstance(sample, dict), sample |
| 209 | assert "url" in sample |
| 210 | url = sample["url"] |
| 211 | try: |
| 212 | stream = gopen(url, **kw) |
| 213 | if hasattr(stream, 'meta_stream'): |
| 214 | meta_stream = stream.meta_stream |
| 215 | del stream.meta_stream |
| 216 | else: |
| 217 | meta_stream = None |
| 218 | sample.update(stream=stream, meta_stream=meta_stream) |
| 219 | yield sample |
| 220 | except Exception as exn: |
| 221 | exn.args = exn.args + (url,) |
| 222 | if handler(exn): |
| 223 | continue |
| 224 | else: |
| 225 | break |
| 226 | |
| 227 | def tarfile_samples_with_meta(src, meta_names, handler=reraise_exception): |
| 228 | streams = url_opener(src, handler=handler) |
no test coverage detected