GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — vscode-python/pythonFiles/install_debugpy.py at main · ilexei/vscode-python Expand file tree/ Copy pathinstall_debugpy.pyMore file actions 63 lines (48 loc) · 2.25 KB / Copy pathinstall_debugpy.pyFile metadata and controls63 lines (48 loc) · 2.25 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 import io import json import os import urllib.request as url_lib import zipfile from packaging.version import parse as version_parser EXTENSION_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) DEBUGGER_DEST = os.path.join(EXTENSION_ROOT, "pythonFiles", "lib", "python") DEBUGGER_PACKAGE = "debugpy" DEBUGGER_PYTHON_VERSIONS = ("cp39",) def _contains(s, parts=()): return any(p for p in parts if p in s) def _get_package_data(): json_uri = "https://pypi.org/pypi/{0}/json".format(DEBUGGER_PACKAGE) # Response format: https://warehouse.readthedocs.io/api-reference/json/#project # Release metadata format: https://github.com/pypa/interoperability-peps/blob/master/pep-0426-core-metadata.rst with url_lib.urlopen(json_uri) as response: return json.loads(response.read()) def _get_debugger_wheel_urls(data, version): return list( r["url"] for r in data["releases"][version] if _contains(r["url"], DEBUGGER_PYTHON_VERSIONS) ) def _download_and_extract(root, url, version): root = os.getcwd() if root is None or root == "." else root prefix = os.path.join("debugpy-{0}.data".format(version), "purelib") with url_lib.urlopen(url) as response: # Extract only the contents of the purelib subfolder (parent folder of debugpy), # since debugpy files rely on the presence of a 'debugpy' folder. with zipfile.ZipFile(io.BytesIO(response.read()), "r") as wheel: for zip_info in wheel.infolist(): # Ignore dist info since we are merging multiple wheels if ".dist-info" in zip_info.filename: continue # Normalize path for Windows, the wheel folder structure # uses forward slashes. normalized = os.path.normpath(zip_info.filename) # Flatten the folder structure. zip_info.filename = normalized.split(prefix)[-1] wheel.extract(zip_info, root) def main(root): data = _get_package_data() latest_version = max(data["releases"].keys(), key=version_parser) for url in _get_debugger_wheel_urls(data, latest_version): _download_and_extract(root, url, latest_version) if __name__ == "__main__": main(DEBUGGER_DEST) |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |