MCPcopy Index your code
hub / github.com/actions/setup-python / findRelease

Function findRelease

src/install-pypy.ts:185–242  ·  view source on GitHub ↗
(
  releases: IPyPyManifestRelease[],
  pythonVersion: string,
  pypyVersion: string,
  architecture: string,
  includePrerelease: boolean
)

Source from the content-addressed store, hash-verified

183}
184
185export function findRelease(
186 releases: IPyPyManifestRelease[],
187 pythonVersion: string,
188 pypyVersion: string,
189 architecture: string,
190 includePrerelease: boolean
191) {
192 const options = {includePrerelease: includePrerelease};
193 const filterReleases = releases.filter(item => {
194 const isPythonVersionSatisfied = semver.satisfies(
195 semver.coerce(item.python_version)!,
196 pythonVersion
197 );
198 const isPyPyNightly =
199 isNightlyKeyword(pypyVersion) && isNightlyKeyword(item.pypy_version);
200 const isPyPyVersionSatisfied =
201 isPyPyNightly ||
202 semver.satisfies(
203 pypyVersionToSemantic(item.pypy_version),
204 pypyVersion,
205 options
206 );
207 const isArchPresent =
208 item.files &&
209 (IS_WINDOWS
210 ? isArchPresentForWindows(item, architecture)
211 : isArchPresentForMacOrLinux(item, architecture, process.platform));
212 return isPythonVersionSatisfied && isPyPyVersionSatisfied && isArchPresent;
213 });
214
215 if (filterReleases.length === 0) {
216 return null;
217 }
218
219 const sortedReleases = filterReleases.sort((previous, current) => {
220 return (
221 semver.compare(
222 semver.coerce(pypyVersionToSemantic(current.pypy_version))!,
223 semver.coerce(pypyVersionToSemantic(previous.pypy_version))!
224 ) ||
225 semver.compare(
226 semver.coerce(current.python_version)!,
227 semver.coerce(previous.python_version)!
228 )
229 );
230 });
231
232 const foundRelease = sortedReleases[0];
233 const foundAsset = IS_WINDOWS
234 ? findAssetForWindows(foundRelease, architecture)
235 : findAssetForMacOrLinux(foundRelease, architecture, process.platform);
236
237 return {
238 foundAsset,
239 resolvedPythonVersion: foundRelease.python_version,
240 resolvedPyPyVersion: foundRelease.pypy_version.trim()
241 };
242}

Callers 1

installPyPyFunction · 0.70

Calls 6

isNightlyKeywordFunction · 0.90
pypyVersionToSemanticFunction · 0.85
isArchPresentForWindowsFunction · 0.85
findAssetForWindowsFunction · 0.85
findAssetForMacOrLinuxFunction · 0.85

Tested by

no test coverage detected