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,
)
| 199 | |
| 200 | |
| 201 | def url_opener( |
| 202 | data, |
| 203 | handler, |
| 204 | **kw, |
| 205 | ): |
| 206 | """Open URLs and yield a stream of url+stream pairs. |
| 207 | |
| 208 | Args: |
| 209 | data: iterator over dict(url=...) |
| 210 | handler: exception handler. |
| 211 | kw: keyword arguments for gopen.gopen. |
| 212 | |
| 213 | Yields: |
| 214 | a stream of url+stream pairs. |
| 215 | """ |
| 216 | for sample in data: |
| 217 | assert isinstance(sample, dict), sample |
| 218 | assert "url" in sample |
| 219 | url = sample["url"] |
| 220 | try: |
| 221 | stream = gopen(url, **kw) |
| 222 | if hasattr(stream, "meta_stream"): |
| 223 | meta_stream = stream.meta_stream |
| 224 | del stream.meta_stream |
| 225 | else: |
| 226 | meta_stream = None |
| 227 | sample.update(stream=stream, meta_stream=meta_stream) |
| 228 | yield sample |
| 229 | except Exception as exn: |
| 230 | exn.args = exn.args + (url,) |
| 231 | if handler(exn): |
| 232 | continue |
| 233 | else: |
| 234 | break |
| 235 | |
| 236 | |
| 237 | def tarfile_samples_with_meta(src, meta_names, handler=reraise_exception): |
no test coverage detected