mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-29 12:07:11 +00:00
chore(deps): refresh packages and bundled engines
- update compatible npm and Cargo lock dependencies - refresh yt-dlp and target-specific FFmpeg artifacts with verified hashes - detect provider SHA-256 drift in the update checker
This commit is contained in:
+10
-10
@@ -3,9 +3,9 @@
|
|||||||
"targets": {
|
"targets": {
|
||||||
"x86_64-pc-windows-msvc": {
|
"x86_64-pc-windows-msvc": {
|
||||||
"yt-dlp": {
|
"yt-dlp": {
|
||||||
"version": "2026.07.04",
|
"version": "2026.08.19",
|
||||||
"url": "https://github.com/yt-dlp/yt-dlp/releases/download/2026.07.04/yt-dlp_win.zip",
|
"url": "https://github.com/yt-dlp/yt-dlp/releases/download/2026.08.19/yt-dlp_win.zip",
|
||||||
"sha256": "90254845be5282b1f4d843a873abff04f569f857f64250f833fe152b21eec152"
|
"sha256": "30b4c14aafab6082becff7881e41b76df46dc43ea7633479410a91e29da492bf"
|
||||||
},
|
},
|
||||||
"deno": {
|
"deno": {
|
||||||
"version": "2.9.5",
|
"version": "2.9.5",
|
||||||
@@ -14,8 +14,8 @@
|
|||||||
},
|
},
|
||||||
"ffmpeg": {
|
"ffmpeg": {
|
||||||
"version": "8.1.2-44-g7c533d0f86",
|
"version": "8.1.2-44-g7c533d0f86",
|
||||||
"url": "https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-08-18-15-03/ffmpeg-n8.1.2-44-g7c533d0f86-win64-gpl-8.1.zip",
|
"url": "https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-08-20-13-45/ffmpeg-n8.1.2-44-g7c533d0f86-win64-gpl-8.1.zip",
|
||||||
"sha256": "66e3797adad33063ae3f55c7eacb9f1bff604322a4e50225039626230fd0c0d1"
|
"sha256": "410c82fc0a7d713fd83412138271b8559faa8cf8a74a75eaf541dfca75ea4590"
|
||||||
},
|
},
|
||||||
"aria2c": {
|
"aria2c": {
|
||||||
"version": "1.37.0",
|
"version": "1.37.0",
|
||||||
@@ -25,9 +25,9 @@
|
|||||||
},
|
},
|
||||||
"x86_64-unknown-linux-gnu": {
|
"x86_64-unknown-linux-gnu": {
|
||||||
"yt-dlp": {
|
"yt-dlp": {
|
||||||
"version": "2026.07.04",
|
"version": "2026.08.19",
|
||||||
"url": "https://github.com/yt-dlp/yt-dlp/releases/download/2026.07.04/yt-dlp_linux.zip",
|
"url": "https://github.com/yt-dlp/yt-dlp/releases/download/2026.08.19/yt-dlp_linux.zip",
|
||||||
"sha256": "d7d2d09e900b5ae11821b5784b18cf064984a2bd88b1ca5c798d744bcbe3658b"
|
"sha256": "32e72032766bef9199d99d15beb69fd52e46df8f8b06f0d8745db59e04d339e9"
|
||||||
},
|
},
|
||||||
"deno": {
|
"deno": {
|
||||||
"version": "2.9.5",
|
"version": "2.9.5",
|
||||||
@@ -36,8 +36,8 @@
|
|||||||
},
|
},
|
||||||
"ffmpeg": {
|
"ffmpeg": {
|
||||||
"version": "8.1.2-44-g7c533d0f86",
|
"version": "8.1.2-44-g7c533d0f86",
|
||||||
"url": "https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-08-18-15-03/ffmpeg-n8.1.2-44-g7c533d0f86-linux64-gpl-8.1.tar.xz",
|
"url": "https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-08-20-13-45/ffmpeg-n8.1.2-44-g7c533d0f86-linux64-gpl-8.1.tar.xz",
|
||||||
"sha256": "03ccc8a1cb534b97c2bc43f322ddb1b7c23bd325abb7e4c31aa37f4b4c0e648f"
|
"sha256": "1135ba005de82cecce7ceba9d653c47374af8a657a0eae93571214c6a5169850"
|
||||||
},
|
},
|
||||||
"aria2c": {
|
"aria2c": {
|
||||||
"version": "1.37.0",
|
"version": "1.37.0",
|
||||||
|
|||||||
+4
-4
@@ -4,10 +4,10 @@
|
|||||||
"aarch64-apple-darwin": {
|
"aarch64-apple-darwin": {
|
||||||
"engines": {
|
"engines": {
|
||||||
"yt-dlp": {
|
"yt-dlp": {
|
||||||
"version": "2026.07.04",
|
"version": "2026.08.19",
|
||||||
"source": "https://github.com/yt-dlp/yt-dlp",
|
"source": "https://github.com/yt-dlp/yt-dlp",
|
||||||
"build": "PyInstaller onedir distribution with embedded Python and yt_dlp_ejs",
|
"build": "PyInstaller onedir distribution with embedded Python and yt_dlp_ejs",
|
||||||
"sha256": "ff7d4fc44b8fbf42da021c1bca950da0326cdb0cdb84992fdc7fb7ec215df435"
|
"sha256": "4f54eb67e4e96c7c3ffa49dd5deb81bc348bbb495080889b47d157d5c6d74443"
|
||||||
},
|
},
|
||||||
"aria2c": {
|
"aria2c": {
|
||||||
"version": "1.37.0",
|
"version": "1.37.0",
|
||||||
@@ -31,8 +31,8 @@
|
|||||||
},
|
},
|
||||||
"runtimeTrees": {
|
"runtimeTrees": {
|
||||||
"_internal": {
|
"_internal": {
|
||||||
"files": 142,
|
"files": 133,
|
||||||
"sha256": "769507d9b8d97164ef81ebb449873072697bf82acac8c7d61c7bfd96c551e210"
|
"sha256": "24ac8c7557dbef0ef9e5685365b4620bc441a168daf314b71218276b782dc449"
|
||||||
},
|
},
|
||||||
"aria2-libs": {
|
"aria2-libs": {
|
||||||
"files": 7,
|
"files": 7,
|
||||||
|
|||||||
Generated
+28
-24
@@ -24,23 +24,23 @@
|
|||||||
"@tauri-apps/plugin-log": "^2.9.0",
|
"@tauri-apps/plugin-log": "^2.9.0",
|
||||||
"@tauri-apps/plugin-notification": "^2.3.3",
|
"@tauri-apps/plugin-notification": "^2.3.3",
|
||||||
"@tauri-apps/plugin-opener": "^2",
|
"@tauri-apps/plugin-opener": "^2",
|
||||||
"i18next": "^26.3.6",
|
"i18next": "^26.4.0",
|
||||||
"lucide-react": "^1.32.0",
|
"lucide-react": "^1.33.0",
|
||||||
"react": "^19.2.8",
|
"react": "^19.2.8",
|
||||||
"react-dom": "^19.2.8",
|
"react-dom": "^19.2.8",
|
||||||
"react-i18next": "^17.0.11",
|
"react-i18next": "^17.0.12",
|
||||||
"zustand": "^5.0.15"
|
"zustand": "^5.0.15"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tauri-apps/cli": "^2.11.4",
|
"@tauri-apps/cli": "^2.11.4",
|
||||||
"@types/react": "^19.2.18",
|
"@types/react": "^19.2.18",
|
||||||
"@types/react-dom": "^19.2.4",
|
"@types/react-dom": "^19.2.4",
|
||||||
"@vitejs/plugin-react": "^6.0.5",
|
"@vitejs/plugin-react": "^6.1.0",
|
||||||
"autoprefixer": "^10.5.4",
|
"autoprefixer": "^10.5.4",
|
||||||
"postcss": "^8.5.26",
|
"postcss": "^8.5.26",
|
||||||
"tailwindcss": "^4.3.3",
|
"tailwindcss": "^4.3.3",
|
||||||
"typescript": "^7.0.2",
|
"typescript": "^7.0.2",
|
||||||
"vite": "^8.2.1",
|
"vite": "^8.2.2",
|
||||||
"vitest": "^4.1.11"
|
"vitest": "^4.1.11"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -1416,9 +1416,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vitejs/plugin-react": {
|
"node_modules/@vitejs/plugin-react": {
|
||||||
"version": "6.0.5",
|
"version": "6.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.1.0.tgz",
|
||||||
"integrity": "sha512-BOVzne/NL162sMdResB25mUv+vWMF5NoAjNf09TeGlE7ZpszZWSD3winycicLJw72yeVsoCn/2kOhEuCvEShMA==",
|
"integrity": "sha512-qd2BzUBehkov86WFhg0JkEFEYyCLG9uPCe6qWTY/kRlss9OvJrOF2UbIWT7p+8IzZHkEu0DNGHc4HSv+JdDLsw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1430,6 +1430,7 @@
|
|||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@rolldown/plugin-babel": "^0.1.7 || ^0.2.0",
|
"@rolldown/plugin-babel": "^0.1.7 || ^0.2.0",
|
||||||
"babel-plugin-react-compiler": "^1.0.0",
|
"babel-plugin-react-compiler": "^1.0.0",
|
||||||
|
"oxc-transform-react": "^0.145.0",
|
||||||
"vite": "^8.0.0"
|
"vite": "^8.0.0"
|
||||||
},
|
},
|
||||||
"peerDependenciesMeta": {
|
"peerDependenciesMeta": {
|
||||||
@@ -1438,6 +1439,9 @@
|
|||||||
},
|
},
|
||||||
"babel-plugin-react-compiler": {
|
"babel-plugin-react-compiler": {
|
||||||
"optional": true
|
"optional": true
|
||||||
|
},
|
||||||
|
"oxc-transform-react": {
|
||||||
|
"optional": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1820,9 +1824,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/i18next": {
|
"node_modules/i18next": {
|
||||||
"version": "26.3.6",
|
"version": "26.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/i18next/-/i18next-26.3.6.tgz",
|
"resolved": "https://registry.npmjs.org/i18next/-/i18next-26.4.0.tgz",
|
||||||
"integrity": "sha512-Bu5Z2nAXgfVyM8xvW3jk9EKRIuX37PudsrBViThNFx7CR7aaYTpP01cxNB/E4c4UUzTDiAZRstEhsRfPOL/8xA==",
|
"integrity": "sha512-rsmK5bFqsD1AetSFSIa43wtNR4WpvvH4p0tLEsTxkC7QTrfdFm06nbQ95bh8Og4wwaCnUEcm9DVYL2cgxitiQg==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "individual",
|
"type": "individual",
|
||||||
@@ -2118,9 +2122,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lucide-react": {
|
"node_modules/lucide-react": {
|
||||||
"version": "1.32.0",
|
"version": "1.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.32.0.tgz",
|
"resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.33.0.tgz",
|
||||||
"integrity": "sha512-txX56hMFnRxPi1f9/nH69YN8uvAO6a7Y1KSWKjCDAtdD9+soEgmWuCt6iRm1pkxUZo2+YntSdsE1L6bIuKoY8Q==",
|
"integrity": "sha512-MTRwMy0ZlL8Ur/vOAiJ9XGHE+kFPC7brq6MxAm0GiGXEBj0qy0jA/pG4N675oSzciO/UCdX8T+5yUQdmDeTLxg==",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
||||||
@@ -2259,12 +2263,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/react-i18next": {
|
"node_modules/react-i18next": {
|
||||||
"version": "17.0.11",
|
"version": "17.0.12",
|
||||||
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-17.0.11.tgz",
|
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-17.0.12.tgz",
|
||||||
"integrity": "sha512-cDtkXgxjuFTWUH6V+aQn1Ve5vDiUztCNPWW5GtSHDccsgRXO1nE6QFWCEmc1KAutrb3OUv87wFShJL5RhUwPXg==",
|
"integrity": "sha512-lFWPEGkxQ6RhusdUkysFBD58VHfSSzvHBzqMgN0SvfVpdQGfwtNkStTqdy08/sJd7s807qqutgx93fRpD0DJ3Q==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.29.2",
|
"@babel/runtime": "^7.29.7",
|
||||||
"html-parse-stringify": "^4.0.1",
|
"html-parse-stringify": "^4.0.1",
|
||||||
"use-sync-external-store": "^1.6.0"
|
"use-sync-external-store": "^1.6.0"
|
||||||
},
|
},
|
||||||
@@ -2491,15 +2495,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/vite": {
|
"node_modules/vite": {
|
||||||
"version": "8.2.1",
|
"version": "8.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/vite/-/vite-8.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/vite/-/vite-8.2.2.tgz",
|
||||||
"integrity": "sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==",
|
"integrity": "sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lightningcss": "^1.33.0",
|
"lightningcss": "^1.33.0",
|
||||||
"picomatch": "^4.0.5",
|
"picomatch": "^4.0.5",
|
||||||
"postcss": "^8.5.25",
|
"postcss": "^8.5.26",
|
||||||
"rolldown": "~1.2.1",
|
"rolldown": "~1.2.4",
|
||||||
"tinyglobby": "^0.2.17"
|
"tinyglobby": "^0.2.17"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -2516,7 +2520,7 @@
|
|||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@types/node": "^20.19.0 || >=22.12.0",
|
"@types/node": "^20.19.0 || >=22.12.0",
|
||||||
"@vitejs/devtools": "^0.4.0",
|
"@vitejs/devtools": "^0.4.0 || ^0.5.0",
|
||||||
"esbuild": "^0.27.0 || ^0.28.0",
|
"esbuild": "^0.27.0 || ^0.28.0",
|
||||||
"jiti": ">=1.21.0",
|
"jiti": ">=1.21.0",
|
||||||
"less": "^4.0.0",
|
"less": "^4.0.0",
|
||||||
|
|||||||
+5
-5
@@ -59,23 +59,23 @@
|
|||||||
"@tauri-apps/plugin-log": "^2.9.0",
|
"@tauri-apps/plugin-log": "^2.9.0",
|
||||||
"@tauri-apps/plugin-notification": "^2.3.3",
|
"@tauri-apps/plugin-notification": "^2.3.3",
|
||||||
"@tauri-apps/plugin-opener": "^2",
|
"@tauri-apps/plugin-opener": "^2",
|
||||||
"i18next": "^26.3.6",
|
"i18next": "^26.4.0",
|
||||||
"lucide-react": "^1.32.0",
|
"lucide-react": "^1.33.0",
|
||||||
"react": "^19.2.8",
|
"react": "^19.2.8",
|
||||||
"react-dom": "^19.2.8",
|
"react-dom": "^19.2.8",
|
||||||
"react-i18next": "^17.0.11",
|
"react-i18next": "^17.0.12",
|
||||||
"zustand": "^5.0.15"
|
"zustand": "^5.0.15"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tauri-apps/cli": "^2.11.4",
|
"@tauri-apps/cli": "^2.11.4",
|
||||||
"@types/react": "^19.2.18",
|
"@types/react": "^19.2.18",
|
||||||
"@types/react-dom": "^19.2.4",
|
"@types/react-dom": "^19.2.4",
|
||||||
"@vitejs/plugin-react": "^6.0.5",
|
"@vitejs/plugin-react": "^6.1.0",
|
||||||
"autoprefixer": "^10.5.4",
|
"autoprefixer": "^10.5.4",
|
||||||
"postcss": "^8.5.26",
|
"postcss": "^8.5.26",
|
||||||
"tailwindcss": "^4.3.3",
|
"tailwindcss": "^4.3.3",
|
||||||
"typescript": "^7.0.2",
|
"typescript": "^7.0.2",
|
||||||
"vite": "^8.2.1",
|
"vite": "^8.2.2",
|
||||||
"vitest": "^4.1.11"
|
"vitest": "^4.1.11"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,24 @@ function compareVersions(left, right) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseSha256Digest(value) {
|
||||||
|
const match = /^sha256:([0-9a-f]{64})$/i.exec(String(value || ''));
|
||||||
|
return match?.[1].toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
function releaseAssetHashes(release) {
|
||||||
|
return Object.fromEntries(
|
||||||
|
(release?.assets || [])
|
||||||
|
.map(asset => {
|
||||||
|
const digest = parseSha256Digest(asset.digest);
|
||||||
|
return digest && typeof asset.browser_download_url === 'string'
|
||||||
|
? [asset.browser_download_url, digest]
|
||||||
|
: undefined;
|
||||||
|
})
|
||||||
|
.filter(Boolean),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function npmOutdated(cwd) {
|
function npmOutdated(cwd) {
|
||||||
if (!fs.existsSync(path.join(cwd, 'package.json'))) {
|
if (!fs.existsSync(path.join(cwd, 'package.json'))) {
|
||||||
throw new Error(`npm workspace is missing package.json: ${cwd}`);
|
throw new Error(`npm workspace is missing package.json: ${cwd}`);
|
||||||
@@ -155,15 +173,21 @@ async function latestBtbnFfmpegN81Build() {
|
|||||||
target: match[2] === 'win64' ? 'windows' : 'linux',
|
target: match[2] === 'win64' ? 'windows' : 'linux',
|
||||||
version: match[1],
|
version: match[1],
|
||||||
url: asset.browser_download_url,
|
url: asset.browser_download_url,
|
||||||
|
sha256: parseSha256Digest(asset.digest),
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
.filter(Boolean);
|
.filter(Boolean);
|
||||||
const unique = [...new Set(assets.map(asset => asset.version))];
|
const unique = [...new Set(assets.map(asset => asset.version))];
|
||||||
const byTarget = Object.fromEntries(assets.map(asset => [asset.target, asset]));
|
const byTarget = Object.fromEntries(assets.map(asset => [asset.target, asset]));
|
||||||
if (unique.length === 1 && byTarget.windows && byTarget.linux) {
|
if (
|
||||||
|
unique.length === 1 &&
|
||||||
|
byTarget.windows?.sha256 &&
|
||||||
|
byTarget.linux?.sha256
|
||||||
|
) {
|
||||||
return {
|
return {
|
||||||
version: unique[0],
|
version: unique[0],
|
||||||
urls: { windows: byTarget.windows.url, linux: byTarget.linux.url },
|
urls: { windows: byTarget.windows.url, linux: byTarget.linux.url },
|
||||||
|
hashes: { windows: byTarget.windows.sha256, linux: byTarget.linux.sha256 },
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -187,7 +211,7 @@ function sourceEngineVersions(sourceLock) {
|
|||||||
const rows = [];
|
const rows = [];
|
||||||
for (const [target, engines] of Object.entries(sourceLock.targets || {})) {
|
for (const [target, engines] of Object.entries(sourceLock.targets || {})) {
|
||||||
for (const [engine, meta] of Object.entries(engines)) {
|
for (const [engine, meta] of Object.entries(engines)) {
|
||||||
rows.push({ target, engine, version: meta.version, url: meta.url });
|
rows.push({ target, engine, version: meta.version, url: meta.url, sha256: meta.sha256 });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rows;
|
return rows;
|
||||||
@@ -197,7 +221,7 @@ function packagedEngineVersions(engineLock) {
|
|||||||
const rows = [];
|
const rows = [];
|
||||||
for (const [target, targetLock] of Object.entries(engineLock.targets || {})) {
|
for (const [target, targetLock] of Object.entries(engineLock.targets || {})) {
|
||||||
for (const [engine, meta] of Object.entries(targetLock.engines || {})) {
|
for (const [engine, meta] of Object.entries(targetLock.engines || {})) {
|
||||||
rows.push({ target, engine, version: meta.version, url: meta.url });
|
rows.push({ target, engine, version: meta.version, url: meta.url, sha256: meta.sha256 });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rows;
|
return rows;
|
||||||
@@ -216,7 +240,9 @@ function checkRows(
|
|||||||
latestByEngine,
|
latestByEngine,
|
||||||
latestByTargetEngine = {},
|
latestByTargetEngine = {},
|
||||||
latestUrlsByTargetEngine = {},
|
latestUrlsByTargetEngine = {},
|
||||||
targetSpecificEngines = new Set()
|
targetSpecificEngines = new Set(),
|
||||||
|
latestHashesByTargetEngine = {},
|
||||||
|
latestHashesByUrl = {},
|
||||||
) {
|
) {
|
||||||
let outdated = 0;
|
let outdated = 0;
|
||||||
for (const row of rows) {
|
for (const row of rows) {
|
||||||
@@ -233,10 +259,20 @@ function checkRows(
|
|||||||
const latestUrl = latestUrlsByTargetEngine[targetKey];
|
const latestUrl = latestUrlsByTargetEngine[targetKey];
|
||||||
const versionOutdated = compareVersions(current, wanted) < 0;
|
const versionOutdated = compareVersions(current, wanted) < 0;
|
||||||
const sourceOutdated = Boolean(latestUrl && row.url && row.url !== latestUrl);
|
const sourceOutdated = Boolean(latestUrl && row.url && row.url !== latestUrl);
|
||||||
const status = versionOutdated ? 'outdated' : sourceOutdated ? 'source-outdated' : 'current';
|
const latestHash = latestHashesByTargetEngine[targetKey] || latestHashesByUrl[row.url];
|
||||||
|
const currentHash = typeof row.sha256 === 'string' ? row.sha256.toLowerCase() : '';
|
||||||
|
const hashOutdated = Boolean(latestHash && currentHash !== latestHash);
|
||||||
|
const status = versionOutdated
|
||||||
|
? 'outdated'
|
||||||
|
: sourceOutdated
|
||||||
|
? 'source-outdated'
|
||||||
|
: hashOutdated
|
||||||
|
? 'hash-outdated'
|
||||||
|
: 'current';
|
||||||
if (status !== 'current') outdated += 1;
|
if (status !== 'current') outdated += 1;
|
||||||
console.log(` ${row.target} ${row.engine}: ${current} -> ${wanted} ${status}`);
|
console.log(` ${row.target} ${row.engine}: ${current} -> ${wanted} ${status}`);
|
||||||
if (sourceOutdated) console.log(` source: ${row.url} -> ${latestUrl}`);
|
if (sourceOutdated) console.log(` source: ${row.url} -> ${latestUrl}`);
|
||||||
|
if (hashOutdated) console.log(` sha256: ${row.sha256 || 'missing'} -> ${latestHash}`);
|
||||||
}
|
}
|
||||||
return outdated;
|
return outdated;
|
||||||
}
|
}
|
||||||
@@ -284,8 +320,14 @@ async function main() {
|
|||||||
'BtbN FFmpeg Windows/Linux build',
|
'BtbN FFmpeg Windows/Linux build',
|
||||||
async () => {
|
async () => {
|
||||||
const build = await latestBtbnFfmpegN81Build();
|
const build = await latestBtbnFfmpegN81Build();
|
||||||
if (!build?.version || !build.urls?.windows || !build.urls?.linux) {
|
if (
|
||||||
throw new Error('BtbN FFmpeg provider response has no complete Windows/Linux build');
|
!build?.version ||
|
||||||
|
!build.urls?.windows ||
|
||||||
|
!build.urls?.linux ||
|
||||||
|
!build.hashes?.windows ||
|
||||||
|
!build.hashes?.linux
|
||||||
|
) {
|
||||||
|
throw new Error('BtbN FFmpeg provider response has no complete Windows/Linux build with SHA-256 digests');
|
||||||
}
|
}
|
||||||
return build;
|
return build;
|
||||||
},
|
},
|
||||||
@@ -317,11 +359,18 @@ async function main() {
|
|||||||
};
|
};
|
||||||
const latestByTargetEngine = {};
|
const latestByTargetEngine = {};
|
||||||
const latestUrlsByTargetEngine = {};
|
const latestUrlsByTargetEngine = {};
|
||||||
|
const latestHashesByTargetEngine = {};
|
||||||
|
const latestHashesByUrl = {
|
||||||
|
...releaseAssetHashes(ytDlp),
|
||||||
|
...releaseAssetHashes(deno),
|
||||||
|
};
|
||||||
if (btbnFfmpegN81Build?.version && btbnFfmpegN81Build.urls?.windows && btbnFfmpegN81Build.urls?.linux) {
|
if (btbnFfmpegN81Build?.version && btbnFfmpegN81Build.urls?.windows && btbnFfmpegN81Build.urls?.linux) {
|
||||||
latestByTargetEngine['x86_64-pc-windows-msvc:ffmpeg'] = btbnFfmpegN81Build.version;
|
latestByTargetEngine['x86_64-pc-windows-msvc:ffmpeg'] = btbnFfmpegN81Build.version;
|
||||||
latestByTargetEngine['x86_64-unknown-linux-gnu:ffmpeg'] = btbnFfmpegN81Build.version;
|
latestByTargetEngine['x86_64-unknown-linux-gnu:ffmpeg'] = btbnFfmpegN81Build.version;
|
||||||
latestUrlsByTargetEngine['x86_64-pc-windows-msvc:ffmpeg'] = btbnFfmpegN81Build.urls.windows;
|
latestUrlsByTargetEngine['x86_64-pc-windows-msvc:ffmpeg'] = btbnFfmpegN81Build.urls.windows;
|
||||||
latestUrlsByTargetEngine['x86_64-unknown-linux-gnu:ffmpeg'] = btbnFfmpegN81Build.urls.linux;
|
latestUrlsByTargetEngine['x86_64-unknown-linux-gnu:ffmpeg'] = btbnFfmpegN81Build.urls.linux;
|
||||||
|
latestHashesByTargetEngine['x86_64-pc-windows-msvc:ffmpeg'] = btbnFfmpegN81Build.hashes?.windows;
|
||||||
|
latestHashesByTargetEngine['x86_64-unknown-linux-gnu:ffmpeg'] = btbnFfmpegN81Build.hashes?.linux;
|
||||||
}
|
}
|
||||||
if (martinRiedlMacArm64Snapshot?.version && martinRiedlMacArm64Snapshot.url) {
|
if (martinRiedlMacArm64Snapshot?.version && martinRiedlMacArm64Snapshot.url) {
|
||||||
latestByTargetEngine['aarch64-apple-darwin:ffmpeg'] = martinRiedlMacArm64Snapshot.version;
|
latestByTargetEngine['aarch64-apple-darwin:ffmpeg'] = martinRiedlMacArm64Snapshot.version;
|
||||||
@@ -346,7 +395,9 @@ async function main() {
|
|||||||
latestByEngine,
|
latestByEngine,
|
||||||
latestByTargetEngine,
|
latestByTargetEngine,
|
||||||
latestUrlsByTargetEngine,
|
latestUrlsByTargetEngine,
|
||||||
targetSpecificEngines
|
targetSpecificEngines,
|
||||||
|
latestHashesByTargetEngine,
|
||||||
|
latestHashesByUrl,
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error?.code !== 'LATEST_VERSION_UNAVAILABLE') throw error;
|
if (error?.code !== 'LATEST_VERSION_UNAVAILABLE') throw error;
|
||||||
|
|||||||
@@ -65,3 +65,23 @@ test('checkRows does not fall back to the generic release for target-specific en
|
|||||||
/Latest provider version is unavailable for test-target ffmpeg/
|
/Latest provider version is unavailable for test-target ffmpeg/
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('checkRows detects a provider hash change when version and URL are current', () => {
|
||||||
|
const outdated = checkRows(
|
||||||
|
[{
|
||||||
|
target: 'test-target',
|
||||||
|
engine: 'test-engine',
|
||||||
|
version: '1.0.0',
|
||||||
|
url: 'https://example.test/engine',
|
||||||
|
sha256: 'a'.repeat(64),
|
||||||
|
}],
|
||||||
|
{ 'test-engine': '1.0.0' },
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
new Set(),
|
||||||
|
{},
|
||||||
|
{ 'https://example.test/engine': 'b'.repeat(64) },
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.equal(outdated, 1);
|
||||||
|
});
|
||||||
|
|||||||
Generated
+14
-14
@@ -2253,9 +2253,9 @@ checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "icu_provider"
|
name = "icu_provider"
|
||||||
version = "2.3.0"
|
version = "2.3.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "92a7ed671a6aad807a8651a2e1782a6598fda9ce5185dd8158549e95a91c6428"
|
checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"displaydoc",
|
"displaydoc",
|
||||||
"icu_locale_core",
|
"icu_locale_core",
|
||||||
@@ -2581,9 +2581,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "keepawake"
|
name = "keepawake"
|
||||||
version = "0.6.0"
|
version = "0.6.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5521b450ec179362595d5cbda7c3abd5da3af3dff58456434ad3ca33c95226b7"
|
checksum = "0d950f8c457c023d71a2b7fa0a3550e8eb5127811895b666086ff10304911d9a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"derive_builder",
|
"derive_builder",
|
||||||
@@ -3764,18 +3764,18 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ref-cast"
|
name = "ref-cast"
|
||||||
version = "1.0.26"
|
version = "1.0.27"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "216e8f773d7923bcba9ceb86a86c93cabb3903a11872fc3f138c49630e50b96d"
|
checksum = "7e440fb4e4b4147295338efb76001ab9e4efc0e5839df2c47fc5ac2381d365c3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ref-cast-impl",
|
"ref-cast-impl",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ref-cast-impl"
|
name = "ref-cast-impl"
|
||||||
version = "1.0.26"
|
version = "1.0.27"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2c9283685feec7d69af75fb0e858d5e7378f33fe4fc699383b2916ab9273e03c"
|
checksum = "92ecd8964f8453721699a1ed72037b0db49ce2f5a5138486ee89bed6f67cdf3a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -4632,9 +4632,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "swift-rs"
|
name = "swift-rs"
|
||||||
version = "1.0.7"
|
version = "1.0.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7"
|
checksum = "e45c444e496845d3f2a351146bff59aae4975b2280238df1dfaa0c7d1846f38e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.21.7",
|
"base64 0.21.7",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -7112,9 +7112,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zerovec"
|
name = "zerovec"
|
||||||
version = "0.11.7"
|
version = "0.11.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "94b5c6b5976d66c1d703c4fd17d3f5e43c8cedaacf604961b171adc7130896d8"
|
checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"yoke",
|
"yoke",
|
||||||
"zerofrom",
|
"zerofrom",
|
||||||
@@ -7123,9 +7123,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zerovec-derive"
|
name = "zerovec-derive"
|
||||||
version = "0.11.5"
|
version = "0.11.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9f212a141d820099d57ffafb9569be9617a6f27d3dc881fbee8fb56642f917a9"
|
checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@@ -717,35 +717,6 @@ g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
|
|||||||
BSeOE6Fuwg==
|
BSeOE6Fuwg==
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
# Issuer: CN=Atos TrustedRoot 2011 O=Atos
|
|
||||||
# Subject: CN=Atos TrustedRoot 2011 O=Atos
|
|
||||||
# Label: "Atos TrustedRoot 2011"
|
|
||||||
# Serial: 6643877497813316402
|
|
||||||
# MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56
|
|
||||||
# SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21
|
|
||||||
# SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE
|
|
||||||
AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG
|
|
||||||
EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM
|
|
||||||
FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC
|
|
||||||
REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp
|
|
||||||
Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM
|
|
||||||
VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+
|
|
||||||
SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ
|
|
||||||
4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L
|
|
||||||
cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi
|
|
||||||
eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV
|
|
||||||
HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG
|
|
||||||
A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3
|
|
||||||
DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j
|
|
||||||
vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP
|
|
||||||
DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc
|
|
||||||
maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D
|
|
||||||
lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv
|
|
||||||
KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited
|
# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited
|
||||||
# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited
|
# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited
|
||||||
# Label: "QuoVadis Root CA 1 G3"
|
# Label: "QuoVadis Root CA 1 G3"
|
||||||
@@ -3861,3 +3832,128 @@ y7Ve7hekm9sEdu4pKeiv+62sUvTXK9Z3hBC9xdIoaDQCQTV2WnXzkoYI9bIeCvZl
|
|||||||
C9p2x1L/Cx6AcCIwwzPbGO2E14vs7dOoY4G1VnxHx1YwlGhza9IuqbnZLBwpvQy6
|
C9p2x1L/Cx6AcCIwwzPbGO2E14vs7dOoY4G1VnxHx1YwlGhza9IuqbnZLBwpvQy6
|
||||||
uWWL
|
uWWL
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
# Issuer: CN=SECOM TLS RSA Root CA 2024 O=SECOM Trust Systems Co., Ltd.
|
||||||
|
# Subject: CN=SECOM TLS RSA Root CA 2024 O=SECOM Trust Systems Co., Ltd.
|
||||||
|
# Label: "SECOM TLS RSA Root CA 2024"
|
||||||
|
# Serial: 17188327524208271538
|
||||||
|
# MD5 Fingerprint: d0:a4:db:32:eb:44:98:d2:62:0b:3e:bc:4d:7c:5c:e9
|
||||||
|
# SHA1 Fingerprint: fb:97:96:7c:ef:8d:98:63:06:c0:3b:b6:11:f8:e0:13:97:a2:98:d3
|
||||||
|
# SHA256 Fingerprint: 14:35:f2:25:c5:d2:52:d7:a2:19:48:cc:3c:e6:2a:ec:fa:88:00:1e:3d:d7:2d:1c:c3:55:51:00:eb:37:2f:93
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
# Issuer: CN=SECOM TLS ECC Root CA 2024 O=SECOM Trust Systems Co., Ltd.
|
||||||
|
# Subject: CN=SECOM TLS ECC Root CA 2024 O=SECOM Trust Systems Co., Ltd.
|
||||||
|
# Label: "SECOM TLS ECC Root CA 2024"
|
||||||
|
# Serial: 9329818985461676612
|
||||||
|
# MD5 Fingerprint: 99:d3:9d:e4:d2:b1:2d:f0:2a:04:67:85:f3:df:46:d6
|
||||||
|
# SHA1 Fingerprint: 7a:1f:22:2d:72:b2:c3:19:87:44:db:61:69:e8:a6:4b:d7:0d:44:0e
|
||||||
|
# SHA256 Fingerprint: 6a:b2:ab:75:f5:1c:b4:f4:f0:15:62:03:fb:f6:f6:46:23:2f:51:4b:e0:59:f6:28:33:30:8b:82:b4:d7:2d:b1
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICTDCCAdGgAwIBAgIJAIF6LO+PI3pEMAoGCCqGSM49BAMDMFoxCzAJBgNVBAYT
|
||||||
|
AkpQMSYwJAYDVQQKEx1TRUNPTSBUcnVzdCBTeXN0ZW1zIENvLiwgTHRkLjEjMCEG
|
||||||
|
A1UEAxMaU0VDT00gVExTIEVDQyBSb290IENBIDIwMjQwHhcNMjQwMTMxMDU1MjM0
|
||||||
|
WhcNNDkwMTE0MDU1MjM0WjBaMQswCQYDVQQGEwJKUDEmMCQGA1UEChMdU0VDT00g
|
||||||
|
VHJ1c3QgU3lzdGVtcyBDby4sIEx0ZC4xIzAhBgNVBAMTGlNFQ09NIFRMUyBFQ0Mg
|
||||||
|
Um9vdCBDQSAyMDI0MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE7NzFMtu9dzQXSNC1
|
||||||
|
2fabk0+GlC5finB3R7XaZonRUd20aFiWObtuNBCLUZSfk6QXAE55BjEXsXQ/NG8y
|
||||||
|
UqicXjsu9ksDK3JZBgCwLOVh6+nwJXTvso/dEj/GUYH5mBdoo2MwYTAdBgNVHQ4E
|
||||||
|
FgQUO3YReyl04k4GTFaCQNAhL3qzydUwHwYDVR0jBBgwFoAUO3YReyl04k4GTFaC
|
||||||
|
QNAhL3qzydUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZI
|
||||||
|
zj0EAwMDaQAwZgIxAN3ib8fi1pMYtAPjMilB5e5/H+t5CL0xPL+cZ5oTTZuSCjpA
|
||||||
|
n1v7F/VAr8bFxQXAowIxAKsBVO1ACFp7skwzPvdv1EUY5a897WGLT4lb+bjxFAWy
|
||||||
|
l8wDcZJdwGZ/pAHxt1AJ1g==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
# Issuer: CN=Telia EC TLS Root CA v3 O=Telia Company AB
|
||||||
|
# Subject: CN=Telia EC TLS Root CA v3 O=Telia Company AB
|
||||||
|
# Label: "Telia EC TLS Root CA v3"
|
||||||
|
# Serial: 8028200332079443110287896228123317
|
||||||
|
# MD5 Fingerprint: b6:fa:6a:5c:42:fb:c5:67:72:c0:e0:2f:72:fb:5a:44
|
||||||
|
# SHA1 Fingerprint: b4:d6:07:c2:a5:95:bc:5b:f4:67:4d:c9:dc:6f:6f:0a:00:7a:a5:35
|
||||||
|
# SHA256 Fingerprint: 09:8e:08:a9:1d:bb:f7:74:78:b9:6c:ce:b8:9b:14:13:a5:da:37:b7:c8:62:60:6a:95:5d:eb:07:17:9f:43:26
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICMjCCAbegAwIBAgIPAYvSIlRjTQSLbOVHH9K1MAoGCCqGSM49BAMDMEoxCzAJ
|
||||||
|
BgNVBAYTAlNFMRkwFwYDVQQKDBBUZWxpYSBDb21wYW55IEFCMSAwHgYDVQQDDBdU
|
||||||
|
ZWxpYSBFQyBUTFMgUm9vdCBDQSB2MzAeFw0yMzExMTUwODU1MjZaFw00ODA1MjMx
|
||||||
|
MTAwMDBaMEoxCzAJBgNVBAYTAlNFMRkwFwYDVQQKDBBUZWxpYSBDb21wYW55IEFC
|
||||||
|
MSAwHgYDVQQDDBdUZWxpYSBFQyBUTFMgUm9vdCBDQSB2MzB2MBAGByqGSM49AgEG
|
||||||
|
BSuBBAAiA2IABMHIlhVDLbmFKUpW0iK4dpryT6emYOeS31JPwWnWPmkWRrAkTbPX
|
||||||
|
40sQfHI9mpR7Rbktu3ngg6W+BBSXSechtMCnBmWXj/EaVlmV5cY1jD2HoTfhBQ3A
|
||||||
|
acpCNMLJK4NpZaNjMGEwHwYDVR0jBBgwFoAU1GToQ4g6cy/QGnGCNgtehd7H3kMw
|
||||||
|
HQYDVR0OBBYEFNRk6EOIOnMv0BpxgjYLXoXex95DMA4GA1UdDwEB/wQEAwIBBjAP
|
||||||
|
BgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2kAMGYCMQCXAUdS/9bbJ8A1JYaG
|
||||||
|
f/bWt/s7Ta0ot5Ulno8OjSNYRWQIlS4tVWldvTAVA7heOFgCMQCvKr8+Z2Rn+OBr
|
||||||
|
5UHzlgBObpad1LuwNTRcdNgUJxIWadcki+UBLEi1/AURKV5md2M=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
# Issuer: CN=Telia RSA TLS Root CA v3 O=Telia Company AB
|
||||||
|
# Subject: CN=Telia RSA TLS Root CA v3 O=Telia Company AB
|
||||||
|
# Label: "Telia RSA TLS Root CA v3"
|
||||||
|
# Serial: 8028214673410753541795188766939845
|
||||||
|
# MD5 Fingerprint: f4:8b:9c:f3:f8:63:cf:dc:25:8f:b4:bb:a2:e9:9d:e2
|
||||||
|
# SHA1 Fingerprint: b5:2e:88:4e:40:c1:11:fb:50:c7:e2:4f:ac:18:2b:bd:68:15:d2:34
|
||||||
|
# SHA256 Fingerprint: d1:3d:b1:29:4c:45:eb:c6:fc:86:c6:bb:f6:9f:a2:9b:df:e6:92:df:f7:c7:13:c2:43:c7:a9:56:c6:a2:28:4c
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
50LqFQ+A1/Hq6xHHDNx7CI83d23Erw==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,60 +0,0 @@
|
|||||||
../../../bin/curl-cffi,sha256=1WNmf_w0emP0-PeIpDGlHiBy4Gdet6ASfQxBOR-BNMA,187
|
|
||||||
curl_cffi-0.15.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
|
||||||
curl_cffi-0.15.0.dist-info/METADATA,sha256=ryYvNCZOl96BIMI2134ZhyRWy7sr-0-xOc0Q_TfaU9A,18405
|
|
||||||
curl_cffi-0.15.0.dist-info/RECORD,,
|
|
||||||
curl_cffi-0.15.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
||||||
curl_cffi-0.15.0.dist-info/WHEEL,sha256=BX73HzL_Z8VmcUg66xwFel1CJ1goP9ZPbeeVSSFaesY,140
|
|
||||||
curl_cffi-0.15.0.dist-info/direct_url.json,sha256=ORhsskaIg_jwHIDYD7oRH5nzN3fKYa7xVFg-8WceJ5E,313
|
|
||||||
curl_cffi-0.15.0.dist-info/entry_points.txt,sha256=HzTwoUpbiKIo5uJrqnxPk5OdxZ0PhT0dPTSqUP8Js70,49
|
|
||||||
curl_cffi-0.15.0.dist-info/licenses/LICENSE,sha256=PoiwKbULav021rGGQs5Mi27uTJA_HPq-9bgR9h4HBQs,1106
|
|
||||||
curl_cffi-0.15.0.dist-info/top_level.txt,sha256=b51YB50I_vu6XAbSERmqtgaYciYADCA_baVoZ_T5Lzs,10
|
|
||||||
curl_cffi/__init__.py,sha256=fPBkVIThnbk_a7U41V5S3Qwhh1_WxZkMerXQNv1iOpA,1781
|
|
||||||
curl_cffi/__main__.py,sha256=L0AH-xyDlgmsPM-HTecPVb1_hV9X35Qf1Mw7h7JVnx0,39
|
|
||||||
curl_cffi/__pycache__/__init__.cpython-314.pyc,,
|
|
||||||
curl_cffi/__pycache__/__main__.cpython-314.pyc,,
|
|
||||||
curl_cffi/__pycache__/__version__.cpython-314.pyc,,
|
|
||||||
curl_cffi/__pycache__/_asyncio_selector.cpython-314.pyc,,
|
|
||||||
curl_cffi/__pycache__/aio.cpython-314.pyc,,
|
|
||||||
curl_cffi/__pycache__/const.cpython-314.pyc,,
|
|
||||||
curl_cffi/__pycache__/curl.cpython-314.pyc,,
|
|
||||||
curl_cffi/__pycache__/utils.cpython-314.pyc,,
|
|
||||||
curl_cffi/__version__.py,sha256=FdOv9cpHIUGkFkcWA4O9gte0sun1QgJI69rIgzUkswo,413
|
|
||||||
curl_cffi/_asyncio_selector.py,sha256=dxKOC6B8mlRu3WYi0trSq0L-FsWV6l_pg9TP35OpDI4,13043
|
|
||||||
curl_cffi/_wrapper.abi3.so,sha256=4sMTX_Q2WMouO96xfxc3BZjZxnMZnLjZV8nF_FCU_zE,12691712
|
|
||||||
curl_cffi/aio.py,sha256=oTiffUFDNfxxSHmCVAsjX0CIOs4IuBQ6mhm4WuY5KZs,11925
|
|
||||||
curl_cffi/cli/__init__.py,sha256=y-XQAfYkBDN3ejfVex1aKy5bcqsPUglAvm-i177wM5I,7290
|
|
||||||
curl_cffi/cli/__pycache__/__init__.cpython-314.pyc,,
|
|
||||||
curl_cffi/cli/__pycache__/doctor.cpython-314.pyc,,
|
|
||||||
curl_cffi/cli/__pycache__/output.cpython-314.pyc,,
|
|
||||||
curl_cffi/cli/__pycache__/parse.cpython-314.pyc,,
|
|
||||||
curl_cffi/cli/__pycache__/request.cpython-314.pyc,,
|
|
||||||
curl_cffi/cli/__pycache__/run.cpython-314.pyc,,
|
|
||||||
curl_cffi/cli/doctor.py,sha256=4wfyWF44JLxDtoH9YCDdmxrJ-1cWbNwSXcMc9Aopd1c,416
|
|
||||||
curl_cffi/cli/output.py,sha256=YzWbYLJ2zowR6G9mJxeTytcPrnSk2WQVwfmv8V404X4,6709
|
|
||||||
curl_cffi/cli/parse.py,sha256=OzqGEZPqOrH2nq14UKnaXwKAblAw6V867tDEp9XSLdo,2549
|
|
||||||
curl_cffi/cli/request.py,sha256=MJskNMJBIR8oq_fvrPvsi61Wy-bR4-aC8QQJb1YcqRg,3522
|
|
||||||
curl_cffi/cli/run.py,sha256=WYaPbX9h85DZQNkDbUUyvp3bryaAuNOxnjU6GpenigQ,7554
|
|
||||||
curl_cffi/const.py,sha256=mF3H1kHsqj-dfd7GWHMHyuB2bZ3QZd61tC1iCZgEjyo,18523
|
|
||||||
curl_cffi/curl.py,sha256=woBPw1OQk4FH7neNETuj_GwqcQa1jCjd1tA0ZxPSTA8,26928
|
|
||||||
curl_cffi/py.typed,sha256=dcrsqJrcYfTX-ckLFJMTaj6mD8aDe2u0tkQG-ZYxnEg,26
|
|
||||||
curl_cffi/requests/__init__.py,sha256=3ZO7mC7gNJZydze0VQLEYpEc9dMlf1uRbFS-fxKSQPs,6148
|
|
||||||
curl_cffi/requests/__pycache__/__init__.cpython-314.pyc,,
|
|
||||||
curl_cffi/requests/__pycache__/cookies.cpython-314.pyc,,
|
|
||||||
curl_cffi/requests/__pycache__/errors.cpython-314.pyc,,
|
|
||||||
curl_cffi/requests/__pycache__/exceptions.cpython-314.pyc,,
|
|
||||||
curl_cffi/requests/__pycache__/headers.cpython-314.pyc,,
|
|
||||||
curl_cffi/requests/__pycache__/impersonate.cpython-314.pyc,,
|
|
||||||
curl_cffi/requests/__pycache__/models.cpython-314.pyc,,
|
|
||||||
curl_cffi/requests/__pycache__/session.cpython-314.pyc,,
|
|
||||||
curl_cffi/requests/__pycache__/utils.cpython-314.pyc,,
|
|
||||||
curl_cffi/requests/__pycache__/websockets.cpython-314.pyc,,
|
|
||||||
curl_cffi/requests/cookies.py,sha256=QDEuhtsSjh6iNAKmp5TnGyyAe8wdDJCADCHY_GWCeCc,11867
|
|
||||||
curl_cffi/requests/errors.py,sha256=R6N5lmOTdRukThkNGUihDAQRu8HSh27M8E3zfUJJX74,250
|
|
||||||
curl_cffi/requests/exceptions.py,sha256=ViyLx3XHii_s7kjrO3GhVOVXhq2_UsYfAQl8MPwDnEM,6187
|
|
||||||
curl_cffi/requests/headers.py,sha256=Q1jrRdJ2YMLOcl5W3WBaKZAdLbPGPPERJ6MYzos3YXk,11535
|
|
||||||
curl_cffi/requests/impersonate.py,sha256=dKRpbPTqLCABrCmSKmgXyhA1zmrv0DMuSuqQyhn5-FU,13389
|
|
||||||
curl_cffi/requests/models.py,sha256=SaN9QUYyljUDFDQnUrYZRl9KiUe25nb2c2ca-dfq3Nw,11487
|
|
||||||
curl_cffi/requests/session.py,sha256=LkfPvAr8BIVzB_K91xwh0wIPRW26mi2VJd1cEYorIho,58871
|
|
||||||
curl_cffi/requests/utils.py,sha256=zMKaWoXcAPFNBv6FglE3FSAPNuxYr_leUcWKnhfYecw,26618
|
|
||||||
curl_cffi/requests/websockets.py,sha256=RJVNqCDrlLWzQ12Ym9M5_T0SW4EmoqKUYsXXTaQmBRQ,71685
|
|
||||||
curl_cffi/utils.py,sha256=gRVzO-vhjf596V6kr_SjwHlwJfDIwTrPbRLJvvNlUNE,307
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"archive_info": {"hash": "sha256=630653d283070b21deca8ee408dcdc98ac4202d80cc9d038db805d45e0b40550", "hashes": {"sha256": "630653d283070b21deca8ee408dcdc98ac4202d80cc9d038db805d45e0b40550"}}, "url": "file:///Users/runner/work/yt-dlp/yt-dlp/build/universal2/curl_cffi-0.15.0-cp310-abi3-macosx_10_9_universal2.whl"}
|
|
||||||
+54
-53
@@ -1,6 +1,6 @@
|
|||||||
Metadata-Version: 2.4
|
Metadata-Version: 2.4
|
||||||
Name: curl_cffi
|
Name: curl_cffi
|
||||||
Version: 0.15.0
|
Version: 0.16.0
|
||||||
Summary: libcurl ffi bindings for Python, with impersonation support.
|
Summary: libcurl ffi bindings for Python, with impersonation support.
|
||||||
Author-email: lexiforest <infinitesheldon@gmail.com>
|
Author-email: lexiforest <infinitesheldon@gmail.com>
|
||||||
License-Expression: MIT
|
License-Expression: MIT
|
||||||
@@ -19,11 +19,12 @@ Description-Content-Type: text/markdown
|
|||||||
License-File: LICENSE
|
License-File: LICENSE
|
||||||
Requires-Dist: cffi>=2.0.0
|
Requires-Dist: cffi>=2.0.0
|
||||||
Requires-Dist: certifi>=2024.2.2
|
Requires-Dist: certifi>=2024.2.2
|
||||||
Requires-Dist: rich
|
|
||||||
Provides-Extra: extra
|
Provides-Extra: extra
|
||||||
Requires-Dist: readability-lxml>=0.8.1; extra == "extra"
|
Requires-Dist: readability-lxml>=0.8.1; extra == "extra"
|
||||||
Requires-Dist: markdownify>=1.1.0; extra == "extra"
|
Requires-Dist: markdownify>=1.1.0; extra == "extra"
|
||||||
Requires-Dist: lxml_html_clean; extra == "extra"
|
Requires-Dist: lxml_html_clean; extra == "extra"
|
||||||
|
Provides-Extra: cli
|
||||||
|
Requires-Dist: rich; extra == "cli"
|
||||||
Provides-Extra: dev
|
Provides-Extra: dev
|
||||||
Requires-Dist: charset_normalizer<4.0,>=3.3.2; extra == "dev"
|
Requires-Dist: charset_normalizer<4.0,>=3.3.2; extra == "dev"
|
||||||
Requires-Dist: coverage<7.0,>=6.4.1; extra == "dev"
|
Requires-Dist: coverage<7.0,>=6.4.1; extra == "dev"
|
||||||
@@ -90,12 +91,6 @@ Python 3.10 is the minimum supported version since v0.14.
|
|||||||
|
|
||||||
If you’re looking for a meeting recording API, consider checking out [Recall.ai](https://www.recall.ai/?utm_source=github&utm_medium=sponsorship&utm_campaign=lexiforest-curl_cffi), an API that records Zoom, Google Meet, Microsoft Teams, in-person meetings, and more.
|
If you’re looking for a meeting recording API, consider checking out [Recall.ai](https://www.recall.ai/?utm_source=github&utm_medium=sponsorship&utm_campaign=lexiforest-curl_cffi), an API that records Zoom, Google Meet, Microsoft Teams, in-person meetings, and more.
|
||||||
|
|
||||||
## Residential Proxies
|
|
||||||
|
|
||||||
<a href="https://www.thordata.com/?ls=github&lk=curl_" target="_blank"><img src="https://raw.githubusercontent.com/lexiforest/curl_cffi/main/assets/thordata.png" alt="Thordata" height="126" width="240"></a>
|
|
||||||
|
|
||||||
Thordata: A reliable and cost-effective proxy service provider. One-click collection of public network data, providing enterprises and developers with stable, efficient, and compliant global proxy IP services. Register for a free trial of [residential proxies](https://www.thordata.com/?ls=github&lk=curl_) and receive 2000 free SERP API calls.
|
|
||||||
|
|
||||||
## Sponsors
|
## Sponsors
|
||||||
|
|
||||||
Maintenance of this project is made possible by all the <a href="https://github.com/lexiforest/curl_cffi/graphs/contributors">contributors</a> and <a href="https://github.com/sponsors/lexiforest">sponsors</a>. If you'd like to sponsor this project and have your avatar or company logo appear below <a href="https://github.com/sponsors/lexiforest">click here</a>. 💖
|
Maintenance of this project is made possible by all the <a href="https://github.com/lexiforest/curl_cffi/graphs/contributors">contributors</a> and <a href="https://github.com/sponsors/lexiforest">sponsors</a>. If you'd like to sponsor this project and have your avatar or company logo appear below <a href="https://github.com/sponsors/lexiforest">click here</a>. 💖
|
||||||
@@ -124,6 +119,15 @@ No browser automation. Just simple API calls that return the exact cookies and h
|
|||||||
|
|
||||||
------
|
------
|
||||||
|
|
||||||
|
## Impersonate Suite
|
||||||
|
|
||||||
|
`curl-cffi` is part of the impersonate suite.
|
||||||
|
|
||||||
|
- [curl-impersonate](https://github.com/lexiforest/curl-impersonate). A curl distribution that impersonates browsers.
|
||||||
|
- [curl_cffi](https://github.com/lexiforest/curl_cffi). Python binding to curl-impersonate.
|
||||||
|
- [impers](https://github.com/lexiforest/impers). Node.js binding to curl-impersonate.
|
||||||
|
- [impersonate.pro](https://impersonate.pro). Commercial support, more fingerprints and integrated solutions.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Supports JA3/TLS and http2 fingerprints impersonation, including recent browsers and custom fingerprints.
|
- Supports JA3/TLS and http2 fingerprints impersonation, including recent browsers and custom fingerprints.
|
||||||
@@ -163,25 +167,28 @@ replacement for "claws" and "agents".
|
|||||||
|http/2|✅|❌|✅|
|
|http/2|✅|❌|✅|
|
||||||
|http/3|☑️<sup>1</sup>|❌|✅|
|
|http/3|☑️<sup>1</sup>|❌|✅|
|
||||||
|human-friendly|☑️<sup>2</sup>|✅|✅|
|
|human-friendly|☑️<sup>2</sup>|✅|✅|
|
||||||
|colorful|❌|✅|✅|
|
|colorful|❌|✅|✅<sup>3</sup>|
|
||||||
|fingerprints|❌|❌|✅|
|
|fingerprints|❌|❌|✅|
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
|
|
||||||
1. You need an http/3 enabled curl build, it's not enabled by default, at leat on my machine.
|
1. You need an http/3 enabled curl build, it's not enabled by default, at leat on my machine.
|
||||||
2. As a long time command line user, I personally feel very comfortable using `curl -X POST httpbin.org`, but some users may prefer `http GET httpbin.org` syntax. If you prefer the curl syntax, you can keep using `curl-impersonate`.
|
2. As a long time command line user, I personally feel very comfortable using `curl -X POST httpbin.org`, but some users may prefer `http GET httpbin.org` syntax. If you prefer the curl syntax, you can keep using `curl-impersonate`.
|
||||||
|
3. Install `curl_cffi[cli]` for colorful CLI output. Without `rich`, the CLI uses plain text output.
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
pip install curl_cffi --upgrade
|
pip install curl_cffi --upgrade
|
||||||
|
|
||||||
This should work on Linux, macOS and Windows out of the box.
|
This should work on Linux, macOS and Windows out of the box.
|
||||||
If it does not work on you platform, you may need to compile and install `curl-impersonate`
|
|
||||||
first and set some environment variables like `LD_LIBRARY_PATH`.
|
|
||||||
|
|
||||||
Android support, including Termux, is currently in beta, you can install the beta release for testing.
|
On macOS, you can also install via Homebrew:
|
||||||
|
|
||||||
|
brew install lexiforest/tap/curl-cffi
|
||||||
|
|
||||||
|
<small>Android support, including Termux, is currently in beta, you can install the beta release for testing.
|
||||||
For BSD systems, we need to get libcurl-impersonate compile first, and then add support in curl_cffi.
|
For BSD systems, we need to get libcurl-impersonate compile first, and then add support in curl_cffi.
|
||||||
If you are using these OSes, please lend an hand.
|
If you are using these OSes, please lend an hand.</small>
|
||||||
|
|
||||||
To install beta releases:
|
To install beta releases:
|
||||||
|
|
||||||
@@ -235,11 +242,6 @@ r = curl_cffi.get(
|
|||||||
impersonate="chrome"
|
impersonate="chrome"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Randomly choose a browser version based on current market share in real world
|
|
||||||
# from: https://caniuse.com/usage-table
|
|
||||||
# NOTE: this is a pro feature.
|
|
||||||
r = curl_cffi.get("https://example.com", impersonate="realworld")
|
|
||||||
|
|
||||||
# To pin a specific version, use version numbers together.
|
# To pin a specific version, use version numbers together.
|
||||||
r = curl_cffi.get("https://tls.browserleaks.com/json", impersonate="chrome124")
|
r = curl_cffi.get("https://tls.browserleaks.com/json", impersonate="chrome124")
|
||||||
|
|
||||||
@@ -273,45 +275,42 @@ print(r.json())
|
|||||||
|
|
||||||
### Supported impersonate browsers
|
### Supported impersonate browsers
|
||||||
|
|
||||||
`curl_cffi` supports the same browser versions as supported by my [fork](https://github.com/lexiforest/curl-impersonate) of [curl-impersonate](https://github.com/lwthiker/curl-impersonate):
|
`curl_cffi` supports the same browser versions preset as supported by our [fork](https://github.com/lexiforest/curl-impersonate) of [curl-impersonate](https://github.com/lwthiker/curl-impersonate):
|
||||||
|
|
||||||
Open source version of curl_cffi includes versions whose fingerprints differ from previous versions.
|
The open source version of `curl_cffi` includes versions when we are adding new capabilities for impersonating.
|
||||||
If you see a version, e.g. `chrome135`, were skipped, you can simply impersonate it with your own headers and the previous version.
|
If you see a version, e.g. `chrome135`, was skipped, it's simply because there's nothing new or we were busy at that time.
|
||||||
|
You can simply impersonate it with your own headers and the previous browser target.
|
||||||
|
|
||||||
If you don't want to look up the headers etc, by yourself, consider buying commercial support from [impersonate.pro](https://impersonate.pro),
|
For a full list of preset fingerprints, see the [curl-impersonate docs](https://curl-impersonate.readthedocs.io/en/latest/fingerprints.html).
|
||||||
we have comprehensive browser fingerprints database for almost all the browser versions on various platforms.
|
We will no longer put duplicated and outdated info here.
|
||||||
|
|
||||||
If you are trying to impersonate a target other than a browser, use `ja3=...` and `akamai=...`
|
If you don't want to look up the headers/etc by yourself, consider buying commercial support from [impersonate.pro](https://impersonate.pro).
|
||||||
|
We have comprehensive browser tls, http and JavaScript fingerprints database for almost all the browser versions on various platforms.
|
||||||
|
|
||||||
|
Since v0.15.1, you can use `curl-cffi update` to retrieve the latest fingerprints, without updating to a new version.
|
||||||
|
We offer the Safari, Chrome, Firefox updates for free and others as part of the [commercial plan](https://impersonate.pro).
|
||||||
|
|
||||||
|
The current number of fingerprints:
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
To see the current list of fingerprints on your device, use the command line:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl-cffi list
|
||||||
|
```
|
||||||
|
|
||||||
|
To update fingerprints from impersonate.pro, use the command line:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl-cffi update
|
||||||
|
```
|
||||||
|
|
||||||
|
If you are trying to impersonate a target other than a browser, use `ja3=...`, `akamai=...`, `extra_fp=...`, and `perk=...`
|
||||||
to specify your own customized fingerprints. See the [docs on impersonation](https://curl-cffi.readthedocs.io/en/latest/impersonate/_index.html) for details.
|
to specify your own customized fingerprints. See the [docs on impersonation](https://curl-cffi.readthedocs.io/en/latest/impersonate/_index.html) for details.
|
||||||
|
|
||||||
|Browser|Open Source| Pro version|
|
|
||||||
|---|---|---|
|
|
||||||
|Chrome|chrome99, chrome100, chrome101, chrome104, chrome107, chrome110, chrome116<sup>[1]</sup>, chrome119<sup>[1]</sup>, chrome120<sup>[1]</sup>, chrome123<sup>[3]</sup>, chrome124<sup>[3]</sup>, chrome131<sup>[4]</sup>, chrome133a<sup>[5][6]</sup>, chrome136<sup>[6]</sup>, chrome142, chrome145<sup>[9]</sup>, chrome146<sup>[9]</sup>|chrome132, chrome134, chrome135|
|
|
||||||
|Chrome Android| chrome99_android, chrome131_android <sup>[4]</sup>|chrome132_android, chrome133_android, chrome134_android, chrome135_android|
|
|
||||||
|Chrome iOS|N/A|coming soon|
|
|
||||||
|Safari <sup>[7]</sup>|safari153 <sup>[2]</sup>, safari155 <sup>[2]</sup>, safari170 <sup>[1]</sup>, safari180 <sup>[4]</sup>, safari184 <sup>[6]</sup>, safari260 <sup>[8]</sup>|coming soon|
|
|
||||||
|Safari iOS <sup>[7]</sup>| safari172_ios<sup>[1]</sup>, safari180_ios<sup>[4]</sup>, safari184_ios <sup>[6]</sup>, safari260_ios <sup>[8]</sup>|coming soon|
|
|
||||||
|Firefox|firefox133<sup>[5]</sup>, firefox135<sup>[7]</sup>, firefox144, firefox147<sup>[9]</sup>|coming soon|
|
|
||||||
|Firefox Android|N/A|firefox135_android|
|
|
||||||
|Tor|tor145 <sup>[7]</sup>|coming soon|
|
|
||||||
|Edge|edge99, edge101|edge133, edge135|
|
|
||||||
|Opera|N/A|coming soon|
|
|
||||||
|Brave|N/A|coming soon|
|
|
||||||
|
|
||||||
|
|
||||||
Notes:
|
|
||||||
|
|
||||||
1. Added in version `0.6.0`.
|
|
||||||
2. Fixed in version `0.6.0`, previous http2 fingerprints were [not correct](https://github.com/lwthiker/curl-impersonate/issues/215).
|
|
||||||
3. Added in version `0.7.0`.
|
|
||||||
4. Added in version `0.8.0`.
|
|
||||||
5. Added in version `0.9.0`.
|
|
||||||
6. The version postfix `-a`(e.g. `chrome133a`) means that this is an alternative version, i.e. the fingerprint has not been officially updated by browser, but has been observed because of A/B testing.
|
|
||||||
5. Added in version `0.10.0`.
|
|
||||||
6. Added in version `0.11.0`.
|
|
||||||
7. Since `0.11.0`, the format `safari184_ios` is preferred over `safari18_4_ios`, both are supported, but the latter is quite confusing and hard to parse.
|
|
||||||
8. Added in `0.12.0`.
|
|
||||||
9. http3 support included.
|
|
||||||
|
|
||||||
### Asyncio
|
### Asyncio
|
||||||
|
|
||||||
@@ -370,11 +369,13 @@ async with AsyncSession() as session:
|
|||||||
print(message)
|
print(message)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
See the WebSocket [docs](https://curl-cffi.readthedocs.io/en/latest/websockets.html) for full details and advanced options.
|
||||||
|
|
||||||
## Ecosystem
|
## Ecosystem
|
||||||
|
|
||||||
- Integrating with Scrapy: [divtiply/scrapy-curl-cffi](https://github.com/divtiply/scrapy-curl-cffi), [jxlil/scrapy-impersonate](https://github.com/jxlil/scrapy-impersonate) and [tieyongjie/scrapy-fingerprint](https://github.com/tieyongjie/scrapy-fingerprint).
|
- Integrating with Scrapy: [divtiply/scrapy-curl-cffi](https://github.com/divtiply/scrapy-curl-cffi), [jxlil/scrapy-impersonate](https://github.com/jxlil/scrapy-impersonate) and [tieyongjie/scrapy-fingerprint](https://github.com/tieyongjie/scrapy-fingerprint).
|
||||||
- Integrating with [requests](https://github.com/el1s7/curl-adapter), [httpx](https://github.com/vgavro/httpx-curl-cffi) as adapter.
|
- Integrating with [requests](https://github.com/el1s7/curl-adapter), [httpx](https://github.com/vgavro/httpx-curl-cffi) as adapter.
|
||||||
- Integrating with captcha resolvers: [YesCaptcha](https://yescaptcha.atlassian.net/wiki/spaces/YESCAPTCHA/overview). Please see the head area for promo code and link.
|
- Integrating with captcha resolvers: [YesCaptcha](https://yescaptcha.com/i/stfnIO).
|
||||||
|
|
||||||
## Acknowledgement
|
## Acknowledgement
|
||||||
|
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
../../../bin/curl-cffi,sha256=1WNmf_w0emP0-PeIpDGlHiBy4Gdet6ASfQxBOR-BNMA,187
|
||||||
|
curl_cffi-0.16.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
curl_cffi-0.16.0.dist-info/METADATA,sha256=2xKv2aRl-HtOcwKKcucrZQ-F51XFo7VpRXQtYLJ0F-c,17463
|
||||||
|
curl_cffi-0.16.0.dist-info/RECORD,,
|
||||||
|
curl_cffi-0.16.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
curl_cffi-0.16.0.dist-info/WHEEL,sha256=mLbZYCWBc4fJzW1y2K2PE77e-mZLwFI4W61tEVJsa_c,140
|
||||||
|
curl_cffi-0.16.0.dist-info/direct_url.json,sha256=foVsUM-Bj-Y-YxcNjF92n-aYB3GyM3Vsbf5rTFvl84g,313
|
||||||
|
curl_cffi-0.16.0.dist-info/entry_points.txt,sha256=HzTwoUpbiKIo5uJrqnxPk5OdxZ0PhT0dPTSqUP8Js70,49
|
||||||
|
curl_cffi-0.16.0.dist-info/licenses/LICENSE,sha256=PoiwKbULav021rGGQs5Mi27uTJA_HPq-9bgR9h4HBQs,1106
|
||||||
|
curl_cffi-0.16.0.dist-info/top_level.txt,sha256=b51YB50I_vu6XAbSERmqtgaYciYADCA_baVoZ_T5Lzs,10
|
||||||
|
curl_cffi/__init__.py,sha256=6YJwgd_t8GbuHk2mqe7PWNqmkYVTjhX9gCVxzTIyYdc,1986
|
||||||
|
curl_cffi/__main__.py,sha256=L0AH-xyDlgmsPM-HTecPVb1_hV9X35Qf1Mw7h7JVnx0,39
|
||||||
|
curl_cffi/__pycache__/__init__.cpython-314.pyc,,
|
||||||
|
curl_cffi/__pycache__/__main__.cpython-314.pyc,,
|
||||||
|
curl_cffi/__pycache__/__version__.cpython-314.pyc,,
|
||||||
|
curl_cffi/__pycache__/_asyncio_selector.cpython-314.pyc,,
|
||||||
|
curl_cffi/__pycache__/aio.cpython-314.pyc,,
|
||||||
|
curl_cffi/__pycache__/const.cpython-314.pyc,,
|
||||||
|
curl_cffi/__pycache__/curl.cpython-314.pyc,,
|
||||||
|
curl_cffi/__pycache__/fingerprints.cpython-314.pyc,,
|
||||||
|
curl_cffi/__pycache__/utils.cpython-314.pyc,,
|
||||||
|
curl_cffi/__version__.py,sha256=FdOv9cpHIUGkFkcWA4O9gte0sun1QgJI69rIgzUkswo,413
|
||||||
|
curl_cffi/_asyncio_selector.py,sha256=dxKOC6B8mlRu3WYi0trSq0L-FsWV6l_pg9TP35OpDI4,13043
|
||||||
|
curl_cffi/_wrapper.abi3.so,sha256=SGLe3OukfFgEvCILm0yzeoQ2emxeRX0pgLKMjJGQ88M,13622944
|
||||||
|
curl_cffi/aio.py,sha256=BxbiWI2ugesL6sHfKk_34A25hzTWAy4mf2G4kRKq29Q,12123
|
||||||
|
curl_cffi/cli/__init__.py,sha256=6is7D4E46XsOYGYUnfey9maSG4DrARwEk3I4kJv1d-8,7852
|
||||||
|
curl_cffi/cli/__pycache__/__init__.cpython-314.pyc,,
|
||||||
|
curl_cffi/cli/__pycache__/doctor.cpython-314.pyc,,
|
||||||
|
curl_cffi/cli/__pycache__/output.cpython-314.pyc,,
|
||||||
|
curl_cffi/cli/__pycache__/parse.cpython-314.pyc,,
|
||||||
|
curl_cffi/cli/__pycache__/pro.cpython-314.pyc,,
|
||||||
|
curl_cffi/cli/__pycache__/request.cpython-314.pyc,,
|
||||||
|
curl_cffi/cli/__pycache__/run.cpython-314.pyc,,
|
||||||
|
curl_cffi/cli/doctor.py,sha256=XduqJ51u99yOZ2njyAIIppTSqZJnd_Z8KnsGOXUkip8,1341
|
||||||
|
curl_cffi/cli/output.py,sha256=IGBa2cN4jdSe7EScutghBXe9mcHcj59RsfIzzPLpx-s,7434
|
||||||
|
curl_cffi/cli/parse.py,sha256=OzqGEZPqOrH2nq14UKnaXwKAblAw6V867tDEp9XSLdo,2549
|
||||||
|
curl_cffi/cli/pro.py,sha256=pu2lnZUD91T0oayJMgPs6w6eLYKM6ZFlhHLE-g75UaM,3575
|
||||||
|
curl_cffi/cli/request.py,sha256=ixFJEhHoymZFukc4dqw_AgNuR7fEtSkd3RZaHZdxOnk,3571
|
||||||
|
curl_cffi/cli/run.py,sha256=zrxDpPfZPmeY3ADhjR2It2wj3hsOpqaxh88pe11-VMU,7616
|
||||||
|
curl_cffi/const.py,sha256=gzF7UzT41jfTF7-GGkKAEhG0CIXmeIZtbNAMEZobuig,19101
|
||||||
|
curl_cffi/curl.py,sha256=GmEF9TW0nYZ8PEcvc-Jsn_7vbymJlqGgmV0P5kzgMoY,30648
|
||||||
|
curl_cffi/fingerprints.py,sha256=WB25rx-f_ZYdZiEMWF_egnJb8wACZrIncAqu1sHRJf8,20666
|
||||||
|
curl_cffi/py.typed,sha256=dcrsqJrcYfTX-ckLFJMTaj6mD8aDe2u0tkQG-ZYxnEg,26
|
||||||
|
curl_cffi/requests/__init__.py,sha256=jt8mwSVLOmFgTUOQoxrXEj-qpst8cJbLdVQXVq-U6rw,6449
|
||||||
|
curl_cffi/requests/__pycache__/__init__.cpython-314.pyc,,
|
||||||
|
curl_cffi/requests/__pycache__/cache.cpython-314.pyc,,
|
||||||
|
curl_cffi/requests/__pycache__/cookies.cpython-314.pyc,,
|
||||||
|
curl_cffi/requests/__pycache__/errors.cpython-314.pyc,,
|
||||||
|
curl_cffi/requests/__pycache__/exceptions.cpython-314.pyc,,
|
||||||
|
curl_cffi/requests/__pycache__/headers.cpython-314.pyc,,
|
||||||
|
curl_cffi/requests/__pycache__/impersonate.cpython-314.pyc,,
|
||||||
|
curl_cffi/requests/__pycache__/models.cpython-314.pyc,,
|
||||||
|
curl_cffi/requests/__pycache__/session.cpython-314.pyc,,
|
||||||
|
curl_cffi/requests/__pycache__/streams.cpython-314.pyc,,
|
||||||
|
curl_cffi/requests/__pycache__/utils.cpython-314.pyc,,
|
||||||
|
curl_cffi/requests/__pycache__/websockets.cpython-314.pyc,,
|
||||||
|
curl_cffi/requests/cache.py,sha256=sMZB7BA66Ain2VUZ7qWNN-3Fmd2TiPNaxzCybHgnLxY,15629
|
||||||
|
curl_cffi/requests/cookies.py,sha256=75TLz2wTcIz7NnETCpVVZUk8lvo02y_WFzwOa7A3aZE,13525
|
||||||
|
curl_cffi/requests/errors.py,sha256=R6N5lmOTdRukThkNGUihDAQRu8HSh27M8E3zfUJJX74,250
|
||||||
|
curl_cffi/requests/exceptions.py,sha256=WM3EAhADLPf_Kh4nzZOtJplTw9Nwv-vCIyeXx7FVT9g,6225
|
||||||
|
curl_cffi/requests/headers.py,sha256=Q1jrRdJ2YMLOcl5W3WBaKZAdLbPGPPERJ6MYzos3YXk,11535
|
||||||
|
curl_cffi/requests/impersonate.py,sha256=MIIBJxlk86nPxFyhfseyEuvY17BZTNYMafKNgGf2eXc,11188
|
||||||
|
curl_cffi/requests/models.py,sha256=iz5k97OLrOthxAswA9abNQxiWDSQ4lWJrujUAZAMaIo,13173
|
||||||
|
curl_cffi/requests/session.py,sha256=Mi7Wduep5maFi8p7KBsxTUfa6KB5ArLz5wWGn4j6cXE,66489
|
||||||
|
curl_cffi/requests/streams.py,sha256=un9rtp5GL-U5A5ivyFIDcfXwxk6MMVrO2CGCbzDdpso,7090
|
||||||
|
curl_cffi/requests/utils.py,sha256=z2Ee4gBmfUxdv_SOTQrdUtb0uUKaDAxk4kgrcVLqB3Y,37762
|
||||||
|
curl_cffi/requests/websockets.py,sha256=Hn2Z6Jqf5SKJ-qyQyisr9Iu4vVHQYr-iT9ws_7jPHDI,72783
|
||||||
|
curl_cffi/utils.py,sha256=xiwsOd-5W3IGNvO6yeDboOkw9wLPD2hx_SYD9i4SqVU,390
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
Wheel-Version: 1.0
|
Wheel-Version: 1.0
|
||||||
Generator: setuptools (82.0.1)
|
Generator: setuptools (83.0.0)
|
||||||
Root-Is-Purelib: false
|
Root-Is-Purelib: false
|
||||||
Generator: delocate 0.13.0
|
Generator: delocate 0.13.0
|
||||||
Tag: cp310-abi3-macosx_10_9_universal2
|
Tag: cp310-abi3-macosx_10_9_universal2
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"archive_info": {"hash": "sha256=66b0c44d84b669c513c4798475b5702c2dbd2f061f708bff0b2ee4c9c9563e02", "hashes": {"sha256": "66b0c44d84b669c513c4798475b5702c2dbd2f061f708bff0b2ee4c9c9563e02"}}, "url": "file:///Users/runner/work/yt-dlp/yt-dlp/build/universal2/curl_cffi-0.16.0-cp310-abi3-macosx_10_9_universal2.whl"}
|
||||||
Binary file not shown.
Binary file not shown.
-1
@@ -1 +0,0 @@
|
|||||||
uv
|
|
||||||
-133
@@ -1,133 +0,0 @@
|
|||||||
Metadata-Version: 2.4
|
|
||||||
Name: importlib_metadata
|
|
||||||
Version: 8.7.1
|
|
||||||
Summary: Read metadata from Python packages
|
|
||||||
Author-email: "Jason R. Coombs" <jaraco@jaraco.com>
|
|
||||||
License-Expression: Apache-2.0
|
|
||||||
Project-URL: Source, https://github.com/python/importlib_metadata
|
|
||||||
Classifier: Development Status :: 5 - Production/Stable
|
|
||||||
Classifier: Intended Audience :: Developers
|
|
||||||
Classifier: Programming Language :: Python :: 3
|
|
||||||
Classifier: Programming Language :: Python :: 3 :: Only
|
|
||||||
Requires-Python: >=3.9
|
|
||||||
Description-Content-Type: text/x-rst
|
|
||||||
License-File: LICENSE
|
|
||||||
Requires-Dist: zipp>=3.20
|
|
||||||
Provides-Extra: test
|
|
||||||
Requires-Dist: pytest!=8.1.*,>=6; extra == "test"
|
|
||||||
Requires-Dist: packaging; extra == "test"
|
|
||||||
Requires-Dist: pyfakefs; extra == "test"
|
|
||||||
Requires-Dist: flufl.flake8; extra == "test"
|
|
||||||
Requires-Dist: pytest-perf>=0.9.2; extra == "test"
|
|
||||||
Requires-Dist: jaraco.test>=5.4; extra == "test"
|
|
||||||
Provides-Extra: doc
|
|
||||||
Requires-Dist: sphinx>=3.5; extra == "doc"
|
|
||||||
Requires-Dist: jaraco.packaging>=9.3; extra == "doc"
|
|
||||||
Requires-Dist: rst.linker>=1.9; extra == "doc"
|
|
||||||
Requires-Dist: furo; extra == "doc"
|
|
||||||
Requires-Dist: sphinx-lint; extra == "doc"
|
|
||||||
Requires-Dist: jaraco.tidelift>=1.4; extra == "doc"
|
|
||||||
Provides-Extra: perf
|
|
||||||
Requires-Dist: ipython; extra == "perf"
|
|
||||||
Provides-Extra: check
|
|
||||||
Requires-Dist: pytest-checkdocs>=2.4; extra == "check"
|
|
||||||
Requires-Dist: pytest-ruff>=0.2.1; sys_platform != "cygwin" and extra == "check"
|
|
||||||
Provides-Extra: cover
|
|
||||||
Requires-Dist: pytest-cov; extra == "cover"
|
|
||||||
Provides-Extra: enabler
|
|
||||||
Requires-Dist: pytest-enabler>=3.4; extra == "enabler"
|
|
||||||
Provides-Extra: type
|
|
||||||
Requires-Dist: pytest-mypy>=1.0.1; extra == "type"
|
|
||||||
Requires-Dist: mypy<1.19; platform_python_implementation == "PyPy" and extra == "type"
|
|
||||||
Dynamic: license-file
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/pypi/v/importlib_metadata.svg
|
|
||||||
:target: https://pypi.org/project/importlib_metadata
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/pypi/pyversions/importlib_metadata.svg
|
|
||||||
|
|
||||||
.. image:: https://github.com/python/importlib_metadata/actions/workflows/main.yml/badge.svg
|
|
||||||
:target: https://github.com/python/importlib_metadata/actions?query=workflow%3A%22tests%22
|
|
||||||
:alt: tests
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
|
|
||||||
:target: https://github.com/astral-sh/ruff
|
|
||||||
:alt: Ruff
|
|
||||||
|
|
||||||
.. image:: https://readthedocs.org/projects/importlib-metadata/badge/?version=latest
|
|
||||||
:target: https://importlib-metadata.readthedocs.io/en/latest/?badge=latest
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/badge/skeleton-2025-informational
|
|
||||||
:target: https://blog.jaraco.com/skeleton
|
|
||||||
|
|
||||||
.. image:: https://tidelift.com/badges/package/pypi/importlib-metadata
|
|
||||||
:target: https://tidelift.com/subscription/pkg/pypi-importlib-metadata?utm_source=pypi-importlib-metadata&utm_medium=readme
|
|
||||||
|
|
||||||
Library to access the metadata for a Python package.
|
|
||||||
|
|
||||||
This package supplies third-party access to the functionality of
|
|
||||||
`importlib.metadata <https://docs.python.org/3/library/importlib.metadata.html>`_
|
|
||||||
including improvements added to subsequent Python versions.
|
|
||||||
|
|
||||||
|
|
||||||
Compatibility
|
|
||||||
=============
|
|
||||||
|
|
||||||
New features are introduced in this third-party library and later merged
|
|
||||||
into CPython. The following table indicates which versions of this library
|
|
||||||
were contributed to different versions in the standard library:
|
|
||||||
|
|
||||||
.. list-table::
|
|
||||||
:header-rows: 1
|
|
||||||
|
|
||||||
* - importlib_metadata
|
|
||||||
- stdlib
|
|
||||||
* - 7.0
|
|
||||||
- 3.13
|
|
||||||
* - 6.5
|
|
||||||
- 3.12
|
|
||||||
* - 4.13
|
|
||||||
- 3.11
|
|
||||||
* - 4.6
|
|
||||||
- 3.10
|
|
||||||
* - 1.4
|
|
||||||
- 3.8
|
|
||||||
|
|
||||||
|
|
||||||
Usage
|
|
||||||
=====
|
|
||||||
|
|
||||||
See the `online documentation <https://importlib-metadata.readthedocs.io/>`_
|
|
||||||
for usage details.
|
|
||||||
|
|
||||||
`Finder authors
|
|
||||||
<https://docs.python.org/3/reference/import.html#finders-and-loaders>`_ can
|
|
||||||
also add support for custom package installers. See the above documentation
|
|
||||||
for details.
|
|
||||||
|
|
||||||
|
|
||||||
Caveats
|
|
||||||
=======
|
|
||||||
|
|
||||||
This project primarily supports third-party packages installed by PyPA
|
|
||||||
tools (or other conforming packages). It does not support:
|
|
||||||
|
|
||||||
- Packages in the stdlib.
|
|
||||||
- Packages installed without metadata.
|
|
||||||
|
|
||||||
Project details
|
|
||||||
===============
|
|
||||||
|
|
||||||
* Project home: https://github.com/python/importlib_metadata
|
|
||||||
* Report bugs at: https://github.com/python/importlib_metadata/issues
|
|
||||||
* Code hosting: https://github.com/python/importlib_metadata
|
|
||||||
* Documentation: https://importlib-metadata.readthedocs.io/
|
|
||||||
|
|
||||||
For Enterprise
|
|
||||||
==============
|
|
||||||
|
|
||||||
Available as part of the Tidelift Subscription.
|
|
||||||
|
|
||||||
This project and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use.
|
|
||||||
|
|
||||||
`Learn more <https://tidelift.com/subscription/pkg/pypi-importlib-metadata?utm_source=pypi-importlib-metadata&utm_medium=referral&utm_campaign=github>`_.
|
|
||||||
-21
@@ -1,21 +0,0 @@
|
|||||||
importlib_metadata-8.7.1.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
|
|
||||||
importlib_metadata-8.7.1.dist-info/METADATA,sha256=o-OLnuQyYonUhkcE8w4pnudp4jCc6fSnXw3hpQrQo1Y,4670
|
|
||||||
importlib_metadata-8.7.1.dist-info/RECORD,,
|
|
||||||
importlib_metadata-8.7.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
||||||
importlib_metadata-8.7.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
||||||
importlib_metadata-8.7.1.dist-info/licenses/LICENSE,sha256=RYUC4S2Xu_ZEOGBqIARKqF6wX7CoqAe7NdvsJT_R_AQ,10278
|
|
||||||
importlib_metadata-8.7.1.dist-info/top_level.txt,sha256=CO3fD9yylANiXkrMo4qHLV_mqXL2sC5JFKgt1yWAT-A,19
|
|
||||||
importlib_metadata/__init__.py,sha256=u7Ew4-UkpzNY-ka6k-WRkDhQZS1akkLMfWs2eEnUmGo,37734
|
|
||||||
importlib_metadata/_adapters.py,sha256=r5i8XLrKT6xmrpoREZhZrfczOYDmrVZeJBW5u0HzIGU,3797
|
|
||||||
importlib_metadata/_collections.py,sha256=CxAhzlF3g1rwu_fMiB53JtRQiUFh0RgiMpoOvmK_ocg,760
|
|
||||||
importlib_metadata/_compat.py,sha256=VC5ZDLlT-BcshauCShdFJvMNLntJJfZzNK1meGa-enw,1313
|
|
||||||
importlib_metadata/_functools.py,sha256=0pA2OoiVK6wnsGq8HvVIzgdkvLiZ0nfnfw7IsndjoHk,3510
|
|
||||||
importlib_metadata/_itertools.py,sha256=nMvp9SfHAQ_JYwK4L2i64lr3GRXGlYlikGTVzWbys_E,5351
|
|
||||||
importlib_metadata/_meta.py,sha256=EtHyiJ5kGzWFDfKyQ2XQp6Vu113CeadKW1Vf6aGc1B4,1765
|
|
||||||
importlib_metadata/_text.py,sha256=HCsFksZpJLeTP3NEk_ngrAeXVRRtTrtyh9eOABoRP4A,2166
|
|
||||||
importlib_metadata/_typing.py,sha256=EQKhhsEgz_Sa-FnePI-faC72rNOOQwopjA1i5pG8FDU,367
|
|
||||||
importlib_metadata/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
||||||
importlib_metadata/compat/py311.py,sha256=uqm-K-uohyj1042TH4a9Er_I5o7667DvulcD-gC_fSA,608
|
|
||||||
importlib_metadata/compat/py39.py,sha256=J3W7PUVRPNYMmcvT12RF8ndBU9e8_T0Ac4U87Bsrq70,1187
|
|
||||||
importlib_metadata/diagnose.py,sha256=nkSRMiowlmkhLYhKhvCg9glmt_11Cox-EmLzEbqYTa8,379
|
|
||||||
importlib_metadata/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
||||||
-5
@@ -1,5 +0,0 @@
|
|||||||
Wheel-Version: 1.0
|
|
||||||
Generator: setuptools (80.9.0)
|
|
||||||
Root-Is-Purelib: true
|
|
||||||
Tag: py3-none-any
|
|
||||||
|
|
||||||
-73
@@ -1,73 +0,0 @@
|
|||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright 2025 [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
importlib_metadata
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
||||||
Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque. Aliquam faucibus, elit ut dictum aliquet, felis nisl adipiscing sapien, sed malesuada diam lacus eget erat. Cras mollis scelerisque nunc. Nullam arcu. Aliquam consequat. Curabitur augue lorem, dapibus quis, laoreet et, pretium ac, nisi. Aenean magna nisl, mollis quis, molestie eu, feugiat in, orci. In hac habitasse platea dictumst.
|
|
||||||
@@ -1,110 +0,0 @@
|
|||||||
../../../bin/websockets,sha256=Aec6LJ-SgqOC29VvGIAfJo3DbDp5-znjkFZaF7aEUTM,188
|
|
||||||
websockets-16.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
|
||||||
websockets-16.0.dist-info/METADATA,sha256=JcDvWo8DVSw5uoDAFbk9N8fJXuRJvnrcLXVBFyBjwN8,6799
|
|
||||||
websockets-16.0.dist-info/RECORD,,
|
|
||||||
websockets-16.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
||||||
websockets-16.0.dist-info/WHEEL,sha256=MzHA8aA11K4m-mjpjTobbWUqTlhv5RdoytLBFWQb_k4,142
|
|
||||||
websockets-16.0.dist-info/direct_url.json,sha256=CKQvi9piWBTuZxzuK4J8f71FvL_6alBevkUUKBa4QCg,310
|
|
||||||
websockets-16.0.dist-info/entry_points.txt,sha256=Dnhn4dm5EsI4ZMAsHldGF6CwBXZrGXnR7cnK2-XR7zY,51
|
|
||||||
websockets-16.0.dist-info/licenses/LICENSE,sha256=PWoMBQ2L7FL6utUC5F-yW9ArytvXDeo01Ee2oP9Obag,1514
|
|
||||||
websockets-16.0.dist-info/top_level.txt,sha256=CMpdKklxKsvZgCgyltxUWOHibZXZ1uYIVpca9xsQ8Hk,11
|
|
||||||
websockets/__init__.py,sha256=AC2Hq92uSc_WOo9_xvITpGshJ7Dy0Md5m2_ywsdSt_Y,7058
|
|
||||||
websockets/__main__.py,sha256=wu5N2wk8mvBgyvr2ghmQf4prezAe0_i-p123VVreyYc,62
|
|
||||||
websockets/__pycache__/__init__.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/__main__.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/auth.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/cli.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/client.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/connection.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/datastructures.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/exceptions.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/frames.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/headers.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/http.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/http11.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/imports.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/protocol.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/proxy.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/server.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/streams.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/typing.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/uri.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/utils.cpython-314.pyc,,
|
|
||||||
websockets/__pycache__/version.cpython-314.pyc,,
|
|
||||||
websockets/asyncio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
||||||
websockets/asyncio/__pycache__/__init__.cpython-314.pyc,,
|
|
||||||
websockets/asyncio/__pycache__/async_timeout.cpython-314.pyc,,
|
|
||||||
websockets/asyncio/__pycache__/client.cpython-314.pyc,,
|
|
||||||
websockets/asyncio/__pycache__/compatibility.cpython-314.pyc,,
|
|
||||||
websockets/asyncio/__pycache__/connection.cpython-314.pyc,,
|
|
||||||
websockets/asyncio/__pycache__/messages.cpython-314.pyc,,
|
|
||||||
websockets/asyncio/__pycache__/router.cpython-314.pyc,,
|
|
||||||
websockets/asyncio/__pycache__/server.cpython-314.pyc,,
|
|
||||||
websockets/asyncio/async_timeout.py,sha256=N-6Mubyiaoh66PAXGvCzhgxCM-7V2XiRnH32Xi6J6TE,8971
|
|
||||||
websockets/asyncio/client.py,sha256=e4xlgtzb3v29M2vN-UDiyoUtThg--d5GqKg3lt2pDdE,30850
|
|
||||||
websockets/asyncio/compatibility.py,sha256=gkenDDhzNbm6_iXV5Edvbvp6uHZYdrTvGNjt8P_JtyQ,786
|
|
||||||
websockets/asyncio/connection.py,sha256=87RdVURijJk8V-ShWAWfTEyhW5Z1YUXKV8ezUzxt5L0,49099
|
|
||||||
websockets/asyncio/messages.py,sha256=u2M5WKY9xPyw8G3nKoXfdO5K41hrTnf4MdizVHzgdM4,11129
|
|
||||||
websockets/asyncio/router.py,sha256=S-69vszK-SqUCcZbXXPOnux-eH2fTHYC2JNh7tOtmmA,7520
|
|
||||||
websockets/asyncio/server.py,sha256=wQ9oBc0WBOIzbXKDYJ8UhXRTeoXrSfLu6CWCrUl-vck,37941
|
|
||||||
websockets/auth.py,sha256=U_Jwmn59ZRQ6EecpOvMizQCG_ZbAvgUf1ik7haZRC3c,568
|
|
||||||
websockets/cli.py,sha256=YnegH59z93JxSVIGiXiWhR3ktgI6k1_pf_BRLanxKrQ,5336
|
|
||||||
websockets/client.py,sha256=fljI5k5oQ-Sfm53MCoyTlr2jFtOOIuO13H9bbtpBPes,13789
|
|
||||||
websockets/connection.py,sha256=OLiMVkNd25_86sB8Q7CrCwBoXy9nA0OCgdgLRA8WUR8,323
|
|
||||||
websockets/datastructures.py,sha256=Uq2CpjmXak9_pPWcOqh36rzJMo8eCi2lVPTFWDvK5sA,5518
|
|
||||||
websockets/exceptions.py,sha256=bgaMdqQGGZosAEULeCB30XW2YnwomWa3c8YOrEfeOoY,12859
|
|
||||||
websockets/extensions/__init__.py,sha256=QkZsxaJVllVSp1uhdD5uPGibdbx_091GrVVfS5LXcpw,98
|
|
||||||
websockets/extensions/__pycache__/__init__.cpython-314.pyc,,
|
|
||||||
websockets/extensions/__pycache__/base.cpython-314.pyc,,
|
|
||||||
websockets/extensions/__pycache__/permessage_deflate.cpython-314.pyc,,
|
|
||||||
websockets/extensions/base.py,sha256=JNfyk543C7VuPH0QOobiqKoGrzjJILje6sz5ILvOPl4,2903
|
|
||||||
websockets/extensions/permessage_deflate.py,sha256=AkuhkAKFo5lqJQMXnckbSs9b2KBBrOFsE1DHIcbLL3k,25770
|
|
||||||
websockets/frames.py,sha256=5IK4GZpl8ukr0bZ_UA_jjjztK09yYQAl9m5NVmGLiK0,12889
|
|
||||||
websockets/headers.py,sha256=yQnPljVZwV1_V-pOSRKNLG_u827wFC1h72cciojcQ8M,16046
|
|
||||||
websockets/http.py,sha256=T1tNLmbkFCneXQ6qepBmsVVDXyP9i500IVzTJTeBMR4,659
|
|
||||||
websockets/http11.py,sha256=T8ai5BcBGkV0n9It63oDeNpmtQMyg8Cpav5rf_yT0r4,15619
|
|
||||||
websockets/imports.py,sha256=T_B9TUmHoceKMQ-PNphdQQAH2XdxAxwSQNeQEgqILkE,2795
|
|
||||||
websockets/legacy/__init__.py,sha256=wQ5zRIENGUS_5eKNAX9CRE7x1TwKapKimrQFFWN9Sxs,276
|
|
||||||
websockets/legacy/__pycache__/__init__.cpython-314.pyc,,
|
|
||||||
websockets/legacy/__pycache__/auth.cpython-314.pyc,,
|
|
||||||
websockets/legacy/__pycache__/client.cpython-314.pyc,,
|
|
||||||
websockets/legacy/__pycache__/exceptions.cpython-314.pyc,,
|
|
||||||
websockets/legacy/__pycache__/framing.cpython-314.pyc,,
|
|
||||||
websockets/legacy/__pycache__/handshake.cpython-314.pyc,,
|
|
||||||
websockets/legacy/__pycache__/http.cpython-314.pyc,,
|
|
||||||
websockets/legacy/__pycache__/protocol.cpython-314.pyc,,
|
|
||||||
websockets/legacy/__pycache__/server.cpython-314.pyc,,
|
|
||||||
websockets/legacy/auth.py,sha256=DcQcCSeVeP93JcH8vFWE0HIJL-X-f23LZ0DsJpav1So,6531
|
|
||||||
websockets/legacy/client.py,sha256=fV2mbiU9rciXhJfAEKVSm0GztJDUbDpRQ-K5EMbkuQ0,26815
|
|
||||||
websockets/legacy/exceptions.py,sha256=ViEjpoT09fzx_Zqf0aNGDVtRDNjXaOw0gdCta3LkjFc,1924
|
|
||||||
websockets/legacy/framing.py,sha256=r9P1wiXv_1XuAVQw8SOPkuE9d4eZ0r_JowAkz9-WV4w,6366
|
|
||||||
websockets/legacy/handshake.py,sha256=2Nzr5AN2xvDC5EdNP-kB3lOcrAaUNlYuj_-hr_jv7pM,5285
|
|
||||||
websockets/legacy/http.py,sha256=cOCQmDWhIKQmm8UWGXPW7CDZg03wjogCsb0LP9oetNQ,7061
|
|
||||||
websockets/legacy/protocol.py,sha256=ajtVXDb-lEm9BN0NF3iEaTI_b1q5fBCKTB9wvUoGOxY,63632
|
|
||||||
websockets/legacy/server.py,sha256=7mwY-yD0ljNF93oPYumTWD7OIVbCWtaEOw1FFJBhIAM,45251
|
|
||||||
websockets/protocol.py,sha256=vTqjPIg2HmO-bSxsczuEmWMxPTxPXU1hmVUjqnahV44,27247
|
|
||||||
websockets/proxy.py,sha256=oFrbEYtasYWv-WDcniObD9nBR5Q5qkHpyCVLngx7WMQ,4969
|
|
||||||
websockets/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
||||||
websockets/server.py,sha256=E4SWBA8WZRmAOpsUm-oCqacBGZre9e0iDmDIrfpV21Q,21790
|
|
||||||
websockets/speedups.c,sha256=u_dncR4M38EX6He_fzb1TY6D3Hke67ZpoHLLhZZ0hvQ,5920
|
|
||||||
websockets/speedups.cpython-314-darwin.so,sha256=G3h5TQnbLQ1QpRmDTLznIO5RkWVjFwHMJFy_2-5zXwM,84144
|
|
||||||
websockets/speedups.pyi,sha256=unjvBNg-uW4c7z-9OW4WiSzZk_QH2bLEcjYAMuoSgBI,102
|
|
||||||
websockets/streams.py,sha256=pXqga7ttjuF6lChWYiWLSfUlt3FCaQpEX1ae_jvcCeQ,4071
|
|
||||||
websockets/sync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
||||||
websockets/sync/__pycache__/__init__.cpython-314.pyc,,
|
|
||||||
websockets/sync/__pycache__/client.cpython-314.pyc,,
|
|
||||||
websockets/sync/__pycache__/connection.cpython-314.pyc,,
|
|
||||||
websockets/sync/__pycache__/messages.cpython-314.pyc,,
|
|
||||||
websockets/sync/__pycache__/router.cpython-314.pyc,,
|
|
||||||
websockets/sync/__pycache__/server.cpython-314.pyc,,
|
|
||||||
websockets/sync/__pycache__/utils.cpython-314.pyc,,
|
|
||||||
websockets/sync/client.py,sha256=_2Erytw1f3f9O_u2jLtS1oNV4HsHUi_h3lGvT9ZEaDQ,22108
|
|
||||||
websockets/sync/connection.py,sha256=1pJYEMRHLWIN7538vJcIeFVnvSXVrD0n1xrfX7wDNSc,41868
|
|
||||||
websockets/sync/messages.py,sha256=yZV1zhY07ZD0vRF5b1yDa7ug0rbA5UDOCCCQmWwAcds,12858
|
|
||||||
websockets/sync/router.py,sha256=BqKSAKNZYtRWiOxol9qYeyfgyXRrMNJ6FrTTZLNcXMg,7172
|
|
||||||
websockets/sync/server.py,sha256=s07HNK_2s1kLN62Uqc77uvND0z7C0YTXGePsCiBtXaE,27655
|
|
||||||
websockets/sync/utils.py,sha256=TtW-ncYFvJmiSW2gO86ngE2BVsnnBdL-4H88kWNDYbg,1107
|
|
||||||
websockets/typing.py,sha256=A6xh4m65pRzKAbuOs0kFuGhL4DWIIko-ppS4wvJVc0Q,1946
|
|
||||||
websockets/uri.py,sha256=2fFMw-AbKJ5HVHNCuw1Rx1MnkCkNWRpogxWhhM30EU4,3125
|
|
||||||
websockets/utils.py,sha256=AwhS4UmlbKv7meAaR7WNbUqD5JFoStOP1bAyo9sRMus,1197
|
|
||||||
websockets/version.py,sha256=IhaztWxysdY-pd-0nOubnnPduvySSvdoBwrQdJKtZ2g,3202
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"archive_info": {"hash": "sha256=8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0", "hashes": {"sha256": "8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0"}}, "url": "file:///Users/runner/work/yt-dlp/yt-dlp/build/wheels/websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl"}
|
|
||||||
+8
-17
@@ -1,6 +1,6 @@
|
|||||||
Metadata-Version: 2.4
|
Metadata-Version: 2.4
|
||||||
Name: websockets
|
Name: websockets
|
||||||
Version: 16.0
|
Version: 17.0.1
|
||||||
Summary: An implementation of the WebSocket Protocol (RFC 6455 & 7692)
|
Summary: An implementation of the WebSocket Protocol (RFC 6455 & 7692)
|
||||||
Author-email: Aymeric Augustin <aymeric.augustin@m4x.org>
|
Author-email: Aymeric Augustin <aymeric.augustin@m4x.org>
|
||||||
License-Expression: BSD-3-Clause
|
License-Expression: BSD-3-Clause
|
||||||
@@ -16,12 +16,12 @@ Classifier: Intended Audience :: Developers
|
|||||||
Classifier: Operating System :: OS Independent
|
Classifier: Operating System :: OS Independent
|
||||||
Classifier: Programming Language :: Python
|
Classifier: Programming Language :: Python
|
||||||
Classifier: Programming Language :: Python :: 3
|
Classifier: Programming Language :: Python :: 3
|
||||||
Classifier: Programming Language :: Python :: 3.10
|
|
||||||
Classifier: Programming Language :: Python :: 3.11
|
Classifier: Programming Language :: Python :: 3.11
|
||||||
Classifier: Programming Language :: Python :: 3.12
|
Classifier: Programming Language :: Python :: 3.12
|
||||||
Classifier: Programming Language :: Python :: 3.13
|
Classifier: Programming Language :: Python :: 3.13
|
||||||
Classifier: Programming Language :: Python :: 3.14
|
Classifier: Programming Language :: Python :: 3.14
|
||||||
Requires-Python: >=3.10
|
Classifier: Programming Language :: Python :: 3.15
|
||||||
|
Requires-Python: >=3.11
|
||||||
Description-Content-Type: text/x-rst
|
Description-Content-Type: text/x-rst
|
||||||
License-File: LICENSE
|
License-File: LICENSE
|
||||||
Dynamic: description
|
Dynamic: description
|
||||||
@@ -32,7 +32,7 @@ Dynamic: license-file
|
|||||||
:width: 480px
|
:width: 480px
|
||||||
:alt: websockets
|
:alt: websockets
|
||||||
|
|
||||||
|licence| |version| |pyversions| |tests| |docs| |openssf|
|
|licence| |version| |pyversions|
|
||||||
|
|
||||||
.. |licence| image:: https://img.shields.io/pypi/l/websockets.svg
|
.. |licence| image:: https://img.shields.io/pypi/l/websockets.svg
|
||||||
:target: https://pypi.python.org/pypi/websockets
|
:target: https://pypi.python.org/pypi/websockets
|
||||||
@@ -43,15 +43,6 @@ Dynamic: license-file
|
|||||||
.. |pyversions| image:: https://img.shields.io/pypi/pyversions/websockets.svg
|
.. |pyversions| image:: https://img.shields.io/pypi/pyversions/websockets.svg
|
||||||
:target: https://pypi.python.org/pypi/websockets
|
:target: https://pypi.python.org/pypi/websockets
|
||||||
|
|
||||||
.. |tests| image:: https://img.shields.io/github/checks-status/python-websockets/websockets/main?label=tests
|
|
||||||
:target: https://github.com/python-websockets/websockets/actions/workflows/tests.yml
|
|
||||||
|
|
||||||
.. |docs| image:: https://img.shields.io/readthedocs/websockets.svg
|
|
||||||
:target: https://websockets.readthedocs.io/
|
|
||||||
|
|
||||||
.. |openssf| image:: https://bestpractices.coreinfrastructure.org/projects/6475/badge
|
|
||||||
:target: https://bestpractices.coreinfrastructure.org/projects/6475
|
|
||||||
|
|
||||||
What is ``websockets``?
|
What is ``websockets``?
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
@@ -63,8 +54,8 @@ with a focus on correctness, simplicity, robustness, and performance.
|
|||||||
Built on top of ``asyncio``, Python's standard asynchronous I/O framework, the
|
Built on top of ``asyncio``, Python's standard asynchronous I/O framework, the
|
||||||
default implementation provides an elegant coroutine-based API.
|
default implementation provides an elegant coroutine-based API.
|
||||||
|
|
||||||
An implementation on top of ``threading`` and a Sans-I/O implementation are also
|
Implementations on top of ``threading`` and ``trio`` are also provided, as well
|
||||||
available.
|
as a Sans-I/O layer for integration in third-party projects.
|
||||||
|
|
||||||
`Documentation is available on Read the Docs. <https://websockets.readthedocs.io/>`_
|
`Documentation is available on Read the Docs. <https://websockets.readthedocs.io/>`_
|
||||||
|
|
||||||
@@ -84,8 +75,8 @@ Here's an echo server with the ``asyncio`` API:
|
|||||||
await websocket.send(message)
|
await websocket.send(message)
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
async with serve(echo, "localhost", 8765) as server:
|
server = await serve(echo, "localhost", 8765)
|
||||||
await server.serve_forever()
|
await server.serve_forever()
|
||||||
|
|
||||||
asyncio.run(main())
|
asyncio.run(main())
|
||||||
|
|
||||||
@@ -0,0 +1,118 @@
|
|||||||
|
../../../bin/websockets,sha256=Aec6LJ-SgqOC29VvGIAfJo3DbDp5-znjkFZaF7aEUTM,188
|
||||||
|
websockets-17.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
websockets-17.0.1.dist-info/METADATA,sha256=Z_btpoffz0ubiHVmim0rYjFMxNdOn_LhaVusK8CZCIA,6342
|
||||||
|
websockets-17.0.1.dist-info/RECORD,,
|
||||||
|
websockets-17.0.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
websockets-17.0.1.dist-info/WHEEL,sha256=dgBSXaLX3dDB-DVpHT16BsaK8hj0ZwMOLjJBjWhNK_4,142
|
||||||
|
websockets-17.0.1.dist-info/direct_url.json,sha256=tKRa4U_R4U5WX4GMQa3dJ7UPcGjl5stIKOYKaN-F0pw,312
|
||||||
|
websockets-17.0.1.dist-info/entry_points.txt,sha256=Dnhn4dm5EsI4ZMAsHldGF6CwBXZrGXnR7cnK2-XR7zY,51
|
||||||
|
websockets-17.0.1.dist-info/licenses/LICENSE,sha256=PWoMBQ2L7FL6utUC5F-yW9ArytvXDeo01Ee2oP9Obag,1514
|
||||||
|
websockets-17.0.1.dist-info/top_level.txt,sha256=CMpdKklxKsvZgCgyltxUWOHibZXZ1uYIVpca9xsQ8Hk,11
|
||||||
|
websockets/__init__.py,sha256=zmBCJj7EIa6ZJEQDp4dIdznfzAJUA8dW41-j7Em-QDQ,7450
|
||||||
|
websockets/__main__.py,sha256=wu5N2wk8mvBgyvr2ghmQf4prezAe0_i-p123VVreyYc,62
|
||||||
|
websockets/__pycache__/__init__.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/__main__.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/auth.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/cli.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/client.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/connection.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/datastructures.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/exceptions.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/frames.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/headers.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/http11.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/imports.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/protocol.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/proxy.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/server.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/streams.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/typing.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/uri.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/utils.cpython-314.pyc,,
|
||||||
|
websockets/__pycache__/version.cpython-314.pyc,,
|
||||||
|
websockets/asyncio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
websockets/asyncio/__pycache__/__init__.cpython-314.pyc,,
|
||||||
|
websockets/asyncio/__pycache__/client.cpython-314.pyc,,
|
||||||
|
websockets/asyncio/__pycache__/connection.cpython-314.pyc,,
|
||||||
|
websockets/asyncio/__pycache__/messages.cpython-314.pyc,,
|
||||||
|
websockets/asyncio/__pycache__/router.cpython-314.pyc,,
|
||||||
|
websockets/asyncio/__pycache__/server.cpython-314.pyc,,
|
||||||
|
websockets/asyncio/client.py,sha256=oAvlgEjRXixmIrttbQZ4AgiA8oetA8EjxmM_36bqoVE,32062
|
||||||
|
websockets/asyncio/connection.py,sha256=V3L-PrXG8jZ_6IytI-9ftA-JOlmKXlnI9oCS1gWxsIM,49596
|
||||||
|
websockets/asyncio/messages.py,sha256=vBPd93IuL3LE0OSxeaICIjzvyoht53kmh-_Zho-bGzU,11096
|
||||||
|
websockets/asyncio/router.py,sha256=gUdYn2dc--kT-kNEFOa_qwo_d5vaX34WyoRNuPOSVrU,7743
|
||||||
|
websockets/asyncio/server.py,sha256=6Xop-Re8SqhKsBUEtrpc89etFuQiWPPyc9gz7Acrhmo,34111
|
||||||
|
websockets/auth.py,sha256=U_Jwmn59ZRQ6EecpOvMizQCG_ZbAvgUf1ik7haZRC3c,568
|
||||||
|
websockets/cli.py,sha256=fYf0YqrWIx_iJDA-RWdczh5vjO9p6ZxZvmE761bUQg0,6892
|
||||||
|
websockets/client.py,sha256=Dp4j89uLnzXsItZasDs8hV045YfRpX6fYJVuhmuEDA0,14050
|
||||||
|
websockets/connection.py,sha256=OLiMVkNd25_86sB8Q7CrCwBoXy9nA0OCgdgLRA8WUR8,323
|
||||||
|
websockets/datastructures.py,sha256=XGTvvgFdZSevNV_T6-Lo-Dxm2VHxJcgKl4l1DNQ6fU8,7238
|
||||||
|
websockets/exceptions.py,sha256=tp0_EyqQfd7CYNOHmxAieOH8Ed9PSQFt18e-CuReTOY,14308
|
||||||
|
websockets/extensions/__init__.py,sha256=QkZsxaJVllVSp1uhdD5uPGibdbx_091GrVVfS5LXcpw,98
|
||||||
|
websockets/extensions/__pycache__/__init__.cpython-314.pyc,,
|
||||||
|
websockets/extensions/__pycache__/base.cpython-314.pyc,,
|
||||||
|
websockets/extensions/__pycache__/permessage_deflate.cpython-314.pyc,,
|
||||||
|
websockets/extensions/base.py,sha256=JNfyk543C7VuPH0QOobiqKoGrzjJILje6sz5ILvOPl4,2903
|
||||||
|
websockets/extensions/permessage_deflate.py,sha256=IAXdCGY60zfdjatKd6fDfTMizOeQYsnh0zBtL9vPuzA,25840
|
||||||
|
websockets/frames.py,sha256=Twiqn_buvQiblERugcT-MDmnPZ7kt-FMXESe2DhOT9o,16709
|
||||||
|
websockets/headers.py,sha256=yQnPljVZwV1_V-pOSRKNLG_u827wFC1h72cciojcQ8M,16046
|
||||||
|
websockets/http11.py,sha256=tLVuNvNADwt8d1ui5KMFKZCZMTtJ6CqXZveogLaPbf0,18245
|
||||||
|
websockets/imports.py,sha256=T_B9TUmHoceKMQ-PNphdQQAH2XdxAxwSQNeQEgqILkE,2795
|
||||||
|
websockets/legacy/__init__.py,sha256=wQ5zRIENGUS_5eKNAX9CRE7x1TwKapKimrQFFWN9Sxs,276
|
||||||
|
websockets/legacy/__pycache__/__init__.cpython-314.pyc,,
|
||||||
|
websockets/legacy/__pycache__/auth.cpython-314.pyc,,
|
||||||
|
websockets/legacy/__pycache__/client.cpython-314.pyc,,
|
||||||
|
websockets/legacy/__pycache__/exceptions.cpython-314.pyc,,
|
||||||
|
websockets/legacy/__pycache__/framing.cpython-314.pyc,,
|
||||||
|
websockets/legacy/__pycache__/handshake.cpython-314.pyc,,
|
||||||
|
websockets/legacy/__pycache__/http.cpython-314.pyc,,
|
||||||
|
websockets/legacy/__pycache__/protocol.cpython-314.pyc,,
|
||||||
|
websockets/legacy/__pycache__/server.cpython-314.pyc,,
|
||||||
|
websockets/legacy/auth.py,sha256=DcQcCSeVeP93JcH8vFWE0HIJL-X-f23LZ0DsJpav1So,6531
|
||||||
|
websockets/legacy/client.py,sha256=5oJurUczPddXi8Rde5fA2hD3V4pnv__Z64pRRXP6HBs,27226
|
||||||
|
websockets/legacy/exceptions.py,sha256=ViEjpoT09fzx_Zqf0aNGDVtRDNjXaOw0gdCta3LkjFc,1924
|
||||||
|
websockets/legacy/framing.py,sha256=b0wMx83XTIXVZoO60pl3AibKHbQlDb7rBAyhFEkaMCk,6374
|
||||||
|
websockets/legacy/handshake.py,sha256=2Nzr5AN2xvDC5EdNP-kB3lOcrAaUNlYuj_-hr_jv7pM,5285
|
||||||
|
websockets/legacy/http.py,sha256=cOCQmDWhIKQmm8UWGXPW7CDZg03wjogCsb0LP9oetNQ,7061
|
||||||
|
websockets/legacy/protocol.py,sha256=1WUIzDHBew-NZ1ewhmct_WT0ycdTxT4HDdg-Im71z4Y,63456
|
||||||
|
websockets/legacy/server.py,sha256=hSk4nFTsI3eMRbu5JcI4gXei9Ubw07RSrSjtL4eM2gc,44835
|
||||||
|
websockets/protocol.py,sha256=3HuCBMLTJMxp9JHd5JMBqtTF84SsY29iuHH0yznuD_Q,27204
|
||||||
|
websockets/proxy.py,sha256=oFrbEYtasYWv-WDcniObD9nBR5Q5qkHpyCVLngx7WMQ,4969
|
||||||
|
websockets/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
websockets/server.py,sha256=7kEJL1QEFO8pTB90wP4fUbkzYGDcbkTa7jTvdiSZtQk,24679
|
||||||
|
websockets/speedups.c,sha256=u_dncR4M38EX6He_fzb1TY6D3Hke67ZpoHLLhZZ0hvQ,5920
|
||||||
|
websockets/speedups.cpython-314-darwin.so,sha256=pJidRkiyZA-9quLsUEgjRjs8b8bpobn1FV25pvq38KM,84144
|
||||||
|
websockets/speedups.pyi,sha256=unjvBNg-uW4c7z-9OW4WiSzZk_QH2bLEcjYAMuoSgBI,102
|
||||||
|
websockets/streams.py,sha256=rJrDNSL9hy3EJYc1PFHjYx4rdd1vELCua0CwdFiHN_8,4610
|
||||||
|
websockets/sync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
websockets/sync/__pycache__/__init__.cpython-314.pyc,,
|
||||||
|
websockets/sync/__pycache__/client.cpython-314.pyc,,
|
||||||
|
websockets/sync/__pycache__/connection.cpython-314.pyc,,
|
||||||
|
websockets/sync/__pycache__/messages.cpython-314.pyc,,
|
||||||
|
websockets/sync/__pycache__/router.cpython-314.pyc,,
|
||||||
|
websockets/sync/__pycache__/server.cpython-314.pyc,,
|
||||||
|
websockets/sync/__pycache__/utils.cpython-314.pyc,,
|
||||||
|
websockets/sync/client.py,sha256=j9fvsOwCzJgQnaAyOaVYw6iT_IdPEM70JFLjeqXz2jw,22216
|
||||||
|
websockets/sync/connection.py,sha256=xJeJZZZnbILJUhcNg_lBWL26Imv-t2jsnnO5y_ecHf4,48298
|
||||||
|
websockets/sync/messages.py,sha256=q8K1vxdrqVk1bvn3zW1Jx09TlakIWSyYcOHC7ueFQmk,12826
|
||||||
|
websockets/sync/router.py,sha256=BqKSAKNZYtRWiOxol9qYeyfgyXRrMNJ6FrTTZLNcXMg,7172
|
||||||
|
websockets/sync/server.py,sha256=fVZZiaWW8ISoqFcJY5ZNa-MBxtLCYCP4ALJAtncgF3A,34346
|
||||||
|
websockets/sync/utils.py,sha256=TtW-ncYFvJmiSW2gO86ngE2BVsnnBdL-4H88kWNDYbg,1107
|
||||||
|
websockets/trio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
websockets/trio/__pycache__/__init__.cpython-314.pyc,,
|
||||||
|
websockets/trio/__pycache__/client.cpython-314.pyc,,
|
||||||
|
websockets/trio/__pycache__/connection.cpython-314.pyc,,
|
||||||
|
websockets/trio/__pycache__/messages.cpython-314.pyc,,
|
||||||
|
websockets/trio/__pycache__/router.cpython-314.pyc,,
|
||||||
|
websockets/trio/__pycache__/server.cpython-314.pyc,,
|
||||||
|
websockets/trio/__pycache__/utils.cpython-314.pyc,,
|
||||||
|
websockets/trio/client.py,sha256=VwpJ9bYECIPMrssX7OQ2rriNVjB3LitDqXSHEfEJwQI,29509
|
||||||
|
websockets/trio/connection.py,sha256=lalwJYhFNZqYDP7e69oo9KXebFNsbyM8wlmoqsMcf0s,49218
|
||||||
|
websockets/trio/messages.py,sha256=goDc5rfINExnvyfETWYYDT3-thgRJd7DPr4ujwJD3P8,10269
|
||||||
|
websockets/trio/router.py,sha256=qZL9-44mi9SOOTGU3CLBPuaCNzafQGqZ-fJl9hVpv-s,7196
|
||||||
|
websockets/trio/server.py,sha256=jRtrfZf3hHp1aQo6ffNMN7siaWzvZVhqC1iq1_Pj0sA,25805
|
||||||
|
websockets/trio/utils.py,sha256=A12NYUPOjQaiGusak43oWzPIcCxhikKTkAJLXtZJvcY,956
|
||||||
|
websockets/typing.py,sha256=zL4Pi_pQHJGVlL4cTyFauqxgMBAFI5B6dfvMVn7SFYs,1710
|
||||||
|
websockets/uri.py,sha256=2fFMw-AbKJ5HVHNCuw1Rx1MnkCkNWRpogxWhhM30EU4,3125
|
||||||
|
websockets/utils.py,sha256=Wdtsh2qQiHLrXUBEnp3LatMLJTZjB2CErbeOFvrdXvE,2022
|
||||||
|
websockets/version.py,sha256=TJPgFOcL4xsH8I2KiQu1V3j8kSHbOd_EWKNVnnOu8SE,3204
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
Wheel-Version: 1.0
|
Wheel-Version: 1.0
|
||||||
Generator: setuptools (80.9.0)
|
Generator: setuptools (83.0.0)
|
||||||
Root-Is-Purelib: false
|
Root-Is-Purelib: false
|
||||||
Tag: cp314-cp314-macosx_10_15_universal2
|
Tag: cp314-cp314-macosx_10_15_universal2
|
||||||
Generator: delocate 0.13.0
|
Generator: delocate 0.13.0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"archive_info": {"hash": "sha256=53b90c00bc6201ab6695c7ff51a04d0e425514c37515e9eeecd2c1b978ac6c0e", "hashes": {"sha256": "53b90c00bc6201ab6695c7ff51a04d0e425514c37515e9eeecd2c1b978ac6c0e"}}, "url": "file:///Users/runner/work/yt-dlp/yt-dlp/build/wheels/websockets-17.0.1-cp314-cp314-macosx_10_15_universal2.whl"}
|
||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user