@@ -97,21 +97,27 @@ def install_bundled_libs(session):
97
97
target = os .environ .get ("VSCETARGET" , "" )
98
98
print ("target:" , target )
99
99
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" )
101
102
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"])
103
105
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"])
105
108
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"])
107
111
else :
108
- download_url (DEBUGPY_WHEEL_URLS ["any" ])
112
+ _get_debugpy_url ("1.7.0" )
113
+ # download_url(DEBUGPY_WHEEL_URLS["any"])
109
114
110
115
111
116
def download_url (value ):
112
117
with url_lib .urlopen (value ["url" ]) as response :
113
118
data = response .read ()
114
119
hash_algorithm , hash_digest = value ["hash" ]
120
+ print (hash_digest )
115
121
if hashlib .new (hash_algorithm , data ).hexdigest () != hash_digest :
116
122
raise ValueError ("Failed hash verification for {}." .format (value ["url" ]))
117
123
print ("Download: " , value ["url" ])
@@ -143,3 +149,28 @@ def update_build_number(session: nox.Session) -> None:
143
149
session .log (f"Updating version from { package_json ['version' ]} to { version } " )
144
150
package_json ["version" ] = version
145
151
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