File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2820,3 +2820,18 @@ tarfile
28202820 :func: `~tarfile.TarFile.errorlevel ` is zero.
28212821 (Contributed by Matt Prodani and Petr Viktorin in :gh: `112887 `
28222822 and CVE 2025-4435.)
2823+
2824+
2825+ Notable changes in 3.11.18
2826+ ==========================
2827+
2828+ ssl
2829+ ---
2830+
2831+ * The :mod: `ssl ` module now rejects TLS certificate chains that contain one
2832+ of a set of compromised eMudhra intermediate CA certificates. The affected
2833+ certificates are identified by their public key, so cross-signed copies that
2834+ reuse the same key are blocked as well. It is a defense-in-depth backstop
2835+ that applies even when an application supplies its own root CA bundle, and
2836+ regardless of whether the platform trust store has removed trust.
2837+ (Contributed by Christian Heimes in :gh: `160040 ` for CVE 2026-115557.)
Original file line number Diff line number Diff line change 4242@ if NOT " %HOST_PYTHON% " == " " @ %HOST_PYTHON% -Ec " import sys; assert sys.version_info[:2] >= (3, 9)" > nul 2 > nul && (set PYTHON=" %HOST_PYTHON% " ) && (set _Py_Python_Source=found as HOST_PYTHON) && goto :found
4343
4444@ rem If py.exe finds a recent enough version, use that one
45- @ for %% p in (3.10 3.9) do @ py -%% p -EV > nul 2 >& 1 && (set PYTHON=py -%% p) && (set _Py_Python_Source=found %% p with py.exe) && goto :found
45+ @ for %% p in (3.14 3.13 3.12 3.11 3. 10 3.9) do @ py -%% p -EV > nul 2 >& 1 && (set PYTHON=py -%% p) && (set _Py_Python_Source=found %% p with py.exe) && goto :found
4646
4747@ if NOT exist " %_Py_EXTERNALS_DIR% " mkdir " %_Py_EXTERNALS_DIR% "
4848@ set _Py_NUGET = %NUGET%
Original file line number Diff line number Diff line change 33(for compilers supporting computed gotos or "labels-as-values", such as gcc).
44"""
55
6+ import importlib .util
67import os
78import sys
89
910
10- try :
11- from importlib .machinery import SourceFileLoader
12- except ImportError :
13- import imp
14-
15- def find_module (modname ):
16- """Finds and returns a module in the local dist/checkout.
17- """
18- modpath = os .path .join (
19- os .path .dirname (os .path .dirname (__file__ )), "Lib" )
20- return imp .load_module (modname , * imp .find_module (modname , [modpath ]))
21- else :
22- def find_module (modname ):
23- """Finds and returns a module in the local dist/checkout.
24- """
25- modpath = os .path .join (
26- os .path .dirname (os .path .dirname (__file__ )), "Lib" , modname + ".py" )
27- return SourceFileLoader (modname , modpath ).load_module ()
11+ def find_module (modname ):
12+ """Finds and returns a module in the local dist/checkout.
13+ """
14+ modpath = os .path .join (
15+ os .path .dirname (os .path .dirname (__file__ )), "Lib" , modname + ".py" )
16+ spec = importlib .util .spec_from_file_location (modname , modpath )
17+ module = importlib .util .module_from_spec (spec )
18+ spec .loader .exec_module (module )
19+ return module
2820
2921
3022def write_contents (f ):
You can’t perform that action at this time.
0 commit comments