From 8c6565295986b704f36a9174d05deacc6925b7e4 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Sat, 28 Jun 2025 15:56:44 +0200 Subject: fix(yt_dlp): Polyfill missing rustpython features used in urllib3 Otherwise, anything that depends on urllib3 just fails to initialize. --- crates/yt_dlp/src/package_hacks/urllib3.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 crates/yt_dlp/src/package_hacks/urllib3.rs (limited to 'crates/yt_dlp/src/package_hacks/urllib3.rs') diff --git a/crates/yt_dlp/src/package_hacks/urllib3.rs b/crates/yt_dlp/src/package_hacks/urllib3.rs new file mode 100644 index 0000000..68a94aa --- /dev/null +++ b/crates/yt_dlp/src/package_hacks/urllib3.rs @@ -0,0 +1,25 @@ +use rustpython::vm::{PyResult, VirtualMachine}; + +// NOTE(@bpeetz): Remove this, once rust-python supports these features. <2025-06-27> +pub(crate) fn apply_hacks(vm: &VirtualMachine) -> PyResult<()> { + { + // Urllib3 tries to import this value, regardless if it is set. + let ssl_module = vm.import("ssl", 0)?; + ssl_module.set_attr("VERIFY_X509_STRICT", vm.ctx.new_int(0x20), vm)?; + } + + { + // Urllib3 tries to set the SSLContext.verify_flags value, regardless if it exists or not. + // So we need to provide a polyfill. + + let scope = vm.new_scope_with_builtins(); + + vm.run_code_string( + scope, + include_str!("urllib3_polyfill.py"), + "".to_owned(), + )?; + } + + Ok(()) +} -- cgit 1.4.1