@@ -97,21 +97,27 @@ def install_bundled_libs(session):
9797 target = os .environ .get ("VSCETARGET" , "" )
9898 print ("target:" , target )
9999 if "darwin" in target :
100- download_url (DEBUGPY_WHEEL_URLS ["macOS" ])
100+ # download_url(DEBUGPY_WHEEL_URLS["macOS"])
101+ _get_debugpy_url ("1.7.0" , "macosx" )
101102 elif "win32-ia32" == target :
102- download_url (DEBUGPY_WHEEL_URLS ["win32" ])
103+ _get_debugpy_url ("1.7.0" , "win32" )
104+ # download_url(DEBUGPY_WHEEL_URLS["win32"])
103105 elif "win32-x64" == target :
104- download_url (DEBUGPY_WHEEL_URLS ["win64" ])
106+ _get_debugpy_url ("1.7.0" , "win_amd64" )
107+ # download_url(DEBUGPY_WHEEL_URLS["win64"])
105108 elif "linux-x64" == target :
106- download_url (DEBUGPY_WHEEL_URLS ["linux" ])
109+ _get_debugpy_url ("1.7.0" , "manylinux" )
110+ # download_url(DEBUGPY_WHEEL_URLS["linux"])
107111 else :
108- download_url (DEBUGPY_WHEEL_URLS ["any" ])
112+ _get_debugpy_url ("1.7.0" )
113+ # download_url(DEBUGPY_WHEEL_URLS["any"])
109114
110115
111116def download_url (value ):
112117 with url_lib .urlopen (value ["url" ]) as response :
113118 data = response .read ()
114119 hash_algorithm , hash_digest = value ["hash" ]
120+ print (hash_digest )
115121 if hashlib .new (hash_algorithm , data ).hexdigest () != hash_digest :
116122 raise ValueError ("Failed hash verification for {}." .format (value ["url" ]))
117123 print ("Download: " , value ["url" ])
@@ -143,3 +149,28 @@ def update_build_number(session: nox.Session) -> None:
143149 session .log (f"Updating version from { package_json ['version' ]} to { version } " )
144150 package_json ["version" ] = version
145151 package_json_path .write_text (json .dumps (package_json , indent = 4 ), encoding = "utf-8" )
152+
153+ def _get_pypi_package_data (package_name ):
154+ json_uri = "https://pypi.org/pypi/{0}/json" .format (package_name )
155+ # Response format: https://warehouse.readthedocs.io/api-reference/json/#project
156+ # Release metadata format: https://github.com/pypa/interoperability-peps/blob/master/pep-0426-core-metadata.rst
157+ with url_lib .urlopen (json_uri ) as response :
158+ return json .loads (response .read ())
159+
160+ def _get_debugpy_url (version = "latest" , platform = "none-any" , cp = "cp311" ):
161+ from packaging .version import parse as version_parser
162+
163+ data = _get_pypi_package_data ('debugpy' )
164+
165+ if version == "latest" :
166+ use_version = max (data ["releases" ].keys (), key = version_parser )
167+ else :
168+ use_version = version
169+
170+ data = list (
171+ {"url" : r ["url" ], "hash" : ("sha256" , r ["digests" ]["sha256" ])} for r in data ["releases" ][use_version ] if _contains (r ["filename" ], ("{}-{}" .format (cp , platform ),))
172+ )[0 ]
173+ download_url (data )
174+
175+ def _contains (s , parts = ()):
176+ return any (p for p in parts if p in s )
0 commit comments