(pkg)
| 41 | |
| 42 | |
| 43 | async def _load_package(pkg): |
| 44 | if isinstance(pkg, str) and _http_url.match(pkg): |
| 45 | urlobj = urlparse(pkg) |
| 46 | fname = posixpath.basename(urlobj.path) |
| 47 | name, url, size, deps = fname, pkg, None, [] |
| 48 | else: |
| 49 | # TODO: load dependencies as well |
| 50 | name, fname, url, size, deps = await _load_info_pypi(pkg) |
| 51 | if name in _loaded_packages: |
| 52 | return |
| 53 | deps = asyncweb.spawn(asyncweb.wait_all(_load_package for dep in deps)) |
| 54 | size_str = format_size(size) if size is not None else "unknown size" |
| 55 | LOG_FUNC(f"Downloading {fname} ({size_str})...") |
| 56 | zip_data = io.BytesIO(await browser.fetch(url, response_format="array_buffer")) |
| 57 | size = len(zip_data.getbuffer()) |
| 58 | LOG_FUNC(f"{fname} done!") |
| 59 | _loaded_packages[name] = zipfile.ZipFile(zip_data) |
| 60 | await deps |
| 61 | |
| 62 | |
| 63 | async def _load_info_pypi(pkg): |
no test coverage detected