Changelog

Python next

Дата выхода: XXXX-XX-XX

Безопасность

  • gh-118773: Исправлено создание ACL в os.mkdir() под Windows для корректной работы на неанглоязычных машинах.

  • gh-118486: os.mkdir() в Windows теперь принимает режим 0o700, чтобы ограничить новый каталог текущим пользователем. Это исправляет CVE-2024-4030, влияющие на tempfile.mkdtemp() в сценариях, где базовый временный каталог более разрешен, чем по умолчанию.

Ядро и встроенные модули

  • gh-119180: classmethod() и staticmethod() теперь лениво оборачивают атрибуты __annotations__ и __annotate__ своих базовых вызываемых элементов. См. PEP 649. Исправление от Jelle Zijlstra.

  • gh-119821: Исправление выполнения annotation scopes внутри классов, когда globals имеет значение non-dict. Исправление от Jelle Zijlstra.

  • gh-119740: Уберите ранее устаревшее делегирование int() в __trunc__().

  • gh-119689: Генерируем метаданные эффекта стека для псевдоинструкций из bytecodes.c.

  • gh-109218: complex() теперь принимает строку только в качестве позиционного аргумента. Передача комплексного числа в качестве аргумента «real» или «imag» устарела; его следует передавать только в качестве одиночного позиционного аргумента.

  • gh-119548: Добавьте команду clear в REPL. Исправление от Пабло Галиндо

  • gh-111999: Исправьте подпись str.format_map().

  • gh-119560: Некорректное утверждение в бета-версии 1 было удалено. Утверждение не срабатывало, если PyState_FindModule() использовалось в функции init модуля расширения до того, как модуль def был инициализирован.

  • gh-119369: Исправление тупика при удалении потока в свободно-поточной сборке, который мог возникнуть, когда GIL был включен во время выполнения.

  • gh-119525: Исправление тупика, связанного с кэшем _PyType_Lookup() в свободно-поточной сборке, когда GIL динамически включается во время выполнения.

  • gh-119311: Исправлена ошибка, из-за которой имена в базах общих классов неожиданно искажались.

  • gh-119395: Исправлена ошибка, при которой имена, появляющиеся после общего класса, искажались так, как будто они находятся в общем классе.

  • gh-119180: Замените опкод LOAD_ASSERTION_ERROR на LOAD_COMMON_CONSTANT и добавьте поддержку NotImplementedError.

  • gh-119213: Не встроенные модули, построенные с помощью аргумента clinic, аварийно завершали работу, если использовались в подинтерпретаторе перед основным интерпретатором. Объекты, которые вызывали проблему из-за небрежной утечки между интерпретаторами, были исправлены.

  • gh-119011: Исправляет type.__type_params__, чтобы вернуть пустой кортеж вместо дескриптора.

  • gh-118692: Избегайте создания ненужных экземпляров StopIteration для мониторинга.

  • gh-119180: Добавьте атрибут __annotate__ к функциям, классам и модулям как часть PEP 649. Исправление от Jelle Zijlstra.

  • gh-119049: Исправлено отображение исходной строки для предупреждений, созданных C API, если модуль warnings еще не был импортирован.

  • gh-118844: Исправление сбоев сборки при конфигурировании с использованием --disable-gil и --enable-experimental-jit.

  • gh-118921: Добавьте метод copy() для FrameLocalsProxy, который возвращает снимок dict для локальных переменных.

  • gh-117657: Исправление гонок данных в поле, хранящем указатель на главный поток интерпретатора, которые возникают в свободно-поточных сборках.

  • gh-118750: Если доступна C-версия модуля decimal, int(str) теперь использует ее для асимптотически более быстрого преобразования. Однако это применимо только в том случае, если строка содержит более 2 миллионов цифр.

  • gh-118507: Ускорение os.path.isjunction() и os.path.lexists() под Windows с нативной реализацией.

  • gh-118767: Использование NotImplemented в булевом контексте теперь приводит к появлению TypeError. Внесено Желем Зейлстра.

  • gh-118561: Исправление состояния гонки в свободно-поточной сборке, когда list.extend() мог открыть неинициализированную память для одновременных читателей.

  • gh-118263: Ускорить os.path.splitroot() и os.path.normpath() с помощью прямого вызова C.

  • gh-117558: Улучшение сообщений об ошибках, когда ожидается строка, байт или объект байтового массива длины 1.

  • gh-117195: Избегайте отказа утверждения для отладочных сборок при вызове object.__sizeof__(1)

Библиотека

  • gh-119770: Сделайте константы termios ioctl() константы положительными. Исправление Виктора Стиннера.

  • gh-89727: Исправлена проблема с shutil.rmtree(), когда в глубоких деревьях каталогов поднимался RecursionError.

  • gh-89727: Частично исправлена проблема с shutil.rmtree(), когда при глубоких деревьях каталогов возникала ошибка RecursionError. Ошибка рекурсии больше не возникает, когда rmtree.avoids_symlink_attacks равен false.

  • gh-93963: Удалите устаревшие имена из importlib.abc, найденные в importlib.resources.abc.

  • gh-119118: Исправление регрессии производительности в модуле tokenize за счет кэширования атрибута токена line и более эффективного вычисления смещения столбцов.

  • gh-89727: Исправление проблемы с os.fwalk(), когда возникала ошибка RecursionError на глубоких деревьях каталогов, путем изменения реализации на итеративную, а не рекурсивную.

  • gh-119594: Если вызвать pow(fractions.Fraction, x, module) с модулем не None, то в сообщении об ошибке теперь говорится о несовместимости типов, а не о том, что pow принимает только 2 аргумента. Исправление Вима Жантина-Гленна и Марка Дикинсона.

  • gh-119562: Удалите ast.Num, ast.Str, ast.Bytes, ast.NameConstant и ast.Ellipsis. Все они выдавали предупреждения об устаревании с Python 3.12. Исправление от Алекса Уэйгуда.

  • gh-119555: Перехват SyntaxError из compile() в методе runsource() InteractiveColoredConsole. Исправление от Sergey B Kirpichev.

  • gh-117865: Улучшение времени импорта модуля ast за счет отсрочки импорта re. Исправление от Jelle Zijlstra.

  • gh-113892: Теперь метод sock_connect из asyncio.ProactorEventLoop вызывает ошибку ValueError, если данный сокет не находится в неблокирующем режиме, а также в других реализациях циклов.

  • gh-69214: Исправьте fcntl.ioctl() Параметр request: используйте unsigned long вместо unsigned int для параметра request в fcntl.ioctl(), чтобы поддерживать запросы больше UINT_MAX. Исправление Виктора Стиннера.

  • gh-119105: difflib от DIffer.compare() (а значит, и ndiff) больше не могут быть спровоцированы на поведение в кубическом времени или на неограниченную рекурсию, и в целом должны быть быстрее в обычных случаях. Результаты могут измениться в некоторых случаях, хотя это должно быть редкостью. На корректность диффов это не влияет. Некоторые похожие строки, расположенные далеко друг от друга, могут быть представлены как удаляющие одну и добавляющие другую, тогда как раньше они отображались на соседних строках вывода с разметкой, показывающей внутристрочные различия.

  • gh-119443: Интерактивный REPL больше не работает при включенной from __future__ import annotations. Исправление от Jelle Zijlstra.

  • gh-119461: Добавьте константу socket.VMADDR_CID_LOCAL. Исправление Виктора Стиннера.

  • gh-117398: Объекты в C-API datetime теперь выделяются статически, что означает лучшую сохранность памяти, особенно при перезагрузке модуля. Это должно быть прозрачно для пользователей.

  • gh-118894: asyncio REPL теперь имеет те же возможности, что и PyREPL.

  • gh-118911: В PyREPL обновлена логика maybe-accept, так что если пользователь дважды нажимает кнопку Enter, он может завершить блок, даже если в нем есть пробельные символы. Кроме того, теперь, когда пользователь нажимает стрелку вверх, курсор находится на последней функциональной строке. Это соответствует поведению IPython. Исправление от Aya Elsayed.

  • gh-111201: Удалите зависимость от readline из нового Python REPL.

  • gh-119189: При использовании оператора ** или pow() с Fraction в качестве основания и экспоненты, которая не является рациональной, плавающей или комплексной, дробь больше не преобразуется в плавающую.

  • gh-119174: Исправление высокого DPI, из-за которого окна turtledemo(примеры черепашьей графики) размываются Патч от Wulian233 и Terry Jan Reedy

  • gh-119121: Исправление ошибки NameError, возникающей в asyncio.staggered.staggered_race. Теперь эта функция протестирована.

  • gh-119105: difflib.Differ намного быстрее для некоторых случаев, когда многие пары строк одинаково похожи.

  • gh-119113: Исправлена проблема, из-за которой pathlib.PurePath.with_suffix() не поднимал TypeError, если в качестве суффикса был указан None.

  • gh-118643: Исправление ошибки AttributeError в модуле email при повторном складывании длинного списка адресов. Также исправлено больше случаев неправильного кодирования разделителя адресов в списке адресов.

  • gh-58933: Обеспечивает корректный возврат pdb в вызывающий кадр, если f_trace вызывающего кадра не установлен

  • gh-82805: Поддержка расширений файлов с одной точкой в pathlib.PurePath.suffix и связанных с ними атрибутов и методов. Например, suffixes в PurePath('foo.bar.') теперь ['.bar', '.'], а не []. Это приводит разделение расширений файлов в соответствие с os.path.splitext().

  • gh-118924: Удалите version и version_info из sqlite3. Исправление от Хьюго ван Кеменаде.

  • gh-118928: Запрет использования последовательности параметров с именованными заполнителями в запросах sqlite3. Исправление Эрленда Э. Аасланда.

  • gh-118895: Установка атрибутов на typing.NoDefault теперь поднимает AttributeError вместо TypeError.

  • gh-118824: Удалите устаревшие pty.master_open() и pty.slave_open(). Вместо них используйте pty.openpty(). Исправление Никиты Соболева.

  • gh-118851: Аргументы ctx в конструкторах классов узлов ast теперь по умолчанию равны ast.Load(). Исправление от Jelle Zijlstra.

  • gh-101588: Удалите copy, deepcopy и pickle из itertools. Ранее они вызывали предупреждение об устаревании (DeprecationWarning), начиная с Python 3.12.

  • gh-118805: Удалите параметры type, choices и metavar из argparse.BooleanOptionalAction. Они были устаревшими начиная с Python 3.12.

  • gh-118803: typing.ByteString и collections.abc.ByteString удалены. Начиная с Python 3.12, они ранее вызывали DeprecationWarning.

  • gh-118798: Параметр isdst был удален из email.utils.localtime(). Исправление от Хьюго ван Кеменаде.

  • gh-118760: Восстановите значение по умолчанию tkiter.wantobjects до 1.

  • gh-118760: Исправление ошибок при вызове привязок Tkinter в Windows.

  • gh-74033: Откажитесь от поддержки передачи аргументов с ключевыми словами в pathlib.Path.

  • gh-101357: Подавление всех исключений OSError из методов pathlib.Path.exists() и is_*(), а не выборки более распространенных ошибок. Новое поведение соответствует os.path.exists(), os.path.isdir() и т. д. Используйте pathlib.Path.stat() для получения статуса файла без подавления исключений.

  • gh-78707: Отказ от поддержки передачи дополнительных позиционных аргументов в pathlib.PurePath.relative_to() и is_relative_to().

  • gh-118772: Позволяет экземплярам typing.TypeVar без значения по умолчанию следовать за экземплярами без значения по умолчанию в некоторых случаях. Исправление от Jelle Zijlstra.

  • gh-118673: Удалены исполняемые биты и shebang из модулей stdlib.

  • gh-110863: os.path.realpath() теперь подавляет любые OSError из os.readlink(), когда режим strict отключен (по умолчанию).

  • gh-118033: Исправление того, что dataclasses.dataclass() не создавал слот __weakref__ при подклассификации typing.Generic.

  • gh-113978: Игнорируйте предупреждения о завершении текста внутри REPL.

  • gh-103956: Исправление отсутствия символов новой строки в выводе модуля trace, когда трассировка строк включена, но строка исходного кода для текущего кадра недоступна.

  • gh-92081: Исправление отсутствия пробелов в заголовках писем, когда пробелы смешаны с закодированными 8-битными символами.

  • gh-103194: Подготовьте Tkinter к изменениям C API в Tcl 8.7/9.0, чтобы избежать неожиданного возврата _tkinter.Tcl_Obj вместо bool, str, bytearray или int.

  • gh-87106: Исправлена обработка в inspect.Signature.bind() аргументов-ключей, имеющих то же имя, что и позиционные аргументы, когда присутствует переменный аргумент-ключ (например, **kwargs).

  • gh-103134: Добавьте дополнительные методы к proxy objects в модуль multiprocessing:

    • clear() и copy() для прокси list.

    • fromkeys(), reversed(d), d | {}, {} | d, d |= {'b': 2} для прокси dict.

  • bpo-15987: Реализована функция ast.compare() для сравнения двух AST. Исправление сделано Батуханом Таская при некоторой помощи Джереми Хилтона.

  • gh-67693: Исправьте urllib.parse.urlunparse() и urllib.parse.urlunsplit() для URI, путь которых начинается с нескольких косых черт и не имеет авторитета. Основано на исправлении Ашвина Рамасвами.

Тесты

  • gh-119273: Python test runner больше не запускает тесты, использующие TTY (например, test_ioctl) в группе процессов (используя setsid()). Ранее тесты, использующие TTY, пропускались. Исправление Виктора Стиннера.

  • gh-119050: Бегунок для тестирования regrtest: Добавлена поддержка XML в программу проверки рефлексии (опция -R). Исправление Виктора Стиннера.

Построить

  • gh-119729: В POSIX-системах имена файлов pkg-config (.pc) теперь включают флаги ABI, которые могут включать отладочный («d») и свободно-поточный («t»). Например: * python-3.14.pc (сборка по умолчанию, без отладки) * python-3.14d.pc (сборка по умолчанию, с отладкой) * python-3.14t.pc (сборка со свободным потоком)

  • gh-115119: Возврат к поставляемому libmpdec, если системная версия не может быть найдена.

  • gh-119132: Обновите sys.version, чтобы определить, является ли сборка сборкой по умолчанию или сборкой с использованием свободных потоков. Исправление от Donghee Na.

  • gh-118836: Исправьте AssertionError, если при сборке с --enable-experimental-jit компилятор выдает секцию SHT_NOTE.

  • gh-118943: Исправление возможного состояния гонки, влияющего на параллельные сборки, настроенные с помощью --enable-experimental-jit, когда ошибки компиляции могли быть вызваны неполностью сгенерированным заголовочным файлом.

Windows

  • gh-119690: Добавлена поддержка Юникода и исправлены события аудита для _winapi.CreateNamedPipe.

  • gh-111201: Добавьте поддержку нового pyrepl в Windows

  • gh-119070: Исправлена работа py.exe с шебангами типа /usr/bin/env python3.12, которые ранее интерпретировались как python3.exe вместо python3.12.exe.

  • gh-117505: Устраняет проблему, связанную с тем, что программа установки Windows не запускала ensurepip в полностью изолированном окружении. Это могло привести к неожиданному взаимодействию с пользовательскими сайт-пакетами.

  • gh-118209: Избегайте сбоев в mmap на Windows, когда отображаемая память недоступна из-за ошибок файловой системы или нарушений доступа.

  • gh-116145: Обновление поставляемого Tcl/Tk до версии 8.6.14.

C API

  • gh-119775: Создание immutable types с мутабельными базами было устаревшим с версии 3.12 и теперь вызывает ошибку TypeError.

  • gh-119585: Исправление сбоя, когда состояние потока, созданное с помощью PyGILState_Ensure(), вызывает деструктор, который во время PyThreadState_Clear() обращается к PyGILState_Ensure() и PyGILState_Release(). Это может произойти в свободно-поточной сборке или при использовании локальных переменных, деструкторы которых вызывают PyGILState_Ensure().

  • gh-119613: Макросы Py_IS_NAN, Py_IS_INFINITY и Py_IS_FINITE - soft deprecated.

  • gh-119336: Восстанавливает удаленную функцию _PyLong_NumBits(). Она используется проектом pywin32. Автор патча - Итан Смит

  • gh-119247: Добавлены макросы Py_BEGIN_CRITICAL_SECTION_SEQUENCE_FAST и Py_END_CRITICAL_SECTION_SEQUENCE_FAST, чтобы сделать возможным безопасное использование PySequence_Fast API в свободном потоке, и обновлен str.join для работы без использования GIL.

  • gh-111389: Добавьте константу PyHASH_MULTIPLIER: простой множитель, используемый в строковых и различных других хэшах. Патч от Виктора Стиннера.

  • gh-118771: Несколько объявлений языка C с именами, не начинающимися с префиксов Py или _Py, которые по ошибке были добавлены в альфа- и бета-версии 3.13, были перемещены во внутренние заголовки.

  • gh-116984: Сделать mimalloc includes относительным к текущему файлу, чтобы избежать необходимости встраивания или расширения включать Internal/mimalloc, если они уже включают внутренние заголовки CPython.

  • gh-118789: Восстановите _PyWeakref_ClearRef, который был ранее удален в Python 3.13 alpha 1.

  • gh-97588: Исправлено создание битовых полей в структурах и союзах ctypes. Поля больше не перекрываются.

Python 3.13.0 beta 1

Дата выхода: 2024-05-08

Безопасность

  • gh-116741: Обновление libexpat до версии 2.6.2

  • gh-117233: Обнаружение поддержки BLAKE2, SHA3, Shake и усеченного SHA512 в библиотеке libcrypto, похожей на OpenSSL, во время сборки. Это позволяет использовать hashlib с библиотеками, которые не поддерживают все алгоритмы, которые поддерживает OpenSSL.

Ядро и встроенные модули

  • gh-118414: Добавьте инструментальные опкоды в утверждение YIELD_VALUE для отслеживания случаев.

  • gh-117953: Когда встроенный модуль или модуль расширения импортируется в первый раз при активном подынтерпретаторе, функция init модуля теперь сначала запускается основным интерпретатором, прежде чем импорт продолжится в подынтерпретаторе. Следовательно, теперь однофазные модули инициализации терпят неудачу в изолированном суб-интерпретаторе без функции инициализации, запущенной в этом интерпретаторе, тогда как раньше она запускалась в суб-интерпретаторе перед неудачей, потенциально оставляя глобальное состояние и обратные вызовы и оставляя модуль в несогласованном состоянии.

  • gh-117549: Не используйте синтаксис обозначенных инициализаторов в инлайн-функциях во внутренних заголовках. Они создают проблемы для пользователей C++ или MSVC, которые еще не используют последний стандарт C++ (C++20). Хотя внутренний файл pycore_backoff.h включен (косвенно, через pycore_code.h) в некоторые ключевые программы сторонних разработчиков, которые делают это для скорости.

  • gh-95382: Улучшение производительности json.dumps() и json.dump() при использовании аргумента indent. В зависимости от данных кодирование с помощью json.dumps() с indent может быть в 2-3 раза быстрее.

  • gh-116322: В сборках --disable-gil GIL будет включен при загрузке модулей расширения C. Если модуль указывает, что он поддерживает работу без GIL, GIL будет отключен после завершения загрузки. В противном случае GIL останется включенным до конца жизни интерпретатора. Это поведение не применяется, если GIL был явно включен или выключен с помощью PYTHON_GIL или -Xgil.

  • gh-118513: Исправление неправильного UnboundLocalError, когда два понимания в одной функции ссылаются на одно и то же имя, но в одном понимании имя связано, а в другом является неявным глобальным.

  • gh-118518: Позволяет поддержке perf в Linux работать без фрейм-указателей, используя расширенную поддержку JIT в perf. Функция активируется при использовании переменной окружения PYTHON_PERF_JIT_SUPPORT или при запуске Python с -Xperf_jit. Исправление от Pablo Galindo.

  • gh-117514: Добавьте функцию sys._is_gil_enabled(), которая возвращает, включен ли GIL в данный момент. В сборке по умолчанию она всегда возвращает True, потому что GIL всегда включен. В сборке со свободным потоком она может возвращать True или False.

  • gh-118164: Разорвите цикл между Python-реализацией модуля decimal и Python-кодом для преобразования целых чисел в строки. Также оптимизируйте преобразование целых чисел в строки для значений в диапазоне от 9_000 до 135_000 десятичных цифр.

  • gh-118473: Исправьте, чтобы sys.set_asyncgen_hooks() не устанавливался частично при поднятии TypeError.

  • gh-118465: Компилятор заполняет новое поле __firstlineno__ класса номером первой строки определения класса.

  • gh-118492: Исправление проблемы, когда при запуске финализатора кэш типов мог раскрывать ранее использовавшийся атрибут.

  • gh-117714: обновите async_generator.athrow().close() и async_generator.asend().close(), чтобы закрыть свои секции базового генератора async

  • gh-111201: Интерпретатор interactive теперь реализован на языке Python, что позволяет использовать ряд новых возможностей, таких как цвета, многострочный ввод, просмотр истории и режим вставки. Внесено Пабло Галиндо, Лукашем Ланга и Лисандросом Николау на основе кода из проекта PyPy.

  • gh-74929: Реализация PEP 667: преобразуйте FrameType.f_locals и PyFrame_GetLocals(), чтобы они возвращали прокси-объект с возможностью записи, когда фрейм ссылается на функцию или понимание.

  • gh-116767: Исправление сбоя в компиляторе на „async with“, имеющем много менеджеров контекста.

  • gh-118335: Измените способ использования интерпретатора второго уровня. Вместо того чтобы запускать Python с -X uops или устанавливать переменную окружения PYTHON_UOPS=1, теперь этот выбор делается во время сборки с помощью конфигурации --enable-experimental-jit=interpreter.

    **Осторожно! ** Это изменяет переменную окружения для включения или отключения микроопераций на PYTHON_JIT. Старая PYTHON_UOPS больше не используется.

  • gh-118306: Обновление JIT-компиляции для использования LLVM 18

  • gh-118160: Annotation scopes внутри классов теперь могут содержать осмысления. Однако во время выполнения такие понимания не вставляются в родительскую область видимости. Исправление от Jelle Zijlstra.

  • gh-118272: Исправлена ошибка, при которой generator.close не освобождал локали генераторного кадра.

  • gh-118216: Не учитывайте импорт __future__ с точками перед именем модуля.

  • gh-118074: Убедитесь, что объекты-исполнители в массиве COLD_EXITS не предполагаются как GC-совместимые (что привело бы к доступу к байтам вне объекта).

  • gh-107674: Ленивая загрузка номера строки кадра для повышения производительности трассировки

  • gh-118082: Улучшено сообщение SyntaxError для импорта без имен, как в случаях from x import и import. Теперь оно указывает пользователям, что import ожидает, что после него будет хотя бы одно имя.

  • gh-118090: Улучшите сообщение SyntaxError для пустых скобок типа param.

  • gh-102511: Ускорьте os.path.splitroot() с помощью нативной реализации.

  • gh-117958: Добавлен метод get_jit_code() для доступа к JIT-компилированному машинному коду из UOp-исполнителя, когда включен экспериментальный JIT. Исправление Энтони Шоу.

  • gh-117901: Добавляет возможность для codegen компилятора сохранять вложенные последовательности инструкций для интроспекции.

  • gh-116622: Перенаправление stdout и stderr в системный журнал при встраивании в приложение для Android.

  • gh-109118: annotation scope внутри диапазонов классов теперь могут содержать лямбды.

  • gh-117894: Запретить повторное использование объектов agen.aclose() после .throw().

  • gh-117881: предотвращение одновременного доступа к асинхронному генератору с помощью athrow().throw() или asend().throw()

  • gh-115874: Исправлена возможная ошибка сегментации при сборке мусора для объектов _asyncio.FutureIter.

  • gh-117536: Исправьте RuntimeWarning при вызове agen.aclose().throw(Exception).

  • gh-117755: Исправление аллокатора mimalloc при выделении огромного количества памяти (около 8 589 934 592 ГБ) на s390x. Исправление от Виктора Стиннера.

  • gh-117750: Исправлена проблема, из-за которой dict объекта при очистке рассинхронизировался с его внутренними значениями. obj.__dict__.clear() теперь очищает внутренние значения, но оставляет dict прикрепленным к объекту.

  • gh-117431: Улучшите производительность следующих методов bytes и bytearray, адаптировав их к соглашению о вызове METH_FASTCALL:

    • count()

    • find()

    • index()

    • rfind()

    • rindex()

  • gh-117709: Ускоряет вызовы str() с аргументом только с позицией, используя соглашение PEP 590 vectorcall. Исправление Эрленда Аасланда.

  • gh-117680: Дайте _PyInstructionSequence интерфейс Python и используйте его в тестах.

  • gh-115776: Статически выделенные объекты, по определению, бессмертны, поэтому должны быть помечены как таковые, независимо от того, находятся ли они в модулях расширения или нет.

  • gh-117641: Ускорение os.path.commonpath() на Unix.

  • gh-117636: Ускорение os.path.join().

  • gh-117607: Ускорение os.path.relpath().

  • gh-117385: Удалите необработанные события PY_MONITORING_EVENT_BRANCH и PY_MONITORING_EVENT_EXCEPTION_HANDLED из sys.settrace().

  • gh-116322: Модули расширения могут указать среде выполнения, что они могут работать без GIL. Многофазные модули инициализации делают это, вызывая Py_MOD_GIL_NOT_USED для слота Py_mod_gil, а однофазные модули инициализации вызывают PyUnstable_Module_SetGIL(mod, Py_MOD_GIL_NOT_USED) из своей функции инициализации.

  • gh-116129: Реализуйте PEP 696, добавив поддержку значений по умолчанию для параметров типа. Исправление от Jelle Zijlstra.

  • gh-93502: Добавьте в C-API две новые функции, PyRefTracer_SetTracer() и PyRefTracer_GetTracer(), которые позволяют отслеживать создание и уничтожение объектов так же, как это делает модуль tracemalloc. Исправление от Пабло Галиндо

  • gh-107674: Значительно улучшена производительность sys.settrace().

  • gh-95754: Улучшите сообщение об ошибке, когда скрипт, затеняющий модуль из стандартной библиотеки, вызывает появление AttributeError. Аналогично, улучшите сообщение об ошибке, когда скрипт, затеняющий сторонний модуль, пытается получить доступ к атрибуту этого стороннего модуля во время инициализации.

  • gh-99180: Устранение неинформативных индикаторов отказов в операторах return и простых assignment. Исправление Пабло Галиндо.

  • gh-105879: Разрешите передавать аргументы globals и locals в exec() и eval() в качестве ключевых слов.

Библиотека

  • gh-118418: Если вы не передадите значение новому параметру type_params из typing._eval_type() или typing.ForwardRef._evaluate(), теперь будет выдаваться сообщение DeprecationWarning. (Использовать любую из этих частных и недокументированных функций не рекомендуется, но непередача значения параметру type_params может привести к некорректному поведению на Python 3.12 или более новых версиях).

  • gh-118660: Добавляет необязательный второй параметр типа к typing.ContextManager и typing.AsyncContextManager, представляющий типы возврата __exit__() и __aexit__() соответственно. По умолчанию этот параметр принимает значение bool | None.

  • gh-118650: Модуль enum позволяет методу с именем _repr_* быть определенным на типах Enum.

  • gh-118648: Добавьте параметр типа по умолчанию к typing.Generator и typing.AsyncGenerator.

  • gh-101137: Тип Mime text/x-rst теперь поддерживается mimetypes.

  • gh-118164: Python-реализация модуля decimal могла зависнуть в относительно небольших по мощности случаях (например, 2**117), если точность контекста была установлена на очень большое значение. Теперь для проверки точности результатов используется другой метод, не требующий вычисления 10**precision (которое может оказаться слишком большим для вычисления).

  • gh-111744: breakpoint() и pdb.set_trace() теперь попадают в отладчик сразу после вызова, а не перед выполнением следующей строки.

  • gh-118500: Добавить pdb поддержку zipapps

  • gh-118406: Добавьте подпись для объектов sqlite3.Connection.

  • gh-101732: Используйте функцию времени openssl, совместимую с Y2038, если она доступна.

  • gh-118404: Исправьте inspect.signature() для несравнимых вызываемых элементов.

  • gh-118402: Зафиксируйте inspect.signature() для результата вызова functools.cmp_to_key().

  • gh-116622: В Android sysconfig.get_platform теперь возвращает формат, указанный PEP 738.

  • gh-118285: Позволяет указать подпись пользовательских вызываемых экземпляров типа extension атрибутом __text_signature__. Укажите сигнатуры экземпляров operator.attrgetter, operator.itemgetter и operator.methodcaller.

  • gh-118314: Исправление краевого случая в строгом режиме binascii.a2b_base64(), когда излишняя набивка не обнаруживалась, когда набивка не требовалась.

  • gh-118271: Добавьте методы PhotoImage read() для чтения изображения из файла и data() для получения данных изображения. Добавьте параметры background и grayscale в метод PhotoImage write().

  • gh-118225: Добавьте метод PhotoImage copy_replace() для копирования области с одного изображения на другое, возможно, с пиксельным масштабированием и/или поддискретизацией. Добавьте параметр from_coords в методы PhotoImage copy(), zoom() и subsample(). Добавьте параметры zoom и subsample в метод PhotoImage copy().

  • gh-118221: Исправлена ошибка, из-за которой sqlite3.Connection.iterdump() мог не работать, если использовался пользовательский row factory. Исправление от Эрленда Аасланда.

  • gh-118013: Исправление регрессии, внесенной в gh-103193, из-за которой вызов inspect.getattr_static() на экземпляре приводил к сохранению сильной ссылки на класс этого экземпляра во внутреннем кэше модуля inspect. Это приводило к непредвиденному расходу памяти, если класс создавался динамически, класс содержал сильные ссылки на другие объекты, которые занимали значительный объем памяти, а кэш содержал единственную сильную ссылку на класс. Исправление регрессии приводит к замедлению работы getattr_static(), но функция все равно должна быть значительно быстрее, чем в Python 3.11. Автор исправления - Алекс Уэйгуд.

  • gh-118218: Ускорение itertools.pairwise() в общем случае до 1,8x.

  • gh-117486: Улучшено поведение пользовательских подклассов ast.AST. Теперь такие классы не требуют изменений в обычном случае, чтобы соответствовать изменениям в поведении модуля ast в Python 3.13. Исправление от Jelle Zijlstra.

  • gh-90848: Исправлена unittest.mock.create_autospec() для настройки родительского mock с аргументами в виде ключевых слов.

  • gh-118168: Исправлена некорректная подстановка аргументов при использовании typing.Unpack со встроенным tuple. typing.Unpack теперь вызывает TypeError при использовании с некоторыми недопустимыми типами. Исправление от Jelle Zijlstra.

  • gh-118131: Добавляет интерфейс командной строки для модуля random. Исправление авторства Хьюго ван Кеменаде.

  • gh-118107: Исправление zipimport чтения файлов ZIP64 со слишком большими или смещенными файловыми записями.

  • gh-117535: Измените неизвестное имя файла warnings с sys на <sys>, чтобы уточнить, что это не настоящее имя файла.

  • gh-114053: Исправление ошибочного NameError при вызове typing.get_type_hints() на классе, который использовал параметры типа PEP 695 в модуле, имеющем from __future__ import annotations в верхней части файла. Исправление от Alex Waygood.

  • gh-116931: Добавить параметр fileobj проверка на tarfile.TarFile.addfile()

  • gh-117995: Не поднимайте DeprecationWarning, когда sequence параметров используется для связывания индексированных, безымянных держателей. См. также gh-100668.

  • gh-80361: Исправьте ошибку TypeError в email.Message.get_payload(), когда кодовая система имеет кодировку RFC 2231.

  • gh-86650: Исправление IndexError при разборе некоторых писем с недопустимым Message-ID (включая одноразовые адреса, сгенерированные Microsoft Outlook).

  • gh-117691: Улучшены сообщения об ошибках, выдаваемые предупреждениями об устаревании tarfile, относящимися к PEP 706. Если аргумент filter не указан в extract() или extractall, предупреждение об устаревании теперь указывает на строку в коде пользователя, где была вызвана соответствующая функция. Исправление Алекса Уэйгуда.

  • gh-115060: Ускорьте pathlib.Path.glob(), отказавшись от начального колла is_dir(). В результате этого изменения glob() больше не может повышать OSError.

  • gh-77102: Модуль site теперь сначала разбирает файл .pth с UTF-8, а затем locale encoding, если случится UnicodeDecodeError. Ранее он поддерживал только кодировку локали.

  • gh-76785: Мы раскрыли низкоуровневый модуль _interpreters ради реализации в PyPI модуля PEP 734. Иногда он был доступен как модуль _xxsubinterpreters и ранее использовался только для тестирования. По большей части его следует считать внутренним модулем, как и _thread и _imp. См. https://discuss.python.org/t/pep-734-multiple-interpreters-in-the-stdlib/41147/26.

  • gh-115060: Ускоряет pathlib.Path.glob(), не сканируя каталоги на наличие сегментов шаблона, не являющихся диковыми символами.

  • gh-117727: Ускорение pathlib.Path.iterdir() за счет внутреннего использования os.scandir().

  • gh-117586: Ускорьте pathlib.Path.walk() за счет внутренней работы со строками.

  • gh-117722: Измените новую поддержку нескольких разделителей в asyncio.Stream.readuntil(), чтобы она принимала только кортежи разделителей, а не произвольные итерационные таблицы.

  • gh-117692: Исправлена ошибка, когда doctest.DocTestFinder не справлялся с обернутым builtin_function_or_method.

  • gh-117348: Значительно восстановлена производительность конфигпарсера при импорте за счет отказа от использования классов данных.

  • gh-117663: Исправьте _simple_enum для обнаружения псевдонимов, когда присутствует несколько аргументов, но только один из них является значением-членом.

  • gh-117618: Поддержите package.module как filename для break команды pdb.

  • gh-102247: перечисление кодов статуса с константами в http.HTTPStatus обновлено, чтобы включить имена из RFC9110. Этот RFC включает некоторые HTTP-статусы, ранее использовавшиеся только для WEBDAV, и присваивает им более общие имена.

    Старые константы сохраняются для обратной совместимости.

  • gh-117586: Ускорьте pathlib.Path.glob() за счет внутренней работы со строками.

  • gh-117225: Добавляет цвет в вывод doctest. Исправление от Хьюго ван Кеменаде.

  • gh-117566: ipaddress.IPv6Address.is_loopback() теперь будет возвращать True для IPv4-маппированных loopback-адресов, т.е. адресов в адресном пространстве ::ffff:127.0.0.0/104.

  • gh-117546: Исправлена проблема, из-за которой os.path.realpath() переставал разрешать симлинки после того, как встречал цикл симлинка на POSIX.

  • gh-116720: Улучшено поведение asyncio.TaskGroup, когда внешняя отмена сталкивается с внутренней отменой. Например, когда две группы задач вложены друг в друга и обе одновременно сталкиваются с исключением в дочерней задаче, было возможно, что внешняя группа задач будет вести себя неправильно, поскольку ее внутренняя отмена была поглощена внутренней группой задач.

    В случае, когда группа задач отменяется извне и также должна поднять ExceptionGroup, она теперь будет вызывать метод cancel() родительской задачи. Это гарантирует, что asyncio.CancelledError будет поднят при следующем await, так что отмена не будет потеряна.

    Дополнительным преимуществом этих изменений является то, что группы задач теперь сохраняют счетчик отмен (asyncio.Task.cancelling()).

    Для обработки некоторых угловых случаев asyncio.Task.uncancel() теперь может сбрасывать недокументированный флаг _must_cancel, когда счетчик отмены достигает нуля.

  • gh-117516: Добавьте typing.TypeIs, реализовав PEP 742. Исправление от Jelle Zijlstra.

  • gh-117503: Исправление поддержки не-ASCII имен пользователей в байтовых путях в os.path.expanduser() на Posix.

  • gh-117394: os.path.ismount() теперь работает в 2-3 раза быстрее, если у пользователя есть права.

  • gh-117313: При повторном складывании сообщений email используйте в качестве разделителей строк только '\n', '\r' и '\r\n'. Сохраните управляющие символы '\v', '\f', '\x1c', '\x1d' и '\x1e' и разделители строк Юникода '\x85', '\u2028' и '\u2029' как есть.

  • gh-117142: Преобразуйте _ctypes в многофазную инициализацию (PEP 489).

  • gh-66543: Добавьте функцию mimetypes.guess_file_type(), которая работает с путем к файлу. Передача пути к файлу вместо URL в guess_type() - это soft deprecated.

  • gh-68583: webbrowser CLI: замените getopt на argparse, добавьте длинные опции. Исправление от Хьюго ван Кеменаде.

  • gh-116871: Предложения имен для AttributeError и ImportError теперь включают имена с подчеркиванием, только если исходное имя было подчеркнуто.

  • gh-116023: Не показывать пустые поля (значение None или []) в ast.dump() по умолчанию. Добавьте параметр show_empty=False, чтобы опционально показывать их.

  • gh-115961: Добавлены атрибуты name и mode для сжатых и архивированных файлоподобных объектов в модулях bz2, lzma, tarfile и zipfile. Значение атрибута mode в модуле gzip.GzipFile было изменено с целого (1 или 2) на строку ('rb' или 'wb'). Значение атрибута mode читаемого файлоподобного объекта, возвращаемого командой zipfile.ZipFile.open(), было изменено с 'r' на 'rb'.

  • gh-82062: Исправление inspect.signature() для корректной обработки параметров по умолчанию для методов в модулях расширения, которые используют имена, определенные в пространстве имен модуля.

  • gh-83856: Честь atexit для всех методов запуска multiprocessing

  • gh-113081: Выведите цветное исключение, как во встроенном трассировщике в pdb

  • gh-112855: Ускоряет травление объектов pathlib.PurePath. Исправление Барни Гейла.

  • gh-111744: Поддержка событий опкодов в bdb

  • gh-109617: ncurses: исправлен сбой, который мог произойти на macOS 13 или более ранних версиях, когда Python был собран с помощью SDK Apple Xcode 15.

  • gh-83151: Позволило произвольным операторам и оценкам в оболочке pdb обращаться к локальным переменным текущего фрейма, что сделало возможным работу многоохватного кода, например генераторов или вложенных функций.

  • gh-110209: Добавьте __class_getitem__() к types.GeneratorType и types.CoroutineType для подсказки типа. Исправление Джеймса Хилтона-Балфа.

  • gh-108191: types.SimpleNamespace теперь принимает необязательный позиционный аргумент, который задает начальные значения атрибутов в виде dict или итерации пар ключ-значение.

  • gh-62090: Исправление ошибок утверждения, вызванных пробелами в метаварах или SUPPRESS-ед. группами в argparse, путем упрощения форматирования использования. Исправление Али Хамдана.

  • gh-102402: Настройте logging.LogRecord для использования time.time_ns() и исправьте незначительную ошибку, связанную с математикой с плавающей точкой.

  • gh-100242: Приведите чисто питоновскую реализацию functools.partial.__new__ в большее соответствие с C-реализацией, не проверяя всегда наличие атрибута 'func' на первом аргументе partial. Вместо этого и в Python-версии, и в C-версии выполняется проверка isinstance(func, partial) на первый аргумент partial.

  • gh-99730: HEAD-запросы больше не преобразуются в GET-запросы при перенаправлении в urllib.

  • gh-66410: Установка глобального tkinter модуля wantobject в 2 перед созданием объекта Tk или вызов метода wantobject() объекта Tk с аргументом 2 делает теперь аргументы обратных вызовов, зарегистрированных в модуле tkinter, передаваемыми как различные объекты Python (int, float, bytes, tuple), в зависимости от их внутреннего представления в Tcl, а не всегда str. tkinter.wantobject теперь по умолчанию устанавливается на 2.

  • bpo-40943: Исправление нескольких IndexError при разборе писем с усеченными Message-ID, адресом, маршрутами и т. д., например example@.

  • bpo-39324: Добавьте сопоставление типов mime для .md <-> text/markdown

  • bpo-18108: shutil.chown() теперь поддерживает аргументы dir_fd и follow_symlinks.

  • bpo-30988: Исправление разбора писем с недействительными заголовками адресов, содержащими ведущую или завершающую точку. Исправление от tsufeki.

  • bpo-32839: Добавьте метод after_info() для виджетов Tkinter.

Документация

  • gh-117928: Минимальная версия Sphinx, необходимая для документации, теперь составляет 6.2.1.

Построить

  • gh-118734: Исправляет сборку Windows при прямом вызове (не через скрипт build.bat) без указания значения для UseTIER2.

  • gh-115119: Опция configure --with-system-libmpdec теперь по умолчанию принимает значение yes. Копия libmpdecimal в комплекте будет удалена в Python 3.15.

  • gh-117845: Исправление сборки с последними версиями libedit путем обнаружения сигнатур readline hook в configure.

  • gh-116622: Добавлен проект тестового стенда для запуска тестового набора на Android.

  • gh-117645: Увеличьте размер стека WASI с 512 КиБ до 8 МиБ и начальную память с 10 МиБ до 20 МиБ. Исправление Виктора Стиннера.

  • gh-115119: configure теперь использует pkg-config для обнаружения зависимостей decimal, если указана опция --with-system-libmpdec.

Windows

  • gh-115119: Обновление программы установки Windows для использования libmpdecimal 4.0.0.

  • gh-118486: os.mkdir() теперь принимает режим 0o700, чтобы ограничить новую директорию текущим пользователем.

  • gh-118347: Исправляет неустановку обновлений пусковой установки.

  • gh-118293: Модуль multiprocessing теперь передает флаг STARTF_FORCEOFFFEEDBACK при порождении процессов, чтобы указать Windows не менять курсор мыши.

  • gh-115009: Обновление программы установки Windows для использования SQLite 3.45.3.

  • gh-90329: Подавляет предупреждение, отображаемое при создании виртуальной среды, когда запрашиваемый и созданный пути отличаются только коротким (в стиле 8.3) именем. Предупреждения будут продолжать отображаться, если перекресток или симлинк в пути привел к созданию виртуальной среды в другом месте, чем было запрошено изначально.

  • gh-117786: Исправлена ошибка некорректного запуска виртуальных сред при создании из установки Store.

macOS

  • gh-115119: Обновите программу установки macOS для использования libmpdecimal 4.0.0.

  • gh-114099: использование символов препроцессора iOS стало совместимым со старыми версиями macOS SDK.

  • gh-115009: Обновите программу установки macOS для использования SQLite 3.45.3.

  • gh-91629: Используйте конфиги ~/.config/fish/conf.d и fish_add_path для установки PATH при установке для оболочки Fish.

IDLE

  • bpo-34774: Использовать выбранную пользователем цветовую тему для справки => IDLE Doc.

C API

  • gh-118124: Исправьте Py_BUILD_ASSERT и Py_BUILD_ASSERT_EXPR для неконстантных выражений: используйте static_assert() на C11 и новее. Исправление Виктора Стиннера.

  • gh-110850: Добавьте «сырой» вариант функций PyTime

    Патч Виктора Стиннера.

  • gh-117987: Восстановление функций, удаленных в Python 3.13 alpha 1:

    Патч Виктора Стиннера.

  • gh-117929: Восстановление удаленной функции PyEval_InitThreads(). Патч от Виктора Стиннера.

  • gh-117534: Улучшена логика проверки в C-реализации datetime.datetime.fromisoformat(), чтобы лучше справляться с недействительными годами. Исправление от Влада Ефанова.

  • gh-68114: Исправлена работа функции skipitem() со старыми форматерами „w“ и „w#“. Они больше не поддерживаются и теперь вызывают исключение при использовании.

  • gh-111997: Добавьте C-API для запуска событий мониторинга.

Python 3.13.0 alpha 6

Дата выхода: 2024-04-09

Ядро и встроенные модули

  • gh-117648: Улучшение производительности os.path.join() и os.path.expanduser().

  • gh-117584: Поднимите TypeError для непутей в posixpath.relpath().

  • gh-117494: Рефакторинг структуры данных последовательности инструкций из файла compile.c в файл instruction_sequence.c.

  • gh-116968: Вводится унифицированный 16-битный тип счетчика обратного хода (_Py_BackoffCounter), общий для адаптивного специализатора уровня 1 и оптимизатора уровня 2. API, используемый для счетчиков адаптивной специализации, изменен, но поведение (как предполагается) идентично.

    Поведение счетчиков уровня 2 изменено:

    • Больше нет динамических порогов (мы никогда их не меняли).

    • Теперь все счетчики используют один и тот же экспоненциальный бэк-офф.

    • Счетчик для JUMP_BACKWARD начинает отсчет с 16.

    • temperature в боковых выходах начинает отсчет с 64.

  • gh-117431: Улучшите производительность следующих методов bytes и bytearray, адаптировав их к соглашению о вызове METH_FASTCALL:

    • endswith()

    • startswith()

  • gh-117431: Улучшите производительность следующих методов str, адаптировав их к соглашению о вызове METH_FASTCALL:

  • gh-117411: Переместите PyFutureFeatures во внутренний заголовок и сделайте его приватным.

  • gh-109120: Добавлена обработка некорректных звездных выражений, например f(3, *). Исправление от Григорьева Семена

  • gh-117381: Исправьте сообщение об ошибке для ntpath.commonpath().

  • gh-117349: Оптимизируйте несколько функций в os.path.

  • gh-117335: Raise TypeError for non-sequences for ntpath.commonpath().

  • gh-117266: Исправлены сбои в некоторых пользовательских подклассах ast.AST. Теперь ожидается, что такие классы будут устанавливать атрибут _field_types.

  • gh-99108: Обновлен hashlib встроенный HACL* project C-код из upstream, который мы используем для многих реализаций, когда они не присутствуют через OpenSSL в данной сборке. Это также позволяет избежать редкой возможности возникновения проблемы связывания имени символа C с одним правилом определения.

  • gh-117108: Измените бит старого пространства у объектов в молодом поколении с 0 на gcstate->visited, чтобы у объектов, созданных во время GC, был правильно установлен бит старого пространства, если они будут перемещены в старое поколение.

  • gh-117108: Цикл GC теперь выбирает размер приращений на основе общего размера кучи, а не скорости создания объектов. Это гарантирует, что он будет успевать за растущей кучей.

  • gh-117114: Сделать os.path.isdevdrive() доступным на всех платформах. Для тех, которые не предлагают Dev Drives, всегда будет возвращаться False.

  • gh-116735: Для INSTRUMENTED_CALL_FUNCTION_EX установите arg0 на sys.monitoring.MISSING вместо None для события CALL.

  • gh-113964: Запуск новых потоков и создание процессов через os.fork() теперь предотвращаются только после выхода всех недемонских потоков.

  • gh-116626: Убедитесь, что INSTRUMENTED_CALL_FUNCTION_EX всегда испускает CALL

  • gh-116554: list.sort() теперь использует больше случаев частичного упорядочивания, в частности, длинные нисходящие пробеги с вложенными пробегами с одинаковыми значениями. Теперь они распознаются как отдельные пробеги (раньше каждый блок повторяющихся значений приводил к созданию нового пробега).

  • gh-114099: Добавлен загрузчик, который может обнаруживать модули расширения в папке Frameworks в стиле iOS.

  • gh-115775: Компилятор заполняет новое поле __static_attributes__ класса именами атрибутов этого класса, доступ к которым осуществляется через self.X из любой функции в его теле.

  • gh-115776: Массив значений, структура PyDictValues теперь встраивается в объект при выделении. Это обеспечивает лучшую производительность в общем случае и не так сильно снижает производительность, когда __dict__ объекта материализуется.

  • gh-108362: Реализуйте инкрементный циклический сборщик мусора. Благодаря пошаговому сбору старого поколения отпадает необходимость в полном сканировании кучи. Это может значительно сократить максимальное время паузы для программ с большими кучами.

    Сократите количество поколений с трех до двух. Старое поколение разделено на два пространства, «посещенное» и «ожидающее».

    Сбор происходит в два этапа:: * Формируется приращение из молодого поколения и небольшой части посещенного пространства. * Это приращение сканируется, а выжившие перемещаются в конец посещенного пространства.

    Когда место для сбора становится пустым, эти два места меняются местами.

  • gh-109870: Dataclasses теперь вызывает exec() один раз для каждого dataclass, а не один раз для каждого добавляемого метода. Это может ускорить создание класса данных на 20 %.

  • gh-97901: Тип Mime text/rtf теперь поддерживается mimetypes.

  • bpo-24612: Улучшение SyntaxError, возникающего, когда после оператора появляется „not“. Исправление от Пабло Галиндо

Библиотека

  • gh-117467: Сохраняйте право собственности на почтовый ящик при переписывании в mailbox.mbox.flush(). Исправление Тони Маунтифилда.

  • gh-114848: Поднимайте FileNotFoundError, если getcwd() возвращает „(unreachable)“, что может произойти в Linux >= 2.6.36 с glibc < 2.27.

  • gh-117459: asyncio.asyncio.run_coroutine_threadsafe() теперь сохраняет трассировку CancelledError, TimeoutError и InvalidStateError, которые поднимаются в корутине.

  • gh-117337: Устраните недокументированные функции glob.glob0() и glob.glob1(). Вместо них используйте glob.glob() и передавайте каталог в ее аргументе root_dir.

  • gh-117348: Рефакторинг configparser.RawConfigParser._read() для уменьшения циклометрической сложности и улучшения понятности.

  • gh-66449: configparser.ConfigParser теперь принимает неименованные секции перед именованными, если они настроены на это.

  • gh-88014: В документации к gzip.GzipFile в модуле gzip объясните тип данных необязательного аргумента конструктора mtime и порекомендуйте mtime = 0 для генерации детерминированных потоков.

  • gh-117310: Исправлен маловероятный ранний и дополнительный Py_DECREF, вызывавший сбой в ssl при создании нового _ssl._SSLContext, если CPython был собран неправдоподобно, так что список шифров по умолчанию был пуст или библиотека SSL, с которой он был связан, сообщала о сбое из своего C SSL_CTX_set_cipher_list(). API.

  • gh-117294: Теперь DocTestCase сообщается как пропущенный, если все примеры в доктесте пропущены.

  • gh-98966: В subprocess поднимите более информативное сообщение, когда stdout=STDOUT.

  • gh-117225: doctest: выводить «and X failed» только при ненулевом значении, не выводить «1 items» во множественном числе. Исправление от Хьюго ван Кеменаде.

  • gh-117205: Ускорьте compileall.compile_dir() на 20% при использовании многопроцессорной обработки, увеличив chunksize.

  • gh-117178: Исправление регрессии в ленивой загрузке самореферентных модулей, введенной в gh-114781.

  • gh-112383: Исправьте работу модуля dis с инструкциями ENTER_EXECUTOR.

  • gh-117182: Ленивая загрузка модулей, изменяющих свои собственные __class__, больше не возвращает __class__ в types.ModuleType.

  • gh-117084: Исправьте извлечение zipfile для записей каталогов с именем, содержащим обратные косые черты, в Windows.

  • gh-117110: Исправлена ошибка, из-за которой подклассы typing.Any не могли быть инстанцированы с аргументами. Исправление Криса Фу.

  • gh-109653: Отложенный импорт select в importlib.metadata и importlib.resources для ускорения на 14%.

  • gh-70647: Начните период депривации для текущего поведения datetime.datetime.strptime() и time.strptime(), которые всегда не могут разобрать строку даты с ValueError, включающую день месяца, например strptime("02-29", "%m-%d"), когда год не указан и дата приходится на 29 февраля. Это поможет избежать того, что пользователи будут находить новые ошибки каждые четыре года из-за естественного ошибочного предположения об API при разборе частичных значений даты.

  • gh-116987: Исправлено inspect.findsource() для объектов кода класса.

  • gh-114099: Измените стандартную библиотеку, чтобы учесть различия платформ iOS.

  • gh-90872: В Windows subprocess.Popen.wait() больше не вызывает WaitForSingleObject() с отрицательным таймаутом: передавайте 0 мс, если таймаут отрицательный. Исправление Виктора Стиннера.

  • gh-116957: configparser: Не оставлять значения ConfigParser в недопустимом состоянии (хранятся в виде списка, а не строки) после того, как предыдущее чтение вызвало ошибку DuplicateSectionError или DuplicateOptionError.

  • gh-115538: _io.WindowsConsoleIO теперь выдают предупреждение, если в качестве аргумента filedescriptor передается булево значение.

  • gh-90095: Игнорируйте пустые строки и комментарии в .pdbrc

  • gh-106531: Обновили zipfile._path из zipp 3.18, обеспечив лучшую совместимость с PyPy, лучшую производительность glob для глубоко вложенных zip-файлов, а также предоставив внутренний доступ к CompleteDirs.inject для использования в других тестах (например, importlib.resources).

  • gh-63207: В Windows time.time() теперь использует часы GetSystemTimePreciseAsFileTime() с разрешением лучше, чем 1 us, вместо часов GetSystemTimeAsFileTime(), которые имеют разрешение 15,6 мс. Исправление Виктора Стиннера.

  • gh-116764: Восстановите поддержку None и других ложных значений в функциях urllib.parse parse_qs() и parse_qsl(). Кроме того, теперь они вызывают ошибку TypeError для ненулевых целых чисел и непустых последовательностей.

  • gh-116811: В PathFinder.invalidate_caches, делегировать в MetadataPathFinder.invalidate_caches.

  • gh-116647: Исправление рекурсивных дочерних элементов в классах данных

  • gh-113171: Исправлены различные ложные срабатывания и ложные отрицательные результаты в

    Также в соответствующих атрибутах ipaddress.IPv4Network и ipaddress.IPv6Network.

  • gh-63283: В encodings.idna теперь допустимо любое написание префикса ACE (xn--) с заглавной буквы. Исправление Пепийна де Воса и Закери Спитца.

  • gh-71042: Добавьте platform.android_ver(), который предоставляет информацию об устройстве и ОС на Android.

  • gh-73468: Добавлена новая функция math.fma(), оборачивающая операцию fma() из C99: объединенная функция умножения-аддирования. Исправление от Марка Дикинсона и Виктора Стиннера.

  • gh-116608: Функции importlib.resources is_resource(), open_binary(), open_text(), path(), read_binary() и read_text() являются устаревшими и поддерживают подкаталоги через несколько позиционных аргументов. Функция contents() также позволяет использовать подкаталоги, но остается устаревшей.

  • gh-116484: Измените автоматически генерируемые имена виджетов tkinter.Checkbutton, чтобы избежать коллизий с автоматически генерируемыми именами виджетов tkinter.ttk.Checkbutton в одном родительском виджете.

  • gh-114314: В ctypes данные ctype теперь хранятся в объектах типа напрямую, а не в подклассе dict. Это внутреннее изменение, которое не должно повлиять на использование.

  • gh-116401: Исправьте блокировку os.fwalk() и shutil.rmtree() при открытии именованной трубы.

  • gh-71052: Реализуйте ctypes.util.find_library() на Android.

  • gh-90535: Исправьте поддержку значений интервала > 1 в logging.TimedRotatingFileHandler для when='MIDNIGHT' и when='Wx'.

  • gh-113308: Удалите некоторые внутренние защищенные части из uuid: _has_uuid_generate_time_safe, _netbios_getnode, _ipconfig_getnode и _load_system_functions. Они не использовались.

  • gh-115627: Исправьте в модуле ssl обработку ошибок при завершении соединения пиром. Теперь вместо ошибки EOFError выбрасывается OSError с соответствующим кодом ошибки.

  • gh-114847: Ускорение os.path.realpath() на платформах, отличных от Windows.

  • gh-114271: Исправление гонки в threading.Thread.join().

    threading._MainThread теперь всегда представляет главный поток основного интерпретатора.

    PyThreadState.on_delete и PyThreadState.on_delete_data были удалены.

  • gh-113538: Добавьте методы asyncio.Server.close_clients() и asyncio.Server.abort_clients(), которые позволяют более принудительно закрыть сервер asyncio.

  • gh-85287: Изменяет кодеки Unicode, чтобы они возвращали UnicodeEncodeError или UnicodeDecodeError, а не просто UnicodeError.

  • gh-113548: pdb теперь позволяет использовать CLI-аргументы для pdb -m.

  • gh-112948: Сделать завершение pdb похожим на Python REPL

  • gh-105866: Исправлена ошибка _get_slots, приводившая к ошибке при определении классов данных со слотами и weakref_slot.

  • gh-96471: Добавьте завершение asyncio.Queue с методом shutdown().

  • gh-89739: Модуль zipimport теперь может читать файлы ZIP64.

  • bpo-33533: asyncio.as_completed() теперь возвращает объект, который одновременно является асинхронным итератором и обычным итератором. Новый шаблон асинхронной итерации позволяет легче соотнести предыдущие задачи с их завершенными результатами. Это более близкое соответствие шаблону итерации concurrent.futures.as_completed(). Автор исправления - Джастин Артур.

  • bpo-27578: inspect.getsource() (и связанные с ней функции) работают с пустыми файлами модулей, возвращая '\n' (или разумный эквивалент) вместо того, чтобы поднимать OSError. Исправление от Kernc.

  • bpo-37141: Принимает итерацию разделителей в asyncio.StreamReader.readuntil(), останавливаясь, когда встречается один из них.

  • gh-66543: Сделайте mimetypes.guess_type() корректным разбор URL, содержащих только имя хоста, URL, содержащих фрагмент или запрос, и имен файлов, содержащих только UNC sharepoint, в Windows. Основано на исправлении Донг-Хи На.

  • bpo-15010: unittest.TestLoader.discover() теперь сохраняет исходное значение unittest.TestLoader._top_level_dir и восстанавливает его в конце вызова.

Документация

  • gh-115977: Удалите ссылки на совместимость с Emscripten.

  • gh-114099: Добавьте руководство по платформе iOS и отметьте модули, недоступные на iOS.

  • gh-91565: Изменения в файлах документации и выводах конфигурации, чтобы отразить новое местоположение для сообщения об ошибках - т.е. GitHub, а не bugs.python.org.

Тесты

  • gh-83434: Отключение вывода JUnit XML (опция командной строки``–junit-xml=FILE``) в regrtest при поиске утечек ссылок (опция``-R``). Исправление Виктора Стиннера.

  • gh-117187: Исправление XML-тестов для ванильного Expat <2.6.0.

  • gh-116333: Тесты, связанные с TLS (коды ошибок и т. д.), были обновлены, чтобы более мягко относиться к определенным строкам сообщений об ошибках и поведению, как это наблюдается в форках OpenSSL BoringSSL и AWS-LC.

  • gh-117089: Консолидированные тесты для importlib.metadata в их собственном пакете metadata.

  • gh-115979: Обновите test_importlib, чтобы он работал под WASI SDK 21.

  • gh-112536: Добавьте –tsan в test.regrtest для запуска тестов TSAN с разумным временем выполнения. Исправление от Donghee Na.

  • gh-116307: Добавлен помощник импорта isolated_modules, поскольку CleanImport не удаляет модули, импортированные в контексте. Используйте его в тестах importlib.resources, чтобы не оставлять mod, мешающий тестам importlib.metadata.

Построить

  • gh-114736: Заставьте сборки WASI использовать WASI SDK 21.

  • gh-115983: Пропустите сборку тестовых модулей, которые должны быть собраны как общие под WASI.

  • gh-71052: Добавьте скрипт сборки Android и инструкции.

Windows

  • gh-117267: Обеспечьте последовательное поведение DirEntry.stat().st_ctime с os.stat() в период устаревания st_ctime, содержащее то же значение, что и st_birthtime. После периода устаревания st_ctime будет временем изменения метаданных (или недоступным через DirEntry), и только st_birthtime будет содержать время создания.

  • gh-116195: Улучшает производительность os.getppid(), используя альтернативный системный API, если он доступен. Внесено vxiiduu.

  • gh-88494: В Windows time.monotonic() теперь использует часы QueryPerformanceCounter() с разрешением лучше, чем 1 us, вместо часов GetTickCount64(), которые имеют разрешение 15,6 мс. Исправление Виктора Стиннера.

  • gh-116773: Исправьте экземпляры <_overlapped.Overlapped object at 0xXXX> still has pending operation at deallocation, the process may crash.

  • gh-91227: Исправьте реализацию Asyncio ProactorEventLoop так, чтобы отправка дейтаграммы на адрес, который не прослушивается, не препятствовала получению других дейтаграмм.

  • gh-115119: При сборке модуля _decimal перешли с вендорного кода libmpdecimal на отдельно размещенный внешний пакет в репозитории cpython-source-deps.

C API

  • gh-117642: Исправьте реализацию PEP 737 для %#T и %#N.

  • gh-87193: _PyBytes_Resize() теперь можно вызывать для байтовых объектов с количеством ссылок > 1, включая 1-байтовые байтовые объекты. Он создает новый байтовый объект и уничтожает старый, если количество ссылок на него > 1.

  • gh-117021: Исправление целочисленного переполнения в PyLong_AsPid() на не-Windows 64-битных платформах.

  • gh-115756: PyCode_GetFirstFree() теперь является ustable API и переименован в PyUnstable_Code_GetFirstFree(). (Внесено Богданом Романюком в gh-115781)

  • gh-116869: Добавьте test_cext тест: создайте расширение C для проверки того, выдает ли Python C API предупреждения компилятора C. Исправление Виктора Стиннера.

  • gh-116869: Снова сделайте C API совместимым с флагом компилятора -Werror=declaration-after-statement. Исправление Виктора Стиннера.

  • gh-116936: Добавьте PyType_GetModuleByDef() в ограниченный C API. Исправление Виктора Стиннера.

  • gh-116809: Восстановление удаленной приватной функции _PyErr_ChainExceptions1(). Исправление от Виктора Стиннера.

  • gh-115754: В ограниченном API C версии 3.13 получение синглтонов Py_None, Py_False, Py_True, Py_Ellipsis и Py_NotImplemented теперь реализовано в виде вызовов функций на уровне стабильного ABI, чтобы скрыть детали реализации. Получение этих констант по-прежнему возвращает заимствованные ссылки. Исправление Виктора Стиннера.

  • gh-115754: Добавьте функции Py_GetConstant() и Py_GetConstantBorrowed(), чтобы получить константы. Например, Py_GetConstant(Py_CONSTANT_ZERO) возвращает strong reference к константе ноль. Исправление Виктора Стиннера.

  • gh-111696: Добавьте поддержку форматов %T, %T#, %N и %N# в PyUnicode_FromFormat(): форматирование полного имени типа объекта и типа: вызов PyType_GetModuleName(). Дополнительные сведения см. в разделе PEP 737. Исправление Виктора Стиннера.

  • gh-111696: Добавьте функцию PyType_GetModuleName() для получения имени модуля типа. Эквивалентно получению атрибута type.__module__. Исправление Эрика Сноу и Виктора Стиннера.

  • gh-111696: Добавьте функцию PyType_GetFullyQualifiedName(), чтобы получить полное имя типа. Эквивалентно f"{type.__module__}.{type.__qualname__}", или type.__qualname__, если type.__module__ не является строкой или равно "builtins". Исправление Виктора Стиннера.

  • gh-85283: Расширения fcntl, grp, pwd, termios, _statistics и _testconsole Расширения на C теперь собираются с помощью limited C API. Исправление Виктора Стиннера.

  • gh-111140: Добавьте дополнительные флаги к PyLong_AsNativeBytes() и PyLong_FromNativeBytes(), чтобы позволить вызывающей стороне определить, как обрабатывать крайние случаи, связанные со значениями, которые заполняют весь буфер.

  • gh-113024: Добавить функцию PyObject_GenericHash().

Python 3.13.0 alpha 5

Дата выхода: 2024-03-12

Безопасность

Ядро и встроенные модули

  • gh-116604: Соблюдение статуса сборщика мусора при косвенных вызовах через PyErr_CheckSignals() и прерыватель оценки. Исправление от Пабло Галиндо

  • gh-112087: list теперь совместимы с реализацией PEP 703.

  • gh-116381: Добавить специализацию для CONTAINS_OP.

  • gh-116296: Исправление возможной утечки в обработке внутренних ошибок object.__reduce__().

  • gh-115823: Правильно вычислять диапазоны ошибок в парсере при возникновении исключений SyntaxError, вызванных недопустимыми последовательностями байтов. Исправление от Pablo Galindo

  • gh-115778: Добавьте аннотацию tierN для определения инструкций в DSL-интерпретаторе.

  • gh-115733: Исправление сбоя при вызове next() на итераторах исчерпанных списков.

  • gh-115700: Этап сборки regen-cases теперь работает под Windows.

  • gh-115347: Исправлена ошибка, из-за которой при запуске Python с -OO docstring заменялся лишним NOP.

  • gh-115323: Сделайте сообщение об ошибке более содержательным для случаев, когда bytearray.extend() вызывается с объектом str.

  • gh-112175: Теперь у каждого PyThreadState есть свой eval_breaker, что позволяет прерывать определенные потоки.

  • gh-115154: Исправлена ошибка, из-за которой функция tokenize.untokenize() некорректно обрабатывала именованные литералы юникода. Исправление от Пабло Галиндо

  • gh-112433: Добавьте возможность принудительного выравнивания ctypes.Structure с помощью нового атрибута _align_ в классе.

  • gh-104090: Система отслеживания ресурсов многопроцессорной обработки теперь завершается с ненулевым кодом состояния, если была обнаружена утечка ресурсов. В противном случае он по-прежнему завершается с кодом состояния 0.

  • gh-105858: Улучшены конструкторы для узлов ast. Аргументы списочных типов теперь по умолчанию приводятся к пустому списку, если они опущены, а необязательные поля по умолчанию приводятся к None. У узлов AST теперь есть атрибут __annotations__ с ожидаемыми типами их атрибутов. Передача нераспознанных дополнительных аргументов в AST-узлы устарела и станет ошибкой в Python 3.15. Пропуск обязательного аргумента в AST-узле является устаревшим и станет ошибкой в Python 3.15. Исправление от Jelle Zijlstra.

  • gh-101860: Выставить атрибут __name__ на свойстве.

  • gh-96497: Исправление некорректного разрешения искаженных переменных класса, используемых в выражениях присваивания в осмыслениях.

Библиотека

  • gh-116600: Исправьте repr() для глобальных членов Flag.

  • gh-116349: platform.java_ver() устарел и будет удален в версии 3.15. Она была практически не протестирована, имела запутанный API и была полезна только для поддержки Jython.

  • gh-116143: Исправление гонки в pydoc _start_server, устраняющее окно, в котором _start_server может вернуть поток, который «обслуживается», но без установленного docserver.

  • gh-116127: typing: реализуйте PEP 705, который добавляет поддержку typing.ReadOnly в typing.TypedDict.

  • gh-116325: typing: поднимать SyntaxError вместо AttributeError при прямых ссылках на пустые строки.

  • gh-115957: При вызове asyncio.TaskGroup.create_task на неактивном asyncio.TaskGroup данный корутин будет закрыт (что предотвратит RuntimeWarning).

  • gh-115978: Отключите preadv(), readv(), pwritev() и writev() на WASI.

    В wasmtime для WASI 0.2 эти функции не проходят проверку test_posix (https://github.com/bytecodealliance/wasmtime/issues/7830).

  • gh-88352: Исправлено вычисление времени следующего переноса в обработчике logging.TimedRotatingFileHandler. computeRollover() теперь всегда возвращает временную метку, большую, чем указанное время, и корректно работает при смене DST. doRollover() больше не перезаписывает уже свернутый файл, что спасает от потери данных при запуске в полночь или при повторной смене времени при переходе на летнее время.

  • gh-87115: Установите __main__.__spec__ на None при запуске скрипта с pdb.

  • gh-76511: Исправление ошибки UnicodeEncodeError в email.Message.as_string(), возникающей, когда сообщение, заявленное как сообщение с набором символов ascii, на самом деле содержит не-ascii символы. Теперь символы, не относящиеся к ascii, заменяются символом замены U+FFFD, как в обработчике ошибки replace.

  • gh-89547: Добавлена поддержка вложенных специальных форм типизации типа Final[ClassVar[int]].

  • gh-65824: Улучшите подсказку less в pydoc.

  • gh-116040: [Enum] исправляет вызовы побочных значений, когда второе значение является ложным; например, Cardinal(1, 0)

  • gh-115821: [Enum] Улучшение сообщения об ошибке при вызове super().__new__() в пользовательском __new__.

  • gh-85644: Используйте переменную окружения XDG_CURRENT_DESKTOP в webbrowser для проверки рабочего стола. Предпочтите ее устаревшей GNOME_DESKTOP_SESSION_ID для обнаружения GNOME.

  • gh-75988: Исправлено unittest.mock.create_autospec() для передачи вызова обернутому объекту, чтобы вернуть реальный результат.

  • gh-115881: Исправлена проблема, из-за которой ast.parse() неправильно отмечал условные контекстные менеджеры (такие как with (x() if y else z()): ...) как недопустимый синтаксис, если передавался feature_version=(3, 8). Это отменяет изменения в грамматике, сделанные в рамках gh-94949.

  • gh-115886: Исправьте молчаливое усечение имени со встроенным нулевым символом в multiprocessing.shared_memory.SharedMemory.

  • gh-115532: Добавьте оценку плотности ядра в модуль статистики.

  • gh-115714: На WASI модуль time больше не получает время процесса, используя times() или CLOCK_PROCESS_CPUTIME_ID, системный API является ненадежным и, скорее всего, будет удален из WASI. Затронутые функции часов возвращаются к вызову clock().

  • gh-115809: Улучшен алгоритм вычисления того, какие свернутые файлы журнала следует удалить в logging.TimedRotatingFileHandler. Теперь он надежен для обработчиков без namer и с произвольным детерминированным namer, который оставляет часть времени даты в имени файла неизменной.

  • gh-74668: urllib.parse функции parse_qs() и parse_qsl() теперь поддерживают байтовые аргументы, содержащие необработанные и закодированные в процентах данные не в формате ASCII.

  • gh-67044: csv.writer() теперь всегда заключает в кавычки или экранирует '\r' и '\n', независимо от значения линейного определителя.

  • gh-115712: Восстановите поддержку разделителя пробела с skipinitialspace=True в csv. csv.writer() теперь заключает в кавычки пустые поля, если разделителем является пробел и skipinitialspace равен true, и вызывает исключение, если кавычки невозможны.

  • gh-112364: Исправлено ast.unparse() для обработки format_spec с ", ' или \\. Исправлено Фрэнком Хоффманом.

  • gh-112997: Прекратите регистрировать потенциально чувствительные аргументы обратного вызова в asyncio, если не активен режим отладки.

  • gh-114914: Исправлена проблема, из-за которой заброшенные StreamWriter не собирали мусор.

  • gh-111358: Исправьте ошибку в asyncio.BaseEventLoop.shutdown_default_executor(), чтобы таймаут, передаваемый в coroutine, вел себя так, как ожидается.

  • gh-115618: Исправлено некорректное уменьшение количества ссылок для аргумента None в методах property getter(), setter() и deleter().

  • gh-112720: Переработайте dis.ArgResolver, чтобы сделать возможным подкласс и изменить способ интерпретации аргументов перехода.

  • gh-112006: Исправление inspect.unwrap() для типов с дескриптором данных __wrapper__. Исправьте inspect.Signature.from_callable() для встроенных модулей classmethod() и staticmethod().

  • gh-101293: Поддержка вызываемых типов с методом __call__() и типов с методами __new__() и __init__(), установленными на методы класса, статические методы, связанные методы, частичные функции и другие типы методов и дескрипторов в inspect.Signature.from_callable().

  • gh-103092: Изолировать _lsprof (применить PEP 687).

  • gh-113942: pydoc больше не пропускает глобальные функции, реализованные как встроенные методы, такие как MethodDescriptorType и WrapperDescriptorType.

  • gh-115256: Добавлено DeprecationWarning при обращении к атрибуту tarfile объектов TarInfo. Атрибут никогда не используется внутренне и присоединяется к TarInfo только в том случае, если tarfile открыт в режиме записи, а не в режиме чтения. Атрибут создает ненужный цикл ссылок, который может привести к повреждению, если не закрыть хэндл после записи tarfile.

  • gh-115197: urllib.request больше не разрешает имя хоста перед проверкой его на соответствие системному списку обхода прокси-серверов в macOS и Windows.

  • gh-113812: DatagramTransport.sendto() теперь будут отправлять дейтаграммы нулевой длины, если их вызвать с пустым объектом bytes. Управление транспортным потоком теперь также учитывает заголовок дейтаграммы при расчете размера буфера.

  • gh-114763: Защищает модули, загруженные с помощью importlib.util.LazyLoader, от условий гонки, когда несколько потоков пытаются получить доступ к атрибутам до завершения загрузки.

  • gh-114709: posixpath.commonpath() теперь вызывает исключение ValueError при передаче пустого итерабля. Ранее вызывалось исключение IndexError.

    posixpath.commonpath() теперь вызывает исключение TypeError при передаче None. Ранее вызывалось исключение ValueError.

  • gh-114610: Исправлена ошибка, при которой pathlib.PurePath.with_stem() преобразовывала непустой суффикс пути в стебель, когда получала пустой аргумент stem. Теперь он вызывает ValueError, как и pathlib.PurePath.with_suffix() при вызове пути с пустым стеблем при непустом аргументе suffix.

  • gh-107361: Добавьте ssl.VERIFY_X509_PARTIAL_CHAIN и VERIFY_X509_STRICT к стандартному SSL-контексту, созданному с помощью ssl.create_default_context().

  • gh-112281: Разрешить создание union of types для typing.Annotated с нехешируемыми метаданными.

  • gh-111775: Исправьте importlib.resources.simple.ResourceHandle.open() для текстового режима, добавьте недостающий аргумент stream.

  • gh-90095: Заставьте .pdbrc и -c работать с любыми допустимыми командами pdb.

  • gh-107625: Вызывает configparser.ParsingError из read() и read_file() методов configparser.ConfigParser, если клавиша без соответствующего значения продолжается (то есть за ней следует строка с отступом).

  • gh-107155: Исправьте неправильный вывод help(x), где x - это lambda функция, имеющая __annotations__ словарный атрибут с "return" ключом.

  • gh-57141: Добавьте возможность неглубокого сравнения с filecmp.dircmp, как с filecmp.cmp(). Оригинальный патч Стивена Уорда. Улучшено Тобиасом Раутенкранцем

  • gh-69990: Profile.print_stats() был улучшен для приема нескольких аргументов сортировки. Исправлено Chiu-Hsiang Hsu и Furkan Onder.

  • gh-104061: Добавить константу socket.SO_BINDTOIFINDEX.

  • gh-60346: Исправьте несоответствие ArgumentParser с parse_known_args.

  • gh-102389: Добавить windows_31j в псевдонимы для кодека cp932

  • gh-72249: functools.partial`s of :func:`repr() было улучшено, чтобы включить имя module. Исправлено Фурканом Ондером и Анилкой Барри.

  • gh-100985: Обновление HTTPSConnection для последовательного обертывания IPv6-адресов при использовании прокси.

  • gh-100884: email: исправление неправильной расстановки запятых в списках адресов на несколько строк в сочетании с кодировкой unicode.

  • gh-95782: Исправление того, что io.BufferedReader.tell(), io.BufferedReader.seek(), _pyio.BufferedReader.tell(), io.BufferedRandom.tell(), io.BufferedRandom.seek() и _pyio.BufferedRandom.tell() могут возвращать отрицательные смещения.

  • gh-96310: Исправьте ошибку в argparse, когда подавлялись все опции во взаимоисключающей группе.

  • gh-93205: Исправлена ошибка в logging.handlers.TimedRotatingFileHandler, когда несколько экземпляров обработчика поворота, указывающих на файлы с одинаковым именем, но разными расширениями, конфликтовали и не удаляли нужные файлы.

  • bpo-31116: Добавить кодировку Z85 в base64.

  • bpo-44865: Добавьте недостающий вызов функции локализации в argparse.

  • bpo-43952: Исправьте multiprocessing.connection.Listener.accept(), чтобы он принимал пустые байты в качестве authkey. Непринятие пустых байтов в качестве ключа приводит к бесконечному зависанию.

  • bpo-42125: linecache: получить имя модуля из __spec__, если оно доступно. Это позволяет получить исходный код модуля __main__, если используется пользовательский загрузчик.

  • bpo-41122: Неправильная передача аргументов в functools.singledispatchmethod() теперь приводит к ошибке TypeError, а не к выходу индекса за пределы границ.

  • bpo-40818: Asyncio REPL теперь запускает sys.__interactivehook__ при старте. Реализация sys.__interactivehook__ по умолчанию обеспечивает автозавершение в asyncio REPL. Автор патча - Rémi Lapeyre.

  • bpo-33775: Добавьте текст справки „default“ и „version“ для локализации в argparse.

Документация

Тесты

  • gh-71052: Добавьте исключения из тестов для поддержки запуска тестового набора на Android.

  • gh-71052: Включите test_concurrent_futures на платформах, поддерживающих многопоточность, но не многопроцессорность.

  • gh-115796: Заставьте „_testinternalcapi.assemble_code_object“ построить таблицу исключений для объекта кода.

  • gh-115720: Тесты на утечки (-R, --huntrleaks) теперь показывают сводку по количеству утечек, найденных в каждой итерации.

  • gh-115122: Добавьте опцию --bisect в прогонщик тестов regrtest: запускайте неудачные тесты с test.bisect_cmd, чтобы определить неудачные тесты. Исправление Виктора Стиннера.

  • gh-115596: Исправьте ProgramPriorityTests в test_os, постоянно изменяя приоритет процесса.

  • gh-115556: В Windows запятые, переданные в аргументах Tools\buildbot\test.bat и PCbuild\\rt.bat, теперь обрабатываются правильно.

  • gh-115420: Исправьте перевод целей обработчиков исключений на _testinternalcapi.optimize_cfg.

  • gh-115376: Исправление сегфайта в _testinternalcapi.compiler_codegen при плохом вводе.

Построить

  • gh-116313: Обеспечение работы сборок WASI под wasmtime 18 с примитивами WASI 0.2/preview2.

  • gh-71052: Измените sys.platform Android с "linux" на "android".

  • gh-116117: Резервный перенос PR #42 от libb2 для исправления компиляции CPython на 32-битных Windows с clang-cl.

  • gh-71052: Исправление нескольких проблем сборки Android

  • gh-114099: Добавлен проект тестового стенда для запуска тестового набора на iOS.

  • gh-115350: Исправление сборки модуля ctypes с определенным параметром -DWIN32_LEAN_AND_MEAN

  • gh-111225: Связывание модулей расширения с libpython на Android.

  • gh-115737: Имя установки libPython теперь правильно задается для нефреймворковых сборок macOS.

  • gh-114099: Добавлены цели Makefile для поддержки компиляции сборки iOS-совместимого фреймворка.

Windows

  • gh-116012: Убедитесь, что значение GetLastError() сохраняется при выполнении операций GIL.

  • gh-115582: Сборка расширений, предназначенных для свободно-поточных сборок CPython, теперь требует компиляции с /DPy_GIL_DISABLED вручную при обычной установке. Ожидается, что это изменится в будущих выпусках.

  • gh-115554: Программа установки теперь более строго относится к обновлению Python Launcher для Windows. Как правило, у большинства пользователей установлена только одна пусковая установка, и они не увидят никакой разницы. Если установлено несколько пусковых установок, возможность установки пусковой установки будет отключена до тех пор, пока не будут удалены все пусковые установки, кроме одной. Понижение версии пусковой установки (которое никогда не было разрешено) теперь блокируется более явно.

  • gh-115543: Python Launcher для Windows теперь может определять Python 3.13 при установке из Microsoft Store и будет устанавливать Python 3.12 по умолчанию, если установлено значение PYLAUNCHER_ALLOW_INSTALL.

macOS

  • gh-116145: Обновление программы установки macOS до версии Tcl/Tk 8.6.14.

IDLE

  • gh-88516: На macOS отображение значка прокси в строке заголовка окна редактора в соответствии с поведением платформы.

Инструменты/демоверсии

  • gh-100176: Удалить устаревшие Tools/{io,cc,string}bench

  • bpo-45101: Добавьте согласованность в использовании сообщений IO между двумя версиями python-config.

C API

  • gh-114626: Добавьте снова имя _PyCFunctionFastWithKeywords, по ошибке удаленное в Python 3.13 alpha 4. Сохраните старое приватное имя _PyCFunctionFastWithKeywords (Python 3.7) в качестве псевдонима для нового публичного имени PyCFunctionFastWithKeywords (Python 3.13a4). Исправление Виктора Стиннера.

  • gh-111418: Добавьте PyHASH_MODULUS, PyHASH_BITS, PyHASH_INF и PyHASH_IMAG. макросы на языке C. Патч от Sergey B Kirpichev.

Python 3.13.0 alpha 4

Дата выхода: 2024-02-15

Безопасность

  • gh-115399: Обновление libexpat до версии 2.6.0

  • gh-115243: Исправление возможных сбоев в collections.deque.index() при одновременном изменении deque.

Ядро и встроенные модули

  • gh-112087: Для пустого обратного итератора список будет приведен к reversed(). Исправление от Donghee Na

  • gh-114570: Добавьте исключение PythonFinalizationError. Это исключение, производное от RuntimeError, поднимается, когда операция блокируется во время Python finalization. Исправление Виктора Стиннера.

  • gh-114695: Добавьте функцию sys._clear_internal_caches(), которая очищает все внутренние кэши, связанные с производительностью (и откажитесь от менее общей функции sys._clear_type_cache()).

  • gh-114828: Исправление сбоев компиляции в нестандартных примерах кода, использующих super() внутри comprehension в теле класса.

  • gh-112069: Адаптируйте методы set и frozenset к Argument Clinic.

  • gh-115011: Сеттеры для членов с типом unsigned integer теперь поддерживают тот же диапазон допустимых значений для объектов, у которых есть метод __index__(), что и для int.

  • gh-114887: Изменена проверка типа сокета в create_datagram_endpoint(), чтобы принимать все непотоковые сокеты. Это исправляет регрессию в совместимости с сырыми сокетами.

  • gh-114944: Исправляет гонку между PyParkingLot_Park и _PyParkingLot_UnparkAll.

  • gh-113462: Ограничивает количество версий, которые может использовать один класс. Предотвращает использование несколькими непутевыми классами всех номеров версий.

  • gh-76763: Встроенная функция chr() теперь всегда поднимает значение ValueError для значений за пределами допустимого диапазона. Ранее она возвращала значение OverflowError для очень больших или маленьких значений.

  • gh-114806: Больше не специализирует вызовы классов, если у этих классов есть метаклассы. Исправлена ошибка, при которой не вызывался метод __call__ метакласса.

  • gh-107944: Улучшено сообщение об ошибке при вызове функции с плохими аргументами в виде ключевых слов через getargs

  • gh-112529: Свободно-поточная сборка больше не выделяет место для структуры PyGC_Head в объектах, поддерживающих циклическую сборку мусора. В качестве замены используется ряд других полей и структур данных, включая ob_gc_bits, ob_tid и внутренние структуры данных mimalloc.

  • gh-114456: Снижение предела рекурсии в отладочной сборке WASI.

  • gh-114083: Компилятор применяет складывание LOAD_CONST со следующей инструкцией в отдельном проходе перед другими оптимизациями. Это позволяет использовать потоки переходов при определенных обстоятельствах.

  • gh-114388: Исправление ошибки RuntimeWarning, возникающей при присвоении целочисленного значения, не являющегося экземпляром int, атрибуту, соответствующему члену C struct из type. T_UINT и T_ULONG. Исправление двойной RuntimeWarning, возникающей при присвоении отрицательного целочисленного значения атрибуту, соответствующему члену C struct типа T_UINT.

  • gh-114265: Компилятор распространяет номера строк перед оптимизацией, что дает больше возможностей для оптимизации и устраняет необходимость в использовании хака guarantee_lineno_for_exits.

  • gh-112529: Свободно-поточная сборка теперь имеет собственную потокобезопасную реализацию GC, которая использует mimalloc для поиска объектов, отслеживаемых GC. В отличие от существующей реализации GC, она не является поколенческой.

  • gh-114050: Исправление ошибки сегментации, вызванной некорректной строкой формата в исключении TypeError, когда в int передается более двух аргументов.

  • gh-112354: Инструкция END_FOR теперь выводит только одно значение. Это сделано для лучшей поддержки боковых выходов в циклах.

  • gh-113884: Сделать queue.SimpleQueue потокобезопасным, когда GIL отключен.

  • gh-114058: Реализуйте основы устранения избыточности уровня 2.

  • gh-113939: frame.clear(): Очищает и frame.f_locals, а не только быстрые локали. Это актуально после обращения к frame.f_locals, который будет содержать также ссылки на все локали.

  • gh-112050: Преобразовать collections.deque для использования Аргумент Клиника.

  • gh-112050: Сделайте методы на collections.deque потокобезопасными, когда GIL отключен.

  • gh-113464: Добавьте опцию (--enable-experimental-jit для сборок на основе configure``или ``--experimental-jit для сборок на основе PCbuild) для сборки экспериментального компилятора just-in-time, основанного на copy-and-patch.

  • gh-113055: Сделайте interp->obmalloc указателем. Для интерпретаторов, разделяющих состояние с основным интерпретатором, он указывает на ту же самую статическую структуру памяти. Для интерпретаторов с собственным состоянием obmalloc выделяется из кучи. Добавьте free_obmalloc_arenas(), которая освободит арены obmalloc и структуры дерева радикса для интерпретаторов с собственным состоянием obmalloc.

  • gh-55664: Добавьте предупреждение при создании type с использованием словаря пространства имен с нестроковыми ключами. Исправлено Дэниелом Урбаном и Фурканом Ондером.

  • gh-104530: Используйте родные переменные условий Win32.

Библиотека

  • gh-115392: Исправлена ошибка в doctest, когда для оформленных функций сообщались неверные номера строк.

  • gh-114563: Исправлено несколько ошибок format() при использовании реализации Decimal на C: * утечка памяти в некоторых редких случаях при использовании опции формата z (coerce negative 0) * некорректный вывод при применении опции формата z к типу F (фиксированная точка с заглавной NAN / INF) * некорректный вывод при применении опции формата # (альтернативная форма)

  • gh-102840: Исправление ошибок при выполнении операций floordiv, mod или divmod между экземплярами fractions.Fraction и complex.

  • gh-115165: Большинство исключений теперь игнорируются при попытке установить атрибут __orig_class__ для объектов, возвращаемых при вызове общих псевдонимов typing (включая общие псевдонимы, созданные с помощью typing.Annotated). Ранее игнорировался только AttributeError. Исправление Дэйва Шоули.

  • gh-112903: Исправление ошибки «issubclass() arg 1 must be a class» в некоторых случаях множественного наследования с родовыми псевдонимами (регрессия в ранних альфа-версиях 3.13).

  • gh-115133: Исправьте тесты для XMLPullParser с Expat 2.6.0.

  • gh-115059: io.BufferedRandom.read1() теперь очищает базовый буфер записи.

  • gh-79382: Трейлинг ** больше не позволяет сопоставлять файлы и несуществующие пути в рекурсивном glob().

  • gh-67837: Избегайте условий гонки при создании каталогов во время одновременного извлечения в tarfile и zipfile.

  • gh-115060: Ускорьте pathlib.Path.glob(), удалив избыточное регексовое соответствие.

  • gh-97928: Частично изменяет поведение tkinter.Text.count(). По умолчанию он сохраняет поведение старых версий Python, за исключением того, что установка wantobjects в 0 больше не имеет эффекта. Добавьте новый параметр return_ints: указав return_ints=True, Text.count() будет всегда возвращать единичный счет в виде целого числа, а не в виде кортежа или None.

  • gh-114628: Если при обработке TypeError возникает ошибка csv.Error, не выводите отслеживание TypeError.

  • gh-85984: Добавлена _POSIX_VDISABLE из <unistd.h> в termios от C.

  • gh-114965: Обновление поставляемого pip до версии 24.0

  • gh-114959: tarfile больше не игнорирует ошибки при попытке извлечь каталог поверх файла.

  • gh-114894: Добавить array.array.clear().

  • gh-114071: Поддержка подклассов кортежей, использующих auto() для значения члена перечисления.

  • gh-109475: Исправьте поддержку явного значения опции «–» в argparse (например, --option=--).

  • gh-49766: Исправьте сравнение date-datetime. Теперь специальные методы сравнения __eq__ и __lt__ возвращают NotImplemented, если один из компарандов равен date, а другой - datetime, вместо того чтобы игнорировать временную часть и часовой пояс или принудительно возвращать «не равно» или поднимать TypeError. Это делает сравнение подклассов date и datetime более симметричным и позволяет изменить поведение по умолчанию, переопределив специальные методы сравнения в подклассах.

  • gh-110190: Исправление структурирования ctypes с массивом на платформе Windows ARM64 путем установки MAX_STRUCT_SIZE на 32 в stgdict. Исправление от Диего Руссо

  • gh-114678: Убедитесь, что предупреждение об устаревании спецификатора „N“ в формате Decimal не выдается в случаях, когда „N“ встречается в других местах спецификатора формата. Основано на исправлении Стефана Краха.

  • gh-70303: Возвращает и файлы, и каталоги из pathlib.Path.glob(), если шаблон заканчивается на «**». Ранее возвращались только каталоги.

  • gh-109653: Улучшить время импорта importlib.metadata и email.utils.

  • gh-113280: Исправление утечки открытого сокета в редких случаях, когда возникала ошибка при создании ssl.SSLSocket.

  • gh-77749: email.policy.EmailPolicy.fold() теперь всегда кодирует не-ASCII символы в заголовках, если значение utf8 равно false.

  • gh-83383: Синхронизация базы данных dbm.dumb теперь не выполняется, если с момента открытия или последней синхронизации не было никаких изменений. Файл каталога для вновь созданной пустой базы данных dbm.dumb теперь создается сразу после открытия, а не откладывается до синхронизации или закрытия.

  • gh-91602: Добавьте в sqlite3.Connection.iterdump() параметр filter только с ключевым словом для фильтрации объектов базы данных для дампа. Исправление Мариуша Фелисиака.

  • gh-112451: Запретить подклассификацию pure-Python datetime.timezone. Это соответствует реализации C-расширения. Исправление Мариуша Фелисиака.

  • gh-69893: Добавьте метод close() для итератора, возвращаемого xml.etree.ElementTree.iterparse().

  • gh-109653: Сокращение времени импорта модуля threading на ~50%. Исправление от Даниэля Холласа.

  • gh-114492: Сделайте результат termios.tcgetattr() воспроизводимым на Alpine Linux. Ранее он мог оставлять случайный мусор в некоторых полях.

  • gh-114315: Сделайте threading.Lock настоящим классом, а не фабричной функцией. Добавьте __new__ к типу _thread.lock.

  • gh-100414: Добавьте dbm.sqlite3 в качестве бэкенда к dbm и сделайте его новым бэкендом по умолчанию dbm. Исправление Раймонда Хеттингера и Эрленда Э. Аасланда.

  • gh-113267: Верните изменения в gh-106584, которые делали вызовы методов TestResult startTest() и stopTest() несбалансированными.

  • gh-75128: Игнорируйте OSError в asyncio.BaseEventLoop.create_server(), когда IPv6 доступен, но интерфейс не может его поддерживать.

  • gh-114423: _DummyThread записи в threading._active теперь автоматически удаляются, когда связанный поток умирает.

  • gh-114257: Избавьтесь от ошибки FileNotFound в ctypes.util.find_library() и просто верните None в Linux.

  • gh-114321: В модуле fcntl в Linux, macOS, FreeBSD и NetBSD раскрывается больше констант, специфичных для конкретной платформы.

  • gh-114328: tty.setcbreak() и новый tty.cfmakecbreak() больше не снимают флаг ICRLF терминального ввода. Это исправляет регрессию, введенную в 3.12, которая больше не соответствовала тому, как ОС определяют режим cbreak на своих страницах руководства stty(1).

  • gh-114281: Удалите подсказки типов из Lib/asyncio/staggered.py. Вместо них следует использовать аннотации из проекта typeshed.

  • gh-101438: Избегайте цикла ссылок в ElementTree.iterparse. Итератор, возвращаемый ElementTree.iterparse, может удерживать дескриптор файла. Цикл ссылок предотвращал быструю очистку дескриптора файла, если возвращаемый итератор не был исчерпан.

  • gh-114198: В сигнатуре метода __replace__ на dataclasses первый аргумент теперь называется self, а не obj.

  • gh-104522: OSError, возникающая при запуске подпроцесса, теперь имеет атрибут filename, установленный в cwd, только если ошибка была вызвана неудачной попыткой изменить текущий каталог.

  • gh-114149: Enum: корректная обработка подклассов кортежей в пользовательских __new__.

  • gh-83648: Поддержите устаревание опций, позиционных аргументов и подкоманд в argparse.

  • gh-114087: Ускорение dataclasses.asdict до 1,35x.

  • gh-109534: Исправление утечки ссылок в asyncio.selector_events.BaseSelectorEventLoop при сбое SSL-рукопожатия. Исправление внесено Джейми Фаном.

  • gh-79634: Примите path-like objects в качестве шаблонов в pathlib.Path.glob() и rglob().

  • gh-112202: Гарантирует, что вызов asyncio.Condition.notify() не будет потерян, если пробужденный Task будет одновременно отменен или столкнется с любой другой ошибкой.

  • gh-113951: Исправлено поведение методов tag_unbind() классов tkinter.Text и tkinter.Canvas с тремя аргументами. Ранее widget.tag_unbind(tag, sequence, funcid) уничтожал текущую привязку для sequence, оставляя sequence несвязанной, и удалял команду funcid. Теперь она удаляет только funcid из привязки для последовательности, сохраняя другие команды, и удаляет команду funcid. Она оставляет последовательность несвязанной, только если funcid была последней связанной командой.

  • gh-97959: Исправлено отображение методов классов, связанных методов, псевдонимов методов и функций в pydoc. Методы классов больше не имеют примечания «метод экземпляра builtins.type». Соответствующие примечания теперь добавлены для методов класса и несвязанных методов. Псевдонимы методов и функций теперь имеют ссылки на модуль или класс, в котором было определено происхождение, если оно отличается от текущего. Связанные методы теперь перечисляются в разделе статических методов. Методы встроенных классов теперь поддерживаются так же, как и методы классов Python.

  • gh-113796: Добавлены дополнительные проверки валидности в конструкторе csv.Dialect. ValueError теперь поднимается, если один и тот же символ используется в разных ролях.

  • gh-113732: Исправьте поддержку QUOTE_NOTNULL и QUOTE_STRINGS в csv.reader().

  • gh-113225: Ускорьте pathlib.Path.walk(), используя os.DirEntry.path, где это возможно.

  • gh-89039: При вызове метода replace() у подкласса datetime, date или time корректно вызывается конструктор производного класса. Ранее вызывался только конструктор базового класса.

    Также убедитесь, что при создании подклассов в различных методах передаются ненулевые значения fold. Ранее значение fold игнорировалось.

  • gh-112919: Ускорение datetime.datetime.replace(), datetime.date.replace() и datetime.time.replace().

  • gh-59013: Установите точку останова на первой исполняемой строке функции, а не на строке определения функции, когда пользователь делает break func, используя pdb

  • gh-112343: Улучшена работа с удобными переменными pdb, чтобы избежать замены содержимого строк.

  • gh-112240: Добавьте в CLI модуля календаря опцию для указания дня недели, с которого начинается каждая неделя. Исправление Стивена Уорда.

  • gh-111741: Распознайте image/webp как стандартный формат в модуле mimetypes.

  • gh-43457: Исправьте метод tkinter виджета wm_attributes(). Теперь он принимает имя атрибута без префикса минус для получения атрибутов окна и позволяет указывать атрибуты и значения для установки в качестве аргументов ключевых слов. Добавлен новый необязательный аргумент return_python_dict: вызов w.wm_attributes(return_python_dict=True) возвращает атрибуты в виде dict вместо кортежа. Вызов w.wm_attributes() теперь возвращает кортеж вместо строки, если wantobjects было установлено в 0.

  • gh-82626: Многие функции теперь выдают предупреждение, если в качестве аргумента дескриптора файла передается булево значение.

  • gh-111051: Добавлена проверка на модификацию файла при отладке с помощью pdb

  • gh-110345: Показывать уровень патча Tcl/Tk (а не версию) в tkinter._test().

  • gh-38807: Исправьте состояние гонки в trace. Вместо того чтобы проверять, существует ли каталог, и создавать его, напрямую вызывайте os.makedirs() с каргом exist_ok=True.

  • gh-75705: Установите конверт unixfrom в mailbox.mbox и mailbox.MMDF.

  • gh-106233: Исправьте стебель в InvalidTZPathWarning во время импорта модуля zoneinfo.

  • gh-105102: Разрешить вложение ctypes.Union в ctypes.Structure, если эндианальность системы противоположна классам.

  • gh-104282: Исправление разыменования нулевого указателя в lzma._decode_filter_properties() из-за некорректной обработки BCJ-фильтров со свойствами нулевой длины. Исправление от Радислава Чугунова.

  • gh-96471: Добавьте завершение queue.Queue с shutdown().

  • gh-101599: Изменено форматирование опций флага argparse, чтобы убрать избыточность.

  • gh-85984: Добавьте псевдотерминальные функции POSIX os.posix_openpt(), os.grantpt(), os.unlockpt() и os.ptsname().

  • gh-102512: Когда os.fork() вызывается из постороннего потока (он же _DummyThread), тип потока в дочернем процессе меняется на _MainThread. Также изменено имя и демонический статус, теперь к нему можно присоединиться.

  • gh-88569: Добавьте os.path.isreserved(), который определяет зарезервированные имена путей, такие как «NUL», «AUX» и «CON». Эта функция доступна только в Windows.

    Утратить pathlib.PurePath.is_reserved().

  • bpo-38364: Функции inspect isgeneratorfunction, iscoroutinefunction, isasyncgenfunction теперь поддерживают обернутые функции functools.partialmethod так же, как и functools.partial.

Документация

  • gh-115233: Исправьте пример для LoggerAdapter в книге Logging Cookbook.

  • gh-114123: Переместите docstring модуля csv в модуль csv вместо реэкспорта из внутреннего модуля _csv, и удалите __doc__ из csv.__all__.

    Переместите csv.__version__ в модуль csv вместо того, чтобы реэкспортировать его из внутреннего модуля _csv, и удалите __version__ из csv.__all__.

Тесты

  • gh-114099: Добавлены исключения из тестов, необходимые для запуска тестового набора на iOS.

  • gh-105089: Исправьте тест test.test_zipfile.test_core.TestWithDirectory.test_create_directory_with_write в AIX, выполнив побитовое AND 0xFFFF в режиме, чтобы он был синхронизирован с zinfo.external_attr.

Построить

  • gh-115167: Избегайте вендора vcruntime140_threads.dll при сборке с помощью Visual Studio 2022 версии 17.8.

  • gh-113632: Переведите WASI на платформу второго уровня и сбросьте Emscripten с третьего уровня в configure.ac.

  • gh-114099: configure и Makefile были доработаны, чтобы обеспечить возможность сборки фреймворка на платформах Apple, отличных от macOS.

  • gh-114875: Добавьте getgrent() в качестве предварительного условия для сборки модуля grp.

Windows

  • gh-115049: Исправляет ошибку py.exe при запуске от имени пользователя без пользовательского профиля.

  • gh-115009: Обновление программы установки Windows для использования SQLite 3.45.1.

  • gh-109991: Обновление сборки Windows для использования OpenSSL 3.0.13.

  • gh-111239: Обновите сборки Windows для использования zlib v1.3.1.

  • gh-100107: Программа запуска py.exe больше не будет пытаться запустить перенаправление Microsoft Store при запуске скрипта, содержащего /usr/bin/env shebang

  • gh-112984: Добавляет двоичные файлы со свободным потоком в программу установки Windows в качестве дополнительного компонента.

  • gh-89240: Позволяет multiprocessing создавать пулы, состоящие более чем из 62 процессов.

macOS

  • gh-115009: Обновите программу установки macOS для использования SQLite 3.45.1.

  • gh-109991: Обновите программу установки macOS для использования OpenSSL 3.0.13.

  • gh-114490: Добавьте поддержку связей Mach-O для platform.architecture().

  • gh-87804: В macOS результаты os.statvfs и os.fstatvfs теперь корректно сообщают размер очень больших дисков, в предыдущих версиях сообщаемое количество блоков было неверным для дисков с не менее чем 2**32 блоками.

IDLE

  • gh-96905: В коде idlelib перестаньте переопределять встроенные элементы „dict“ и „object“.

  • gh-103820: Пересмотрите привязки IDLE так, чтобы события от кнопок мыши 4/5 в оконных системах, отличных от X11 (т.е. Win32 и Aqua), не принимались за прокрутку.

Инструменты/демоверсии

  • gh-113516: Не устанавливайте LDSHARED при сборке для WASI.

  • gh-109991: Обновите рабочие процессы GitHub CI для использования OpenSSL 3.0.13 и multissltests для использования 1.1.1w, 3.0.13, 3.1.5 и 3.2.1.

  • gh-115015: Исправлена ошибка в Argument Clinic, которая приводила к некорректному коду для методов без параметров, использующих соглашение о вызове METH_METHOD | METH_FASTCALL | METH_KEYWORDS. Проверялось только количество позиционных параметров; любой переданный аргумент с ключевым словом принимался молча.

C API

Python 3.13.0 alpha 3

Дата выхода: 2024-01-17

Безопасность

  • gh-113659: Пропускать .pth файлы с именами, начинающимися с точки или скрытого атрибута файла.

  • gh-112302: Создан документ Software Bill-of-Materials и инструментарий для отслеживания зависимостей.

Ядро и встроенные модули

  • gh-107901: Компилятор дублирует базовые блоки, у которых есть проверка на прерывание eval, нет номера строки и несколько предшественников.

  • gh-107901: Переход из обработчика исключений обратно в обычный код больше не проверяет прерыватель eval.

  • gh-113655: Установите ограничение рекурсии в C на 4000 в Windows и на 10000 в Linux/OSX. Кажется, это близкое к оптимальному значение, позволяющее сохранить безопасность, но не нарушить обратную совместимость.

  • gh-113710: Добавляет типизированные эффекты стека в DSL интерпретатора, а также различные аннотации инструкций.

  • gh-77046: В Windows файловые дескрипторы, оборачивающие дескрипторы Windows, теперь создаются ненаследуемыми по умолчанию (PEP 446). Исправление от Zackery Spytz и Victor Stinner.

  • gh-113853: Гарантирует, что все исполнители выполняют задания. Это гарантирует, что выполнение уровня 2 всегда будет прогрессировать.

  • gh-113753: Исправлена проблема, из-за которой финализатор объектов PyAsyncGenASend мог не вызываться, если они были выделены из свободного списка.

  • gh-107901: Компилятор изменен таким образом, что синтетические переходы, не находящиеся в конце цикла, больше не проверяют прерыватель eval.

  • gh-113703: Исправление регрессии в модуле codeop, из-за которой он неправильно определял неполные f-строки. Исправление от Пабло Галиндо

  • gh-89811: Проверьте наличие правильного tp_version_tag перед выполнением специализаций байткода, которые полагаются на возможность использования этого значения.

  • gh-111488: Изменено сообщение об ошибке в случае отсутствия ключевого слова „in“ после „for“ в списочных вычислениях

  • gh-113657: Исправление проблемы, из-за которой важные обновления указателей инструкций не оптимизировались в трассировках второго уровня.

  • gh-113603: Исправлена ошибка, при которой не удалялся лишний NOP, что приводило к сбою утверждения в компиляторе в режиме отладки.

  • gh-113602: Исправление ошибки, из-за которой парсер пытался перезаписать существующие ошибки и аварийно завершал работу. Исправление от Pablo Galindo

  • gh-113486: Больше не выдаются ложные события PY_UNWIND для оптимизированных вызовов классов.

  • gh-113297: Исправление segfault в компиляторе на операторе with с 19 менеджерами контекста.

  • gh-113212: Улучшите сообщения об ошибках super.

  • gh-111375: Используйте только NULL в стеке исключений, чтобы указать, что исключение было обработано. Исправление от Carey Metcalfe.

  • gh-112215: Увеличение предела рекурсии на C в 3 раза для не отладочных сборок, за исключением платформ webassembly и s390, которые остались без изменений. Это уменьшает некоторые регрессии в 3.12 с глубокой рекурсией, смешивающей встроенный (C) и Python-код.

  • gh-113054: Исправлена ошибка, при которой не удалялся лишний NOP, что приводило к сбою утверждения в компиляторе в режиме отладки.

  • gh-106905: Для отслеживания глубины рекурсии в AST-парсере используйте состояние каждого AST-парсера, а не глобальное состояние, чтобы предотвратить потенциальное состояние гонки из-за одновременного парсинга.

    В версии 3.11 проблема в первую очередь проявлялась у многопоточных пользователей ast.parse(). В 3.12 изменение времени запуска сборки мусора позволило предотвратить возникновение состояния гонки.

  • gh-108866: Измените API и контракт _PyExecutorObject, чтобы возвращать указатель next_instr, а не фрейм, и чтобы всегда выполнялась хотя бы одна инструкция.

  • gh-90350: Оптимизируйте встроенные функции min() и max().

  • gh-112943: Корректно вычисляет смещения конечных колонок для многострочных токенов в модуле tokenize. Исправление от Pablo Galindo

  • gh-112125: Исправьте None.__ne__(None), возвращающий NotImplemented вместо False.

  • gh-74616: input() теперь вызывает ошибку ValueError при выводе на терминал, если подсказка содержит встроенные нулевые символы, вместо того чтобы молча обрезать ее.

  • gh-112716: Исправление SystemError в операторе import и в методах __reduce__() встроенных типов, когда __builtins__ не является dict.

  • gh-112730: Используйте цвет для выделения мест ошибок в трассировках. Исправление от Pablo Galindo

  • gh-112625: Исправлена ошибка, из-за которой объект bytearray мог быть очищен во время итерации по аргументу в методе bytearray.join(), что могло привести к чтению памяти после ее освобождения.

  • gh-112660: Не очищать неожиданные ошибки при форматировании сообщений об ошибках ImportError и AttributeError для модулей.

  • gh-105967: Устранение ошибки в библиотеке zlib для платформы macOS от Apple, когда zlib.crc32() и binascii.crc32() могли давать неверные результаты на многогигабайтных входных данных. В том числе при использовании zipfile на зипах, содержащих большие данные.

  • gh-95754: Улучшено сообщение об ошибке при обращении к недопустимым атрибутам частично инициализированных модулей. Теперь в сообщение включается происхождение модуля, к которому осуществляется доступ, чтобы помочь в решении распространенной проблемы с тенью других модулей.

  • gh-112217: Добавьте проверку типа __cause__, возвращаемого при вызове типа T в raise from T.

  • gh-111058: Измените coro.cr_frame/gen.gi_frame так, чтобы они возвращали None после закрытия корутины/генератора. Это исправляет ошибку, при которой getcoroutinestate() и getgeneratorstate() возвращали неверное состояние для закрытого корутина/генератора.

  • gh-112388: Исправлена ошибка, из-за которой парсер пытался перезаписать ошибки токенизатора. Исправление от Пабло Галиндо

  • gh-112387: Исправлены позиции ошибок для декодированных строк с ошибками обратной токенизации. Исправление от Pablo Galindo

  • gh-99606: Сделать код, сгенерированный для пустой f-строки, идентичным коду пустой обычной строки.

  • gh-112367: Избегайте неопределенного поведения при использовании перф-батутов, не освобождая кодовые арены до выключения. Исправление от Пабло Галиндо

  • gh-112320: Транслятор уровня 2 теперь отслеживает уровень уверенности в том, что инструкции ветвления остаются «на трассе» (т.е. не возвращаются в интерпретатор уровня 1), основываясь на количестве битов, установленных в «счетчике» ветвления. Трансляция трассировки завершается, когда уровень уверенности падает ниже 1/3.

  • gh-109598: PyComplex_RealAsDouble()/PyComplex_ImagAsDouble() теперь пытается преобразовать объект в экземпляр complex с помощью своего метода __complex__(), а затем возвращается к методу __float__(). Автор патча - Сергей Кирпичев.

  • gh-94606: Исправление ошибки UnicodeEncodeError, когда email.message.get_payload() читает сообщение с суррогатным символом Unicode, а содержимое сообщения не является хорошо сформированным для кодировки surrogateescape. Исправление Сидни Марковица.

  • bpo-21861: Используйте реальное имя класса объекта в _io.FileIO.__repr__(), _io._WindowsConsoleIO() и _io.TextIOWrapper.__repr__(), чтобы сделать эти методы дружественными подклассам.

  • bpo-45369: Удалите обходные пути LibreSSL в соответствии с PEP 644.

  • bpo-34392: Добавлено sys._is_interned().

Библиотека

  • gh-114077: Исправление возможных OverflowError в socket.socket.sendfile() при передаче count более 2 ГБ на 32-битной платформе.

  • gh-111803: plistlib теперь поддерживает загрузку более глубоко вложенных списков в двоичном формате.

  • gh-114014: Исправлена ошибка в fractions.Fraction, когда недопустимая строка, использующая d в десятичной части, вызывала другую ошибку по сравнению с другими недопустимыми буквами/символами. Автор исправления - Джеремайя Габриэль Паскуаль.

  • gh-108364: sqlite3.Connection.iterdump() теперь гарантирует, что поддержка внешних ключей отключена перед дампом схемы базы данных, если есть нарушение внешнего ключа. Исправление Эрленда Э. Аасланда и Мариуша Фелисиака.

  • gh-113971: Атрибут zipfile.ZipInfo, ранее защищенный ._compresslevel, стал общедоступным как .compress_level, а старое имя _compresslevel осталось доступным в качестве свойства для сохранения совместимости.

  • gh-113877: Исправьте tkinter методом winfo_pathname() на 64-битной Windows.

  • gh-113868: Добавлены mmap.MAP_NORESERVE, mmap.MAP_NOEXTEND, mmap.MAP_HASSEMAPHORE, mmap.MAP_NOCACHE, mmap.MAP_JIT, mmap.MAP_RESILIENT_CODESIGN, mmap.MAP_RESILIENT_MEDIA, mmap.MAP_32BIT, mmap.MAP_TRANSLATED_ALLOW_EXECUTE, mmap.MAP_UNIX03 и mmap.MAP_TPRO. Все они имеют флаг mmap(2) на macOS.

  • gh-113848: Менеджеры контекста asyncio.TaskGroup() и asyncio.timeout() теперь работают с подклассами CancelledError так же, как и с точными CancelledError.

  • gh-113661: unittest runner: Не выходите из 5, если тесты были пропущены. Выход из 5 был предназначен для обнаружения проблем, когда набор тестов вообще не был обнаружен. Если мы пропускали тесты, то они были обнаружены правильно.

  • gh-96037: Вставьте TimeoutError в контекст исключения, которое было поднято при выходе из истекшего блока asyncio.timeout().

  • gh-113781: Заглушение невосстановимых ошибок AttributeError при выдаче предупреждений во время финализации Python.

  • gh-113238: Добавьте Anchor к importlib.resources (чтобы код соответствовал документации)

  • gh-111693: asyncio.Condition.wait() теперь повторно поднимает тот же экземпляр CancelledError, из-за которого он мог быть прерван. Исправлено состояние гонки в asyncio.Semaphore.acquire() при прерывании с помощью CancelledError.

  • gh-113791: Добавьте CLOCK_MONOTONIC_RAW_APPROX и CLOCK_UPTIME_RAW_APPROX к time на macOS. Эти часы доступны в macOS 10.12 или более поздней версии.

  • gh-112932: Восстановление возможности перехода от zipfile к extractall из zip-файлов с записью в директории «/», которая обычно добавляется в zip-файлы некоторыми экспортерами данных вики или багтрекеров.

  • gh-113568: Передавайте предупреждения об устаревании от pathlib.PurePath, а не от его частного базового класса PurePathBase.

  • gh-113594: Исправьте UnicodeEncodeError в email при повторном складывании строк, содержащих часть с неизвестной 8-битной кодировкой, за которой следует часть с неизвестной 8-битной кодировкой.

  • gh-113538: В asyncio.StreamReaderProtocol.connection_made() есть обратный вызов, который регистрирует ошибку, если задача, обернувшая «подключенный обратный вызов», не выполнилась. Этот обратный вызов сам по себе не сработает, если задача будет отменена. Чтобы предотвратить это, сначала проверьте, была ли отменена задача. Если да, то закройте транспорт, но не сообщайте об ошибке.

  • gh-113626: Добавьте поддержку аргумента allow_code в модуле marshal. Передача allow_code=False предотвращает сериализацию и де-сериализацию объектов кода, что несовместимо между версиями Python.

  • gh-85567: Исправлены предупреждения о ресурсах для незакрытых файлов в интерфейсах командной строки pickle и pickletools.

  • gh-113537: Поддержка загружает str в plistlib.loads().

  • gh-89850: Добавлены реализации по умолчанию методов pickle.Pickler.persistent_id() и pickle.Unpickler.persistent_load() в реализации C. Вызов методов super().persistent_id() и super().persistent_load() в подклассах C-реализации классов pickle.Pickler и pickle.Unpickler больше не приводит к бесконечной рекурсии.

  • gh-113569: Укажите, не было ли фактических вызовов в unittest assert_has_calls() failure.

  • gh-101225: Увеличьте отставание для объектов multiprocessing.connection.Listener, созданных multiprocessing.manager и multiprocessing.resource_sharer, чтобы значительно снизить риск получения ошибки отказа в подключении при создании multiprocessing.connection.Connection к ним.

  • gh-113568: Вызывайте события аудита от pathlib.Path, а не от его частного базового класса PathBase.

  • gh-113543: Убедитесь, что webbrowser.MacOSXOSAScript отправляет событие аудита webbrowser.open.

  • gh-113028: Когда на входе в pickle появляется вторая ссылка на строку, и используется реализация Python, мы гарантируем, что одна копия будет замаринована, и при перезагрузке будет использоваться один объект. Ранее, в протоколе 0, когда строка содержала определенные символы (например, новую строку), это приводило к появлению дубликатов объектов.

  • gh-113421: Исправьте многопроцессорный логгер для %(filename)s.

  • gh-111784: Исправление сегфайтов в модуле _elementtree. Исправление первого segfault при деаллокации экземпляров _elementtree.XMLParser путем сохранения сильной ссылки на модуль pyexpat в состоянии модуля на время жизни капсулы. Исправление второго segfault, который происходит в том же процессе деаллокации, путем сохранения сильной ссылки на модуль _elementtree в структуре XMLParser на время жизни модуля _elementtree.

  • gh-113407: Исправьте импорт unittest.mock, когда CPython собран без документальных строк.

  • gh-113320: Исправление регрессии в Python 3.12, когда классы Protocol, не помеченные как runtime-checkable, излишне интроспективно проверялись, что могло привести к возникновению исключений, если протокол имел проблемные члены. Исправление Алекса Уэйгуда.

  • gh-53502: Добавьте новую опцию aware_datetime в plistlib для загрузки или дампа данных с указанием времени.

  • gh-113358: Исправление отрисовки трассировок с исключениями с неработающим __getattr__

  • gh-113214: Исправление AttributeError при прерывании протокола asyncio SSL в сценариях SSL-over-SSL.

  • gh-113246: Обновление поставляемого pip до версии 23.3.2.

  • gh-87264: Исправлен метод tarfile list() для отображения типа файла.

  • gh-112182: asyncio.futures.Future.set_exception() теперь превращает StopIteration в RuntimeError вместо зависания или другого неправильного поведения. Патч предоставлен Джейми Фаном.

  • gh-113225: Ускорьте pathlib.Path.glob(), используя os.DirEntry.path, где это возможно.

  • gh-113149: Улучшено сообщение об ошибке, когда массив или объект JSON содержит запятую в конце. Исправление от Карсона Радтке.

  • gh-113117: Модуль subprocess теперь может использовать функцию os.posix_spawn() вместе с close_fds=True на платформах, где доступен posix_spawn_file_actions_addclosefrom_np. Исправление от Якуба Кулика.

  • gh-113199: Заставить http.client.HTTPResponse.read1 и http.client.HTTPResponse.readline закрывать IO после чтения всех данных, если длина содержимого известна. Патч от Illia Volochii.

  • gh-113191: Добавьте поддержку os.fchmod() и файлового дескриптора в os.chmod() на Windows.

  • gh-113188: Исправьте shutil.copymode() и shutil.copystat() под Windows. Ранее они работали по-разному, если dst является символической ссылкой: они изменяли биты разрешения самого dst, а не файла, на который он указывает, если follow_symlinks истинна или src не является символической ссылкой, и не изменяли биты разрешения, если follow_symlinks ложна и src является символической ссылкой.

  • gh-113119: os.posix_spawn() теперь принимает env=None, что заставляет вновь порожденный процесс использовать текущее окружение процесса. Исправление Якуба Кулика.

  • gh-113202: Добавьте опцию strict к batched() в модуле itertools.

  • gh-61648: Определение номеров строк свойств в доктестах.

  • gh-113175: Синхронизация с importlib_metadata 7.0, включая улучшение аннотаций типов, исправление проблемы с симлинковыми пакетами в package_distributions, добавление EntryPoints.__repr__, введение скрипта diagnose, добавление свойства Distribution.origin и удаление устаревшего доступа к EntryPoint по числовому индексу (поведение кортежей).

  • gh-59616: Добавьте поддержку os.lchmod() и аргумента follow_symlinks в os.chmod() под Windows. Обратите внимание, что по умолчанию значение follow_symlinks в os.lchmod() равно False в Windows.

  • gh-112559: signal.signal() и signal.getsignal() больше не вызывают repr на вызываемых обработчиках. asyncio.run() и asyncio.Runner.run() больше не вызывают repr на результатах выполнения задачи. Исправление от Yilei Yang.

  • gh-112962: Функции модуля dis добавляют информацию о кэше в экземпляр Instruction, а не создают поддельные экземпляры Instruction для представления записей кэша.

  • gh-112989: Уменьшите накладные расходы на подключение сокетов с помощью asyncio. SelectorEventLoop.

  • gh-112970: Используйте closefrom() в Linux, если он доступен (например, glibc-2.34), а не только во FreeBSD.

  • gh-110190: Исправление структурирования ctypes с массивом на платформе PPC64LE путем установки MAX_STRUCT_SIZE на 64 в stgdict. Исправление от Диего Руссо.

  • gh-112540: Функция statistics.geometric_mean() теперь возвращает ноль для наборов данных, содержащих ноль. Раньше это приводило к возникновению исключения.

  • gh-87286: Добавлены LOG_FTP, LOG_NETINFO, LOG_REMOTEAUTH, LOG_INSTALL, LOG_RAS и LOG_LAUNCHD в модуль syslog, все они являются константами, используемыми на macOS.

  • gh-112800: Исправьте asyncio SubprocessTransport.close(), чтобы не бросать PermissionError при использовании с setuid исполняемыми файлами.

  • gh-51944: Добавьте следующие константы в модуль termios. Эти значения присутствуют в системных заголовках macOS: ALTWERASE, B14400, B28800, B7200, B76800, CCAR_OFLOW, CCTS_OFLOW, CDSR_OFLOW, CDTR_IFLOW, CIGNORE, CRTS_IFLOW, EXTPROC, IUTF8, MDMBUF, NL2, NL3, NOKERNINFO, ONOEOT, OXTABS, VDSUSP, VSTATUS.

  • gh-79325: Исправление ошибки бесконечной рекурсии в очистке tempfile.TemporaryDirectory() на Windows.

  • gh-94692: shutil.rmtree() теперь перехватывает только исключения OSError. Ранее версия shutil.rmtree(), устойчивая к атакам по симлинкам, могла игнорировать или передавать обработчику ошибок произвольное исключение при предоставлении недопустимых аргументов.

  • gh-112736: Использование символов del-safe в subprocess было рефакторизовано, чтобы обеспечить возможность использования в кроссплатформенных средах сборки.

  • gh-112727: Ускорение pathlib.Path.absolute(). Исправление от Барни Гейла.

  • gh-74690: Ускорение проверок issubclass() против простых runtime-checkable protocols примерно на 6%. Исправление от Алекса Уэйгуда.

  • gh-74690: Ускорение проверок isinstance() примерно на 20 % для протоколов runtime-checkable protocols, имеющих только один вызываемый член. Ускорение проверки issubclass() для этих протоколов примерно на 10 %. Исправление от Алекса Уэйгуда.

  • gh-112645: Устраните ошибку устаревания при передаче onerror в shutil.rmtree().

  • gh-112640: Добавьте параметр kwdefaults к types.FunctionType, чтобы задать значения аргументов ключевых слов по умолчанию.

  • gh-112622: Убедитесь, что параметр name передан в цикл событий в asyncio.create_task().

  • gh-112618: Исправлена ошибка кэширования, связанная с typing.Annotated. Annotated[str, True] больше не идентичен Annotated[str, 1].

  • gh-112334: Исправлена ошибка в производительности subprocess в 3.12 на Linux, когда из-за логической ошибки он больше не использовал системный вызов vfork() с быстрым путём, когда мог бы, вместо этого возвращаясь к безопасному, но более медленному fork().

    Также исправлена вторая потенциальная ошибка безопасности версии 3.12.0. Если в subprocess.Popen или связанные с ним API передавалось значение extra_groups=[], основной системный вызов setgroups(0, NULL) для очистки списка групп не выполнялся в дочернем процессе до exec().

    Это было обнаружено при проверке кода в процессе исправления первой ошибки.

  • gh-110190: Исправление ctypes structs с массивом на платформе Arm путем установки MAX_STRUCT_SIZE на 32 в stgdict. Исправление от Диего Руссо.

  • gh-81194: Исправление сбоя в socket.if_indextoname() при определенном значении (UINT_MAX). Исправление целочисленного переполнения в socket.if_indextoname() на 64-битных платформах, отличных от Windows.

  • gh-112578: Исправление ложного RuntimeWarning при выполнении модуля zipfile.

  • gh-112516: Обновите поставляемую в комплекте копию pip до версии 23.3.1.

  • gh-112510: Добавьте readline.backend для бэкенда, использующего readline (editline или readline)

  • gh-112328: [Enum] Сделайте EnumDict, EnumDict.member_names, EnumType._add_alias_ и EnumType._add_value_alias_ общедоступными.

  • gh-112509: Исправление краевых случаев, из-за которых ключ мог присутствовать как в атрибутах __required_keys__, так и в __optional_keys__ атрибута typing.TypedDict. Исправление от Jelle Zijlstra.

  • gh-101336: Добавьте параметр ключевого слова keep_alive для AbstractEventLoop.create_server() и BaseEventLoop.create_server().

  • gh-63284: В модуль ssl добавлена поддержка режима TLS-PSK (pre-shared key).

  • gh-112414: Исправление регрессии в Python 3.12, когда вызов repr() на модуле, который был импортирован с помощью пользовательского loader, мог привести к ошибке AttributeError. Исправление от Алекса Уэйгуда.

  • gh-112358: Верните изменение инициализации struct.Struct, которое нарушало некоторые случаи подклассификации.

  • gh-112405: Оптимизируйте pathlib.PurePath.relative_to(). Исправление от Алекса Уэйгуда.

  • gh-94722: Исправлена ошибка, при которой сравнение между экземплярами DocTest не удавалось, если один из них имеет None в качестве своего lineno.

  • gh-112361: Ускорьте небольшую горстку методов pathlib, удалив некоторые временные объекты.

  • gh-112345: Улучшено сообщение об ошибке при попытке вызова issubclass() против typing.Protocol, у которого есть члены, не являющиеся методами. Исправление от Рэндольфа Шольца.

  • gh-112137: Измените вывод dis, чтобы отображать no-lineno как «–» вместо «None».

  • gh-112332: Утратить поле exc_type из traceback.TracebackException. Добавьте exc_type_str, чтобы заменить его.

  • gh-81620: Добавьте дополнительные тесты для random.binomialvariate()

  • gh-112292: Исправление сбоя в readline при импорте из суб-интерпретатора. Исправление от Энтони Шоу

  • gh-77621: Немного улучшает время импорта модуля pathlib, откладывая некоторые импорты. Исправление Барни Гейла.

  • gh-112137: Измените вывод dis, чтобы вместо смещений отображались логические метки для целей перехода.

  • gh-112139: Добавьте Signature.format() для форматирования подписей в строку с дополнительными параметрами. И используйте его в pydoc для вывода более читабельных подписей с новыми строками между параметрами.

  • gh-112105: Заставьте readline.set_completer_delims() работать с libedit

  • gh-106922: Отображение нескольких строк с помощью traceback, если ошибки охватывают несколько строк.

  • gh-111874: При создании класса typing.NamedTuple убедитесь, что __set_name__() вызывается для всех объектов, которые определяют __set_name__ и существуют в значениях словаря классов класса NamedTuple. Исправление Алекса Уэйгуда.

  • gh-68166: Добавьте поддержку типа элемента «vsapi» в tkinter.ttk.Style.element_create().

  • gh-110275: Методы именованных кортежей _replace() и __replace__() теперь вызывают ошибку TypeError вместо ошибки ValueError для недопустимых аргументов ключевых слов.

  • gh-99367: Не помещайте sys.path[0] в pdb, если установлен безопасный_путь

  • gh-111615: Исправление регрессии, вызванной исправлением gh-93162, в результате которого нельзя было настроить QueueHandler без указания обработчиков.

  • gh-75666: Исправлено поведение метода tkinter виджета unbind() с двумя аргументами. Ранее widget.unbind(sequence, funcid) разрушал текущую привязку последовательности, оставляя последовательность без привязки, и удалял команду funcid. Теперь она удаляет только funcid из привязки для последовательности, сохраняя другие команды, и удаляет команду funcid. Она оставляет последовательность несвязанной, только если funcid была последней связанной командой.

  • gh-67790: Реализуйте поддержку базового форматирования (минимальная ширина, выравнивание, заливка) для fractions.Fraction.

  • gh-111049: Исправление сбоя при сборке мусора буферного объекта io.BytesIO.

  • gh-102980: Перенаправьте вывод команды interact из pdb в тот же канал, что и отладчик. Добавьте тесты и улучшите документацию.

  • gh-102988: email.utils.getaddresses() и email.utils.parseaddr() теперь возвращают 2-кортежи ('', '') в большем количестве ситуаций, когда встречаются недействительные адреса электронной почты, вместо потенциально неточных значений. Добавьте необязательный параметр strict к этим двум функциям: используйте strict=False, чтобы получить старое поведение, принимающее неправильные входные данные. getattr(email.utils, 'supports_strict_parsing', False) можно использовать для проверки наличия параметра strict. Патч Томаса Дуайера и Виктора Стиннера для улучшения исправления CVE-2023-27043.

  • gh-52161: cmd.Cmd.do_help() теперь очищает docstrings с inspect.cleandoc() перед их записью. Исправление от Filip Łapkiewicz.

  • gh-82300: Добавьте к multiprocessing.shared_memory.SharedMemory параметр track, позволяющий использовать блоки общей памяти без необходимости регистрироваться в системе отслеживания ресурсов POSIX, которая автоматически освобождает их при выходе процесса.

  • gh-110109: Добавьте приватный класс pathlib._PurePathBase: базовый класс для pathlib.PurePath, в котором отсутствуют некоторые магические методы. В будущем он может стать публичным (вместе с _PathBase).

  • gh-109858: Защитите zipfile от zip-бомбы «quoted-overlap». Теперь при попытке прочитать запись, которая перекрывается с другой записью или центральным каталогом, возникает ошибка BadZipFile.

  • gh-109786: Исправление возможных утечек ссылок и падения при повторном входе в метод __next__() из itertools.pairwise.

  • gh-91539: Небольшое (10 - 20%) и тривиальное улучшение производительности по сравнению с urllib.request.getproxies_environment(), обычно полезное, когда нужно перебрать множество переменных окружения.

  • gh-103363: Добавьте аргумент follow_symlinks только для ключевых слов в pathlib.Path.owner() и group(), по умолчанию используется True.

  • gh-102130: Поддержка завершения табуляции в cmd для editline.

  • gh-99437: runpy.run_path() теперь декодирует объекты типа path, следя за тем, чтобы __file__ и sys.argv[0] запускаемого модуля всегда были строками.

  • gh-104003: Добавьте warnings.deprecated(), декоратор для пометки устаревших функций статическими средствами проверки типов и для предупреждения об использовании устаревших классов и функций. См. PEP 702. Исправление от Jelle Zijlstra.

  • gh-103708: Сделать жестко закодированное имя python настраиваемым параметром, чтобы разные реализации python могли переопределять его вместо того, чтобы делать огромные различия в sysconfig.py

  • gh-66515: mailbox.MH теперь поддерживает папки, не содержащие файл .mh_sequences (например, папки IMAP-кэша Claws Mail). Исправление Сергея Сторчака.

  • gh-83162: Переименовали re.error в PatternError для ясности и сохранили re.error для обратной совместимости. Исправление Матиаса Буссонье и Адама Чхины.

  • gh-91133: Исправлена ошибка в очистке tempfile.TemporaryDirectory, которая теперь не разыменовывает симлинки при работе с ошибками разрешения файловой системы.

  • bpo-43153: В Windows tempfile.TemporaryDirectory ранее маскировал PermissionError под NotADirectoryError при очистке каталога. Теперь он корректно выводит PermissionError, если ошибки не игнорируются. Исправление Андрея Кулакова и Кена Джина.

  • bpo-32731: getpass.getuser() теперь поднимает OSError при всех сбоях, а не ImportError на системах без модуля pwd или KeyError, если база данных паролей пуста.

  • bpo-34321: mmap.mmap теперь имеет параметр trackfd в Unix; если он равен False, дескриптор файла, указанный fileno, не будет дублироваться.

  • bpo-35332: Функция shutil.rmtree() теперь игнорирует ошибки при вызове os.close(), когда ignore_errors имеет значение True, а os.close() больше не повторяет попытку после ошибки.

  • bpo-35928: io.TextIOWrapper теперь корректно обрабатывает буфер декодирования после read() и write().

  • bpo-26791: shutil.move() теперь перемещает симлинк в каталог, когда этот каталог является целью симлинка. Это обеспечивает такое же поведение, как и команда оболочки mv. Предыдущее поведение вызывало исключение. Исправление Джеффри Кинчера.

  • bpo-41422: Исправлены утечки памяти в pickle.Pickler и pickle.Unpickler, связанные с циклическими ссылками через внутреннее отображение мемо.

  • bpo-19821: Функция pydoc.ispackage() была устаревшей.

  • bpo-40262: Метод ssl.SSLSocket.recv_into() больше не требует аргумента buffer для реализации __len__ и поддерживает буферы с произвольным размером элемента.

  • bpo-39912: warnings.filterwarnings() и warnings.simplefilter() теперь вызывают соответствующие исключения вместо AssertionError. Исправление предоставлено Rémi Lapeyre.

  • bpo-37260: Исправлено состояние гонки в shutil.rmtree(), когда записи каталога, удаленные другим процессом или потоком во время работы shutil.rmtree(), могли вызвать ошибку FileNotFoundError. Автор исправления - Джеффри Кинчер.

  • bpo-36959: Исправление некоторых сообщений об ошибках, связанных с недопустимыми комбинациями строк формата ISO в strptime(), которые ссылались на директивы, не содержащиеся в строке формата. Исправление Гордона П. Хемсли.

  • bpo-18060: Исправлена проблема наследования классов, которая могла приводить к сегфайтам при выведении двух или более уровней подклассов из базового класса Structure или Union.

  • bpo-29779: Добавьте новую переменную окружения PYTHON_HISTORY, чтобы задать расположение файла .python_history.

  • bpo-21360: mailbox.Maildir теперь игнорирует файлы с ведущей точкой.

Документация

  • gh-111699: Переместите уведомление об устаревании smtpd в отдельный раздел, а не под locale в документе What’s New in Python 3.12.

  • gh-110746: Улучшена разметка для валидных опций/значений для методов ttk.treeview.column и ttk.treeview.heading, а также для Layouts.

  • gh-95649: Документ о том, что модуль asyncio содержит код, взятый из v0.16.0 of the uvloop project, а также необходимую информацию о лицензировании MIT.

Тесты

  • gh-111798: Отключите test_super_deep() от test_call в сборках pydebug на WASI; глубина стека слишком мала, чтобы сделать тест полезным.

  • gh-111801: Понизьте предел рекурсии в test_isinstance для test_infinitely_many_bases(). Это предотвращает переполнение стека в pydebug-сборке WASI.

  • gh-111802: Укажите малую глубину рекурсии для test_bad_getattr() в test.pickletester, чтобы избежать исчерпания стека при сборке pydebug для WASI.

  • gh-44626: Исправление того, что os.path.isabs() неверно возвращал True, если путь начинался с одного (обратного) слэша в Windows.

    Исправление того, что pathlib.PureWindowsPath.is_absolute() неверно возвращал False для некоторых путей, начинающихся с двух (обратных) косых черт.

  • gh-113633: Используйте состояние модуля для модуля расширения _testcapi.

  • gh-109980: Исправление test_tarfile_vs_tar в test_shutil для macOS, где системный tar может включать в архив больше информации, чем shutil.make_archive.

  • gh-112769: Тесты теперь корректно сравнивают версии zlib, когда zlib.ZLIB_RUNTIME_VERSION содержит нецелые суффиксы. Например, zlib-ng определяет версию как 1.3.0.zlib-ng.

  • gh-112334: Добавляет регрессионный тест, проверяющий, что vfork() используется, когда ожидается subprocess, на POSIX-системах с поддержкой vfork (Linux).

  • gh-108927: Исправлена зависимость порядка выполнения тестов в одном процессе, когда тест с подмодулями (например, test_importlib) следует за тестом, который импортирует его подмодуль (например, test_importlib.util), и предшествует тесту (например, test_unittest или test_compileall), который использует этот подмодуль.

  • bpo-40648: Тест режимов, которые файл может получить с помощью chmod() в Windows.

Построить

  • gh-114013: Исправьте Tools/wasm/wasi.py, чтобы путь к python.wasm не включался в HOSTRUNNER. Переменная окружения предназначена только для указания способа запуска хоста WASI, при этом к python.wasm и соответствующим флагам добавляется HOSTRUNNER. Это исправляет работу make test.

  • gh-113258: Изменена сборка Windows, чтобы генерируемые замороженные модули записывались в дерево сборки, а не в дерево исходных текстов.

  • gh-112305: Исправлен шаг check-clean-src, выполняемый при сборке из дерева, чтобы обнаружить ошибочные файлы $(srcdir)/Python/frozen_modules/*.h и рекомендовать соответствующие шаги по очистке дерева исходных текстов, чтобы снова получить рабочую сборку.

  • gh-112536: Добавьте поддержку санитара потоков (TSAN)

  • gh-112867: Исправление сборки для случая, когда установлено WITH_PYMALLOC_RADIX_TREE=0.

  • gh-103065: Введите Tools/wasm/wasi.py, чтобы упростить выполнение сборки WASI.

  • bpo-11102: Функции os.major(), os.makedev() и os.minor() теперь доступны на HP-UX v3.

  • bpo-36351: Не устанавливайте ipv6type при кросс-компиляции.

Windows

  • gh-114096: Привилегии процессов, активированные для создания перекрестков каталогов, теперь восстанавливаются после этого, что позволяет избежать изменения поведения в других частях программы.

  • gh-111877: Вызовы os.stat() возвращали неверные значения времени для файлов, к которым нельзя было получить прямой доступ.

  • gh-111973: Обновление программы установки Windows для использования SQLite 3.44.2.

  • gh-113009: multiprocessing: В Windows исправлено состояние гонки в Process.terminate(): больше не нужно устанавливать атрибут returncode, чтобы всегда вызывать WaitForSingleObject() в Process.wait(). Ранее иногда процесс продолжал выполняться после TerminateProcess(), даже если GetExitCodeProcess() не был STILL_ACTIVE. Исправление Виктора Стиннера.

  • gh-86179: Исправлено вычисление пути при запуске Python под Windows через симлинк.

  • gh-71383: Обновление Tcl/Tk в программе установки Windows до версии 8.6.13 с исправлением, подавляющим некорректные предупреждения ThemeChanged.

  • gh-111650: Обеспечивает определение переменной препроцессора Py_GIL_DISABLED в pyconfig.h, чтобы модули расширения, написанные на C, могли ее использовать.

  • gh-112278: Уменьшение временных затрат на выполнение некоторых функций в platform в Windows, если у текущего пользователя нет прав на WMI.

  • gh-73427: Утратить sys._enablelegacywindowsfsencoding(). Вместо него используйте PYTHONLEGACYWINDOWSFSENCODING. Исправление от Inada Naoki.

  • gh-87868: Корректная сортировка и удаление дублирующихся переменных окружения в _winapi.CreateProcess().

  • bpo-37308: Исправление mojibake в mmap.mmap при использовании аргумента tagname, отличного от ASCII, в Windows.

macOS

  • gh-113666: Добавьте в модуль stat следующие константы: UF_SETTABLE, UF_TRACKED, UF_DATAVAULT, SF_SUPPORTED, SF_SETTABLE, SF_SYNTHETIC, SF_RESTRICTED, SF_FIRMLINK и SF_DATALESS. Значения UF_SETTABLE, SF_SUPPORTED, SF_SETTABLE и SF_SYNTHETIC доступны только в macOS.

  • gh-113536: os.waitid() теперь доступен на macOS

  • gh-110459: Запуск configure ... --with-openssl-rpath=X/Y/Z больше не приводит к невозможности обнаружить OpenSSL на macOS.

  • gh-74573: Документируйте, что dbm.ndbm может молчаливо повреждать DBM-файлы при обновлении, когда превышаются недокументированные ограничения платформы, и при чтении такого поврежденного файла может произойти сбой (segmentation fault). (FB8919203)

  • gh-65701: Инструмент freeze не работает с фреймворковыми сборками Python. Задокументируйте это и выходите из игры раньше, если запускаете инструмент с такой сборкой.

  • gh-87277: webbrowser: Не ищите браузеры X11 в macOS. Они обычно не используются, и их поиск может привести к запуску XQuartz, даже если он не используется в других случаях.

  • gh-111973: Обновите программу установки macOS для использования SQLite 3.44.2.

  • gh-108269: Установите значение CFBundleAllowMixedLocalizations в true в файле Info.plist для фреймворка, встроенного в Python.app и IDLE.app при установке фреймворка на macOS. Это позволит приложениям подхватывать предпочитаемую пользователем локаль, если она отличается от английской.

  • gh-102362: Убедитесь, что результат sysconfig.get_plaform() включает как минимум мажорную и минорную версии, даже если во время сборки MACOSX_DEPLOYMENT_TARGET установлен только мажорный вариант, чтобы соответствовать формату, ожидаемому pip.

  • gh-110017: Отключение стресс-теста обработки сигналов на macOS из-за ошибки в macOS (FB13453490).

  • gh-110820: Убедитесь, что определения препроцессора для ALIGNOF_MAX_ALIGN_T, SIZEOF_LONG_DOUBLE и HAVE_GCC_ASM_FOR_X64 корректны для сборок Universal 2 на macOS.

  • gh-109981: Используйте /dev/fd в macOS для определения количества открытых файлов в test.support.os_helper.fd_count, чтобы избежать сбоя при использовании «охраняемых» файловых дескрипторов при проверке на наличие открытых файлов.

IDLE

  • gh-72284: Улучшите списки возможностей, привязок клавиш редактора и привязок клавиш оболочки в документации по IDLE.

  • gh-113903: Исправление редкого сбоя test.test_idle, в test_configdialog.

  • gh-113729: Исправлена ошибка меню «Help -> IDLE Doc» в 3.11.7 и 3.12.1.

  • gh-113269: Исправление зависания test_editor на macOS Catalina.

  • gh-112898: Исправлена обработка несохраненных файлов при выходе из IDLE на macOS.

  • bpo-13586: Ввод выделенного текста при открытии диалога «Заменить».

C API

  • gh-106560: Исправьте лишние объявления в публичном API C. Объявляйте PyBool_Type, PyLong_Type и PySys_Audit() только один раз. Исправление Виктора Стиннера.

  • gh-112438: Исправлена поддержка единиц формата «es», «et», «es#» и «et#» во вложенных кортежах в PyArg_ParseTuple()-подобных функциях.

  • gh-111545: Добавьте функцию Py_HashPointer() для хэширования указателя. Исправление Виктора Стиннера.

  • gh-65210: Измените объявление параметра keywords в PyArg_ParseTupleAndKeywords() и PyArg_VaParseTupleAndKeywords() для лучшей совместимости с C++.

Python 3.13.0 alpha 2

Дата выхода: 2023-11-22

Ядро и встроенные модули

  • gh-112243: Не включать комментарии в отладочные выражения f-строк. Исправление от Пабло Галиндо

  • gh-112287: Немного оптимизируем интерпретатор уровня 2 (uop), загружая oparg и operand только при необходимости. Также снова удвоить ограничение на размер трассировки, на этот раз до 512.

  • gh-112266: Измените документацию __dict__ и __weakref__.

  • gh-111807: Уменьшите максимальную глубину стека парсера до 1000 в отладочных сборках WASI.

  • gh-111798: Когда Python собирается в режиме отладки, установите ограничение на рекурсию в C на 500 вместо 1500. Отладочная сборка, скорее всего, собрана с низким уровнем оптимизации, что подразумевает большее использование стековой памяти, чем релизная сборка. Исправление Виктора Стиннера.

  • gh-106529: Включить перевод неспециализированных FOR_ITER на уровень 2.

  • gh-111916: Сделать модули, связанные с hashlib, потокобезопасными без GIL

  • gh-81137: Отмените присваивание полю __code__ функции, когда новый объект кода имеет несоответствующий тип (например, от генератора к простой функции).

  • gh-79932: Вызывает исключение, если frame.clear() вызывается на приостановленном кадре.

  • gh-81925: Реализация собственных идентификаторов потоков для GNU KFreeBSD.

  • gh-111843: Использование экспоненциального отката позволяет сократить количество неудачных попыток оптимизации уровня 2 более чем на 99 %.

  • gh-110829: Присоединение к потоку теперь гарантирует, что базовый поток ОС завершился. Это необходимо для более безопасного выполнения fork() в многопоточных процессах.

  • gh-109369: Убедитесь, что трассировки второго уровня деоптимизируются, если код подвергается инструментальному контролю

  • gh-111772: Специализация слотов загрузки и хранения для _Py_T_OBJECT, а также Py_T_OBJECT_EX

  • gh-111666: Ускорьте работу BaseExceptionGroup.derive(), BaseExceptionGroup.subgroup() и BaseExceptionGroup.split(), изменив способ разбора переданных аргументов.

  • gh-111654: Исправление сбоя во время выполнения при возникновении ошибки в опкоде LOAD_FROM_DICT_OR_DEREF.

  • gh-111623: Добавляет поддержку обмена кортежами между интерпретаторами с помощью кросс-интерпретаторного API. Исправление Энтони Шоу.

  • gh-111354: oparg из YIELD_VALUE теперь 1, если инструкция является частью yield-from или await, и 0 в противном случае.

    Состояние кадра SUSPENDED теперь разделено на SUSPENDED и SUSPENDED_YIELD_FROM. Это упрощает код в _PyGen_yf.

  • gh-111520: Объедините интерпретаторы Уровня 1 (байткод) и Уровня 2 (микрооперации) вместе, переместив цикл интерпретатора Уровня 2 и переключатель в _PyEval_EvalFrameDefault() в Python/ceval.c. Файл Python/executor.c исчез. Также макросы TIER_ONE и TIER_TWO теперь обрабатываются генератором кода.

    **Осторожно! ** Это изменяет переменные окружения для включения микроопераций и их отладки на PYTHON_UOPS и PYTHON_LLTRACE.

  • gh-109181: Ускоряет создание объектов Traceback, лениво вычисляя номер строки. Исправление от Pablo Galindo

  • gh-111420: Разрешить комментарии типов в операторах with с круглыми скобками

  • gh-111438: Добавлена поддержка совместного использования флоатов между интерпретаторами с помощью кросс-интерпретаторного API. Исправление Энтони Шоу.

  • gh-111435: Добавьте поддержку совместного использования True и False между интерпретаторами с помощью кросс-интерпретаторного API. Исправление Энтони Шоу.

  • gh-102388: Исправлена ошибка, при которой кодеки iso2022_jp_3 и iso2022_jp_2004 считывали данные за пределы границ

  • gh-111366: Исправление проблемы в codeop, из-за которой исключения SyntaxError, возникающие при наличии недопустимого синтаксиса, не содержали точных сообщений об ошибках. Исправление от Pablo Galindo

  • gh-111380: Исправлена ошибка, из-за которой SyntaxWarning появлялся дважды при разборе, если в дальнейшем встречался недопустимый синтаксис. Исправление от Pablo galindo

  • gh-111374: Добавлена новая переменная окружения PYTHON_FROZEN_MODULES. Она определяет, будут ли замороженные модули игнорироваться механизмом импорта, что эквивалентно опции командной строки -X frozen_modules.

  • gh-111354: Удалите oparg из YIELD_VALUE. Измените oparg из RESUME, чтобы включить информацию об исключительной глубине. Эти изменения позволяют упростить код в генераторе close.

  • gh-94438: Исправление регрессии, из-за которой при отладке нельзя было переходить между is None и is not None. Исправление Саванны Островски.

  • gh-67224: Показывать строки исходного текста в трассировках при использовании опции -c во время работы Python. Исправление от Pablo Galindo

  • gh-111123: Исправлена ошибка, при которой объявление global в блоке except отклонялось, если глобал использовался в блоке else.

  • gh-110938: Исправление сообщений об ошибках для блоков с отступами, содержащих функции и классы с параметрами общего типа. Исправление от Pablo Galindo

  • gh-109214: Удалите ненужные обновления указателей инструкций перед возвратом из фреймов.

  • gh-110912: Корректно отображает обратную трассировку для исключений MemoryError, использующих модуль traceback. Исправление от Пабло Галиндо

  • gh-109894: Исправлено падение из-за неправильной инициализации статического MemoryError в подынтепретаторе.

  • gh-110892: Возвращает NULL для событий PyTrace_RETURN, вызванных исключением

  • gh-110864: Исправьте разбор аргумента _PyArg_UnpackKeywordsWithVararg для функций, определяющих параметры pos-or-keyword, vararg и kw-only.

  • gh-109094: Замените prev_instr в кадре интерпретатора на instr_ptr, который указывает на начало инструкции, выполняющейся в данный момент (или будет выполняться после возобновления кадра).

  • gh-110805: Позволяет repl показывать исходный код и полные трассировки. Исправление от Пабло Галиндо

  • gh-110722: Добавьте PYTHON_PRESITE=package.module, чтобы импортировать модуль на ранней стадии жизненного цикла интерпретатора до выполнения site.py. Для существования этой опции Python должен быть built in debug mode.

  • gh-110481: Реализуйте смещенный подсчет ссылок в сборках --disable-gil.

  • gh-110543: Исправление регрессии в Python 3.12, когда types.CodeType.replace() при вызове на объекте кода модуля или класса, содержащем понимание, приводил к поломке объекта кода. Исправление от Jelle Zijlstra.

  • gh-89519: Удалены дескрипторы с цепочкой classmethod (введены в bpo-19072). Теперь их нельзя использовать для обертывания других дескрипторов, таких как property. Основной дизайн этой функции был несовершенен и вызвал ряд проблем в дальнейшем. Чтобы «пропустить» classmethod, используйте атрибут __wrapped__, который был добавлен в Python 3.10.

  • gh-103615: Использование локальных событий для отслеживания опкодов

  • bpo-46657: Добавлена поддержка аллокатора памяти mimalloc.

  • gh-106718: Когда PyConfig.stdlib_dir задан явно, он теперь соблюдается и не переопределяется PyConfig.home.

  • gh-106905: Исправление некорректной ошибки SystemError о несоответствии глубины рекурсии конструктора AST.

  • gh-100445: Улучшено сообщение об ошибке для нетерминированных строк с эскейпами.

  • bpo-45759: Улучшены сообщения об ошибках для утверждений elif/else, не соответствующих ни одному правильному утверждению. Исправление от Jeremiah Vivian.

Библиотека

  • gh-111942: Исправление SystemError в конструкторе TextIOWrapper с некодируемым аргументом «errors» в режиме без отладки.

  • gh-111995: Добавлена константа NI_IDN в модуль socket, если она присутствует в C во время сборки, для использования с socket.getnameinfo().

  • gh-109538: Выдача предупреждения вместо отображения RuntimeError, если цикл событий уже закрыт на StreamWriter.__del__().

  • gh-111942: Исправление сбоев в io.TextIOWrapper.reconfigure() при передаче некорректных аргументов, например, нестроковой кодировки.

  • gh-111460: curses: восстановление поддержки широких символов (включая curses.unget_wch() и get_wch()) на macOS, которая была недоступна из-за регрессии в Python 3.12.

  • gh-103791: contextlib.suppress теперь поддерживает подавление исключений, поднятых как часть BaseExceptionGroup, в дополнение к недавней поддержке ExceptionGroup.

  • gh-111835: Класс mmap.mmap теперь имеет метод seekable(), который можно использовать, когда требуется объект, похожий на файл с возможностью поиска. Метод seek() теперь возвращает новую абсолютную позицию. Исправление от Donghee Na.

  • gh-111804: Удалите posix.fallocate() в WASI, поскольку базовая функция posix_fallocate() недоступна в WASI preview2.

  • gh-111841: Исправлено усечение аргументов по встроенному нулевому символу в os.putenv() и os.unsetenv() на Windows.

  • gh-111768: wsgiref.util.is_hop_by_hop() теперь корректно отображается в __all__.

  • gh-80731: Избегайте выполнения функции по умолчанию в cmd.Cmd в блоке except

  • gh-111541: Исправьте doctest для нестроящихся подклассов SyntaxError.

  • gh-111719: Добавьте дополнительную проверку аргументов для команды alias в pdb

  • gh-111482: time: Сделайте функции time.clock_gettime() и time.clock_gettime_ns() в 2 раза быстрее за счет более удобного соглашения о вызовах. Патч от Виктора Стиннера.

  • gh-110894: Вызовите обработчик циклических исключений для исключений в client_connected_cb из asyncio.start_server(), чтобы приложения могли их обработать. Исправление Кумара Адитьи.

  • gh-111531: Исправление утечки ссылок в методах bind_class() и bind_all() виджетов tkinter.

  • gh-111246: asyncio.loop.create_unix_server() теперь будет автоматически удалять сокет Unix при закрытии сервера.

  • gh-111356: Добавлены io.text_encoding(), io.DEFAULT_BUFFER_SIZE и io.IncrementalNewlineDecoder в io.__all__.

  • gh-66425: Удалите код для установки заголовка REMOTE_HOST из модуля wsgiref, так как он недоступен. Этот заголовок используется по соображениям производительности и не нужен в модуле wsgiref.

  • gh-111429: Ускорить pathlib.PurePath.relative_to() и is_relative_to().

  • gh-111342: Исправлена опечатка в math.sumprod().

  • gh-68166: Удалите упоминание о неподдерживаемом типе элемента «vsapi» в tkinter.ttk.Style.element_create(). Добавьте тесты для element_create() и других методов ttk.Style. Добавьте примеры для element_create() в документацию.

  • gh-111388: Добавьте параметр show_group к traceback.format_exception_only(), который позволяет форматировать экземпляры ExceptionGroup.

  • gh-79033: Еще одна попытка исправить asyncio.Server.wait_closed(). Теперь она блокирует до тех пор, пока не будут выполнены оба условия: сервер закрыт, и больше нет активных соединений. (Это означает, что в некоторых случаях, когда в 3.12.0 эта функция некорректно возвращалась немедленно, теперь она будет блокироваться; в частности, когда активных соединений нет, но сервер еще не закрыт).

  • gh-111259: Оптимизация рекурсивных подстановочных знаков в pathlib.

  • gh-111295: Исправление того, что time не проверял ошибки при инициализации.

  • gh-111253: Добавьте проверку ошибок при инициализации модуля _socket.

  • gh-111251: Исправление того, что _blake2 не проверял ошибки при инициализации.

  • gh-111233: Исправление того, что select не проверял ошибки при инициализации.

  • gh-111230: Исправление того, что ssl не проверял ошибки при инициализации.

  • gh-111174: Исправление сбоя в io.BytesIO.getbuffer(), вызываемом повторно для пустых BytesIO.

  • gh-111187: Отложите удаление версии для locale.getdefaultlocale() до Python 3.15.

  • gh-111159: Исправьте сравнение вывода doctest для исключений с примечаниями.

  • gh-110910: Исправьте обработку недействительных состояний в asyncio.TaskGroup и asyncio.Timeout. Теперь они вызывают корректную ошибку RuntimeError, если используются неправильно и после этого остаются в некорректном состоянии.

  • gh-111092: Заставьте turtledemo работать без включенного по умолчанию root.

  • gh-110944: Поддержка псевдонимов и удобных переменных для завершения pdb

  • gh-110745: Добавлен параметр newline в pathlib.Path.read_text(). Исправление от Junya Okabe.

  • gh-84583: Заставьте pdb войти в режим после смерти даже для SyntaxError.

  • gh-80675: Установите f_trace_lines = True на все кадры после pdb.set_trace()

  • gh-110771: Представьте части установки и очистки asyncio.run_forever() в виде отдельных методов asyncio.run_forever_setup() и asyncio.run_forever_cleanup(). Это позволяет более тесно интегрироваться с циклами событий GUI.

  • gh-110774: Поддержка установки кваргов asyncio.Runner loop_factory в unittest.IsolatedAsyncioTestCase

  • gh-110392: Исправьте tty.setraw() и tty.setcbreak(): ранее они возвращали частично измененный список исходных атрибутов tty. tty.cfmakeraw() и tty.cfmakecbreak() теперь делают копию списка специальных символов перед его модификацией.

  • gh-59013: Уточните номер строки точки останова функции в pdb

  • gh-88434: Выдавать предупреждение об устаревании для нецелых чисел в функциях и методах gettext, которые учитывают множественные формы, даже если перевод не найден.

  • gh-110395: Убедитесь, что объекты select.kqueue() корректно отображаются как закрытые в дочерних вилках, чтобы предотвратить операции с недействительным дескриптором файла.

  • gh-110196: Добавьте метод __reduce__ к IPv6Address, чтобы сохранить scope_id

  • gh-109747: Улучшены ошибки для неподдерживаемых look-behind паттернов. Теперь re.error выдается вместо OverflowError или RuntimeError при слишком большой ширине шаблона look-behind.

  • gh-109466: Добавьте свойство ipaddress.IPv4Address.ipv6_mapped, которое возвращает IPv4-сопоставленный IPv6-адрес.

  • gh-85098: Реализуйте CLI модуля symtable и улучшите repr модуля Symbol.

  • gh-108791: Улучшена обработка ошибок в интерфейсе командной строки pdb, благодаря чему он выдает более лаконичные сообщения об ошибках.

  • gh-105931: Измените compileall так, чтобы префикс stripdir удалялся из полного пути, записанного в скомпилированном файле .pyc, только в том случае, если префикс полностью совпадает с началом полного пути. Если префикс не совпадает, вычеркивание не производится и выводится соответствующее предупреждение.

    Ранее все компоненты пути префикса stripdir, которые совпадали с полным путем, удалялись, а те, которые не совпадали, оставались в одиночестве (в том числе и те, которые перемежались между совпадающими компонентами).

  • gh-107431: Сделайте типы DictProxy и ListProxy в multiprocessing.managers Generic Alias Types для [] использования в контекстах типизации.

  • gh-72904: Добавить glob.translate(). Эта функция преобразует имя пути с подстановочными знаками в стиле shell в регулярное выражение.

  • gh-90026: Определите USE_XATTRS на Cygwin, чтобы функции, связанные с XATTR, в модуле os стали доступны.

  • gh-90890: Новые методы mailbox.Maildir.get_info(), mailbox.Maildir.set_info(), mailbox.Maildir.get_flags(), mailbox.Maildir.set_flags(), mailbox.Maildir.add_flag(), mailbox.Maildir.remove_flag(). Эти методы ускоряют доступ к информации и/или флагам сообщения и полезны, когда нет необходимости обращаться к содержимому сообщения, например, при итерации по Maildir для поиска сообщений с определенными флагами.

  • gh-102956: Исправление возврата пустых байтовых строк после поиска в модуле zipfile

  • gh-102895: Добавлен параметр local_exit для code.interact(), чтобы exit() и quit не закрывали sys.stdin и не поднимали SystemExit.

  • gh-97928: Измените поведение tkinter.Text.count(). Теперь он всегда возвращает целое число, если указана одна или менее опций подсчета. Ранее он мог возвращать один счет в виде кортежа 1, целое число (только если была указана опция "update") или None, если элементов не найдено. Теперь результат будет таким же, если в качестве wantobjects указать 0.

  • gh-96954: Переключите хранение имен кодовых точек юникода на использование другой структуры данных, а именно directed acyclic word graph. Благодаря этому общая библиотека unicodedata уменьшится примерно на 440 килобайт. Внесено Карлом Фридрихом Больц-Терейком с использованием кода из проекта PyPy.

  • gh-73561: Опустить область видимости интерфейса в IPv6-адресе при использовании в качестве заголовка хоста с помощью http.client.

  • gh-86826: zipinfo теперь поддерживает весь диапазон значений в строке TZ, определенный RFC 8536, и обнаруживает все недопустимые форматы. Реализации на Python и C теперь вызывают исключения одного и того же типа при недопустимых данных.

Тесты

  • gh-111808: Сделайте значение по умолчанию test.support.infinite_recursion() условным в зависимости от того, использовались ли оптимизации при компиляции интерпретатора. Это поможет при работе с такими платформами, как WASI, размер стека которых сильно ограничен в отладочных сборках.

  • gh-110722: Сбор покрытия строк стандартных библиотек в наборе регрессионных тестов стал более точным и более быстрым. Исправление от Łukasz Langa.

  • gh-110367: Сделайте опцию regrtest --verbose3 совместимой с опциями --huntrleaks -jN. Теперь команда ./python -m test -j1 -R 3:3 --verbose3 работает так, как ожидалось. Исправление Виктора Стиннера.

  • gh-111165: Удалите больше не используемые функции run_unittest() и run_doctest() из модуля test.support.

  • gh-110932: Исправьте regrtest, если определена переменная окружения SOURCE_DATE_EPOCH: используйте значение переменной в качестве случайного зерна. Исправление Виктора Стиннера.

  • gh-110995: test_gdb: Исправление обнаружения gdb, собранного без поддержки сценариев Python. Исправление от Виктора Стиннера.

  • gh-110918: Шаблоны соответствия тестовых примеров, заданные опциями --match, --ignore, --matchfile и --ignorefile, теперь проверяются в порядке их указания, и последнее совпадение определяет, будет ли тестовый пример запущен или проигнорирован.

  • gh-108747: Добавьте модульный тест для крючков usercustomize и sitecustomize из site.

Построить

  • gh-96954: Заставьте make regen-unicodedata работать для сборок CPython вне дерева.

  • gh-112088: Добавьте скрипт Tools/build/regen-configure.sh для регенерации configure с образом контейнера Ubuntu. Образ контейнера quay.io/tiran/cpython_autoconf:271 (tiran/cpython_autoconf) больше не используется. Исправление Виктора Стиннера.

  • gh-111046: Для wasi-потоков память теперь экспортируется, чтобы исправить проблемы совместимости с некоторыми режимами выполнения wasm.

  • gh-110828: AIX 32bit требуется -latomic для сборки модуля расширения _testcapi.

  • gh-85283: Расширения errno, md5, resource, winsound, _ctypes_test, _multiprocessing.posixshmem, _scproxy, _stat, _testimportmultiple и _uuid. Расширения на C теперь собираются с помощью limited C API. Исправление Виктора Стиннера.

Windows

  • gh-111856: Исправляет fstat() в файловых системах, которые не поддерживают запросы идентификатора файла. К ним относятся FAT32 и exFAT.

  • gh-111293: Исправление os.DirEntry.inode, снижающее старшие 64 бита идентификатора файла в некоторых файловых системах под Windows.

  • gh-110913: WindowsConsoleIO теперь корректно разбивает большие буферы на куски, не разделяя последовательности UTF-8.

macOS

  • gh-59703: Для фреймворков macOS в getpath.c используйте системную функцию dladdr для поиска пути к общей библиотеке, а не зависите от устаревших API macOS.

  • gh-110950: Обновите программу установки macOS, чтобы включить в нее исправление Tcl/Tk из восходящего потока для предупреждения Secure coding is not enabled for restorable state!, возникающего в Tkinter на macOS 14 Sonoma.

  • gh-111015: Убедитесь, что IDLE.app и Python Launcher.app установлены с соответствующими правами на сборках macOS.

  • gh-71383: Обновите программу установки macOS, чтобы включить в нее исправление ошибки ttk::ThemeChanged, возникающей в Tkinter при работе с Tcl/Tk.

  • gh-92603: Обновите программу установки macOS, чтобы включить исправление, принятое восходящим потоком Tcl/Tk, для ошибки, возникающей после уничтожения первого экземпляра tkinter.Tk().

IDLE

  • bpo-35668: Добавьте документацию к модулю отладчика IDLE. Исправьте две ошибки: инициализируйте Idb.botframe (должно быть в Bdb); в Idb.in_rpc_code проверяйте, является ли prev_frame None, прежде чем пытаться его использовать. Значительно расширить test_debugger.

Инструменты/демоверсии

  • gh-111903: Argument Clinic теперь поддерживает директиву @critical_section, которая предписывает Argument Clinic генерировать критическую секцию вокруг вызова функции, что блокирует объект self в сборках --disable-gil. Исправление Сэма Гросса.

C API

  • gh-112026: Добавьте еще раз приватную функцию _PyThreadState_UncheckedGet() в качестве псевдонима к новой публичной функции PyThreadState_GetUnchecked(). Исправление Виктора Стиннера.

  • gh-112026: Восстановите удаленную функцию _PyDict_GetItemStringWithError(). Она используется numpy. Исправление от Виктора Стиннера.

  • gh-112026: Восстановление удаленных частных функций, макросов и структур C API, которым пока нет простой замены:

    • _PyDict_GetItem_KnownHash()

    • _PyDict_NewPresized()

    • _PyHASH_BITS

    • _PyHASH_IMAG

    • _PyHASH_INF

    • _PyHASH_MODULUS

    • _PyHASH_MULTIPLIER

    • _PyLong_Copy()

    • _PyLong_FromDigits()

    • _PyLong_New()

    • _PyLong_Sign()

    • _PyObject_CallMethodId()

    • _PyObject_CallMethodNoArgs()

    • _PyObject_CallMethodOneArg()

    • _PyObject_CallOneArg()

    • _PyObject_EXTRA_INIT

    • _PyObject_FastCallDict()

    • _PyObject_GetAttrId()

    • _PyObject_Vectorcall()

    • _PyObject_VectorcallMethod()

    • _PyStack_AsDict()

    • _PyThread_CurrentFrames()

    • Структура _PyUnicodeWriter

    • _PyUnicodeWriter_Dealloc()

    • _PyUnicodeWriter_Finish()

    • _PyUnicodeWriter_Init()

    • _PyUnicodeWriter_Prepare()

    • _PyUnicodeWriter_PrepareKind()

    • _PyUnicodeWriter_WriteASCIIString()

    • _PyUnicodeWriter_WriteChar()

    • _PyUnicodeWriter_WriteLatin1String()

    • _PyUnicodeWriter_WriteStr()

    • _PyUnicodeWriter_WriteSubstring()

    • _PyUnicode_AsString()

    • _PyUnicode_FromId()

    • _PyVectorcall_Function()

    • _Py_IDENTIFIER()

    • _Py_c_abs()

    • _Py_c_diff()

    • _Py_c_neg()

    • _Py_c_pow()

    • _Py_c_prod()

    • _Py_c_quot()

    • _Py_c_sum()

    • _Py_static_string()

    • _Py_static_string_init()

    Патч Виктора Стиннера.

  • gh-112026: Снова добавьте <ctype.h> и <unistd.h> в Python.h, но не включайте их в ограниченный C API версии 3.13 и новее. Исправление Виктора Стиннера.

  • gh-111956: Добавьте API только внутренней одноразовой инициализации: _PyOnceFlag и _PyOnceFlag_CallOnce.

  • gh-111262: Добавьте функции PyDict_Pop() и PyDict_PopString(): удаление ключа из словаря и возвращение удаленного значения по желанию. Это похоже на dict.pop(), но без значения по умолчанию и без поднятия KeyError, если ключ отсутствует. Исправление Стефана Бехнеля и Виктора Стиннера.

  • gh-111863: Переименуйте Py_NOGIL в Py_GIL_DISABLED. Патч от Хьюго ван Кеменаде.

  • gh-111138: Добавьте функции PyList_Extend() и PyList_Clear(): аналогично методам Python list.extend() и list.clear(). Исправление Виктора Стиннера.

  • gh-108765: В Windows Python.h больше не включает стандартный заголовочный файл <stddef.h>. Если он необходим, то теперь его следует включать явно. Исправление Виктора Стиннера.

  • gh-111569: Реализуйте «Критические секции Python» из PEP 703. Это макросы, которые помогут заменить GIL на пер-объектные блокировки в сборке --disable-gil CPython. В сборке по умолчанию макросы не работают.

  • gh-111506: В ограниченном API C версии 3.13 функция Py_SET_REFCNT() теперь реализована как непрозрачный вызов функции. Исправление Виктора Стиннера.

  • gh-108082: Добавить функцию PyErr_FormatUnraisable().

  • gh-110964: Переместите недокументированные частные функции _PyArg и структуру _PyArg_Parser во внутренний C API (pycore_modsupport.h). Исправление Виктора Стиннера.

  • gh-110815: Поддерживать имена ключевых слов, отличные от ASCII, в PyArg_ParseTupleAndKeywords().

  • gh-109587: Представлены PyUnstable_PerfTrampoline_CompileCode(), PyUnstable_PerfTrampoline_SetPersistAfterFork() и PyUnstable_CopyPerfMapFile(). Эти функции позволяют модулям расширения инициализировать батуты с нетерпением, после того как приложение «разогрелось». Это делает возможным постоянное выполнение perf-батутов.

  • gh-85283: Добавьте функцию PySys_Audit() в ограниченный C API. Исправление Виктора Стиннера.

  • gh-85283: Добавьте PyMem_RawMalloc(), PyMem_RawCalloc(), PyMem_RawRealloc() и PyMem_RawFree() в ограниченный C API. Исправление Виктора Стиннера.

  • gh-106672: Функции PyDict_GetItem(), PyDict_GetItemString(), PyMapping_HasKey(), PyMapping_HasKeyString(), PyObject_HasAttr(), PyObject_HasAttrString() и PySys_GetObject(), которые очищают все ошибки, возникшие при вызове функции, сообщают о них теперь с помощью sys.unraisablehook().

  • gh-67565: Удалена лишняя проверка на C-континуальность в getargs.c, binascii, ssl и Argument Clinic. Исправлено Стефаном Крахом и Фурканом Ондером

Python 3.13.0 alpha 1

Дата выхода: 2023-10-13

Безопасность

  • gh-108310: Исправлена проблема, из-за которой экземпляры ssl.SSLSocket были уязвимы к обходу рукопожатия TLS и включенных в него защит (например, проверки сертификата), а также к обработке отправленных незашифрованных данных, как если бы они были зашифрованы после рукопожатия TLS. О проблеме безопасности сообщил CVE-2023-40217 Аапо Оксман. Исправление разработано Грегори П. Смитом.

  • gh-107774: В PEP 669 указано, что sys.monitoring.register_callback будет генерировать событие аудита. В предыдущих версиях Python 3.12 событие аудита не генерировалось. Теперь это исправлено.

  • gh-102988: Исправлено изменение email.utils, связанное с улучшением безопасности, выпущенное в версии 3.12beta4, которое непреднамеренно приводило к тому, что email.utils.getaddresses не мог разобрать адреса электронной почты с запятой в поле имени, взятого в кавычки. См. gh-106669.

  • gh-99108: Обновите наш новый встроенный код HACL* hashlib из апстрима. Встроенный SHA2 должен работать быстрее, а также исправлена проблема с SHA3 на 32-битных платформах.

  • gh-102509: Начните инициализацию ob_digit во время создания объектов PyLongObject. Исправление Илии Волочии.

Ядро и встроенные модули

  • gh-110782: Исправление сбоя при построении typing.TypeVar с аргументом в виде ключевого слова. Исправление от Jelle Zijlstra.

  • gh-110752: Сброс ceval.eval_breaker в interpreter_clear()

  • gh-110721: Используйте реализацию traceback для функциональности PyErr_Display() по умолчанию. Исправление от Пабло Галиндо

  • gh-110696: Исправление некорректного сообщения об ошибке при распаковке недопустимого аргумента. Исправление от Pablo Galindo

  • gh-104169: Разделите токенизатор на две отдельные директории: - Одна часть включает в себя собственно логику производства лексем и находится в Parser/lexer. - Вторая часть оборачивает лексему в соответствии с различными режимами токенизации (string, utf-8, file, interactive, readline) и находится в Parser/tokenizer.

  • gh-110688: Удалите недокументированный метод test_c_api из set, который был определен только для целей тестирования в Py_DEBUG. Теперь у нас есть правильные тесты CAPI.

  • gh-104584: Исправлена утечка ссылок при запуске с включенным PYTHONUOPS или -X uops.

  • gh-110514: Добавьте события PY_THROW к событиям sys.setprofile().

  • gh-110489: Оптимизируйте math.ceil(), когда на вход подается именно float, что приводит к улучшению примерно на 10 %.

  • gh-110455: Охраняйте assert(tstate->thread_id > 0) с помощью #ifndef HAVE_PTHREAD_STUBS. Это позволяет сборкам pydebug работать под WASI, в котором (в настоящее время) отсутствует поддержка потоков.

  • gh-110309: Удалите ненужные пустые константные узлы в асте спецификаций f-строк.

  • gh-110259: Корректное определение спецификации форматирования в f-строках (с одинарными или тройными кавычками), которые имеют несколько строк в части выражения и включают спецификацию форматирования. Исправление от Pablo Galindo

  • gh-110237: Исправление отсутствующих проверок ошибок для вызовов PyList_Append в _PyEval_MatchClass.

  • gh-110164: regrtest: Если определена переменная окружения SOURCE_DATE_EPOCH, regrtest теперь отключает рандомизацию тестов. Исправление Виктора Стиннера.

  • gh-109889: Исправьте алгоритм обнаружения избыточных NOP компилятора, чтобы он пропускал NOP без номера строки при поиске номера строки следующей инструкции.

  • gh-109853: sys.path[0] теперь устанавливается правильно для субинтерпретаторов.

  • gh-109923: Установка номера строки на POP_TOP, следующей за RETURN_GENERATOR.

  • gh-105716: Субинтерпретаторы теперь корректно обрабатывают случай, когда у них есть потоки, запущенные в фоновом режиме. Раньше такие потоки мешали их очистке и уничтожению, а также мешали запуску другого скрипта.

  • gh-109369: Внутренний eval_breaker и поддерживающие его флаги, а также версия мониторинга были объединены в одно атомарное целое число для ускорения проверок.

  • gh-109823: Исправлена ошибка, при которой компилятор не корректировал метки при удалении пустого базового блока, являющегося целью перехода.

  • gh-109793: Главный поток больше не завершается преждевременно, когда подынтерпретатор очищается во время финализации выполнения. Эта ошибка представляла собой проблему, в частности, потому, что при ее возникновении процесс Python всегда возвращался с кодом завершения 0, даже если он потерпел неудачу.

  • gh-109719: Исправление отсутствующих меток цели перехода при переупорядочивании компилятором холодных/теплых блоков.

  • gh-109595: Добавьте опцию командной строки -X cpu_count, чтобы отменить результаты возврата os.cpu_count() и os.process_cpu_count(). Эта опция полезна для пользователей, которым нужно ограничить ресурсы процессора контейнерной системы без необходимости модифицировать контейнер (код приложения). Исправление от Donghee Na.

  • gh-109627: Исправлена ошибка, при которой компилятор не присваивал новую метку цели перехода дублированному блоку малого выхода.

  • gh-109596: Исправьте некоторые лексемы в грамматике, которые были неправильно помечены как мягкие ключевые слова. Также исправлены некоторые повторяющиеся имена правил и исключено повторение правил. Исправление от Pablo Galindo

  • gh-109496: На Python, собранном в режиме отладки, Py_DECREF() теперь вызывает _Py_NegativeRefcount(), если объект является висячим указателем на деаллоцированную память: память, заполненную 0xDD «мёртвым байтом», заполненным отладочным хуком на аллокаторах памяти. Исправление заключается в проверке количества ссылок перед проверкой на _Py_IsImmortal(). Исправление Виктора Стиннера.

  • gh-107265: Деоптировать опкоды, скрытые исполнителем, когда требуется базовый опкод

  • gh-109371: Деоптировать инструкции правильно для инициализации инструмента и изменить неправильное утверждение в инструментарии, когда предыдущий инструмент уже устанавливает события INSTRUCTION

  • gh-105658: Исправлена ошибка, при которой трассировка строки блока except, заканчивающегося условным выражением, включала избыточное событие со строкой условного выражения.

  • gh-109219: Исправление компиляции диапазонов type param, использующих имя, которое также свободно во внутреннем диапазоне.

  • gh-109351: Исправление сбоя при компиляции некорректного AST с именованным (моржовым) выражением.

  • gh-109341: Исправление сбоя при компиляции некорректного AST с участием ast.TypeAlias.

  • gh-109195: Исправьте исходное расположение инструкции LOAD_*, предшествующей инструкции LOAD_SUPER_ATTR для загрузки глобальной (или теневой) переменной super таким образом, чтобы она охватывала только имя super, а не следующие за ним круглые скобки.

  • gh-109256: Идентификаторы опкодов для специализированных опкодов выделяются в свой собственный диапазон, чтобы улучшить стабильность идентификаторов для «настоящих» опкодов.

  • gh-109216: Исправьте возможную утечку памяти в BUILD_MAP.

  • gh-109207: Исправьте системную ошибку в __repr__ объекта записи symtable.

  • gh-109179: Исправлена ошибка, из-за которой при отображении трассировки на C пропадали заметки из SyntaxError.

  • gh-109118: Запретить вложенные области (лямбды, генераторы выражений и понимания) в областях аннотаций PEP 695, которые вложены в классы.

  • gh-109156: Добавьте тесты для удаления инструментов из инструкций, сохраняя инструменты для строк

  • gh-109114: Расслабьте определение сообщения об ошибке для недопустимых лямбд внутри f-строк, чтобы не искать произвольные поля замены во избежание ложных срабатываний. Исправление от Пабло Галиндо

  • gh-105848: Добавьте новый опкод CALL_KW, используемый для вызовов, содержащих аргументы в виде ключевых слов. Также исправлен возможный сбой при переходе по вызовам методов в отладчике.

  • gh-109052: Используйте базовый опкод при сравнении объектов кода, чтобы избежать вмешательства инструментария

  • gh-109118: Исправление падения интерпретатора при возникновении NameError внутри параметров типа общего класса.

  • gh-88943: Улучшена синтаксическая ошибка для не-ASCII символа, следующего за числовым литералом. Теперь она указывает на недопустимый не-ASCII символ, а не на допустимый числовой литерал.

  • gh-108976: Исправление сбоя, возникающего после деинструментации объекта кода в обратном вызове мониторинга.

  • gh-108732: Снова сделайте итерационные переменные в пониманиях, скопированных на модули и классы, видимыми для pdb и других инструментов, использующих frame.f_locals.

  • gh-108959: Исправлено размещение каретки в местах ошибок для операций с подстрочными и бинарными символами, в которых используются несемантические круглые скобки и пробелы. Исправление от Pablo Galindo

  • gh-104584: Исправление сбоя при запуске с включенным PYTHONUOPS или -X uops и возникновении ошибки при оптимизации.

  • gh-108727: Определите tp_dealloc для CounterOptimizer_Type. Это исправляет ошибку сегментации при деаллокации.

  • gh-108520: Исправьте multiprocessing.synchronize.SemLock.__setstate__() для правильной инициализации multiprocessing.synchronize.SemLock._is_fork_ctx. Это исправляет регрессию при передаче SemLock между вложенными процессами.

    Переименуйте multiprocessing.synchronize.SemLock.is_fork_ctx в multiprocessing.synchronize.SemLock._is_fork_ctx, чтобы не раскрывать его как публичный API.

  • gh-108654: Восстановление локалей, затененных встроенным пониманием, если это понимание вызывает исключение.

  • gh-108488: Измените инициализацию записей встроенного кэша таким образом, чтобы запись кэша для JUMP_BACKWARD инициализировалась нулем, а не значением adaptive_counter_warmup(), используемым для всех остальных инструкций. Этот счетчик, уникальный для всех инструкций, ведет отсчет от нуля.

  • gh-108716: Отключает глубокую заморозку объектов кода. Модули остаются замороженными, так что поиск в файловой системе для общих модулей не требуется.

  • gh-108614: Добавлена инструкция RESUME_CHECK, чтобы избежать необходимости обработки инструментария, сигналов и переключения контекстов в механизме выполнения второго уровня.

  • gh-108487: Переместите утверждение, которое может вызвать ложный сбой в опасном случае, который должен вызывать только деоптимизацию.

  • gh-106176: Используйте WeakValueDictionary для отслеживания списков, содержащих модули, которые каждый поток импортирует в данный момент. Это помогает избежать утечки ссылок из-за того, что список хранится дольше, чем нужно. Используются слабые ссылки, так как GC не может прервать очистку.

  • gh-105481: Этап сборки regen-opcode был удален, и теперь его работа выполняется в regen-cases.

  • gh-107901: Исправьте отсутствие номера строки в JUMP_BACKWARD в конце цикла for.

  • gh-108113: Встроенный compile() теперь может принимать новый флаг, ast.PyCF_OPTIMIZED_AST, который аналогичен ast.PyCF_ONLY_AST, за исключением того, что возвращаемый AST оптимизируется в зависимости от значения аргумента optimize.

    ast.parse() теперь принимает необязательный аргумент optimize, который передается во встроенную compile(). Это позволяет получить оптимизированный AST.

  • gh-107971: Идентификаторы опкодов генерируются из bytecodes.c вместо того, чтобы жестко кодироваться в opcode.py.

  • gh-107944: Улучшено сообщение об ошибке для вызовов функций с плохими аргументами ключевых слов. Исправление от Pablo Galindo

  • gh-108390: Вызывает исключение при установке нелокального события (RAISE, EXCEPTION_HANDLED и т. д.) в sys.monitoring.set_local_events.

    Исправление сбоя при трассировке в рекурсивных вызовах классов Python.

  • gh-108035: Удалите структуру _PyCFrame, переместив указатель на текущий фрейм интерпретатора обратно в состояние потока, как это было в 3.10 и более ранних версиях. Структура _PyCFrame существовала как оптимизация производительности для трассировки. С тех пор как был реализован PEP 669, эта оптимизация больше не применяется.

  • gh-91051: Исправление прерывания/сегфайта при использовании всех восьми слотов наблюдателя типов на платформах, где char подписан по умолчанию.

  • gh-106581: Исправление возможных сбоев утверждений и пропущенных событий инструментария при включении PYTHONUOPS или -X uops.

  • gh-107526: Верните преобразование vars, dir, next, getattr и iter в клинику аргументов.

  • gh-84805: Автогенерация сигнатур для функций расширения METH_NOARGS и METH_O.

  • gh-107758: Сделайте процедуру dump_stack(), используемую функцией lltrace (низкоуровневая отладка интерпретатора), устойчивой к рекурсии, обеспечив, чтобы она никогда не вызывала метод __repr__, реализованный на Python. Также сделайте так, чтобы аналогичный вывод для Tier-2 uops отображался на stdout (вместо stderr), чтобы соответствовать коду lltrace в ceval.c.

  • gh-107659: Добавьте документацию для ctypes.pointer() и ctypes.POINTER().

  • gh-105848: Измените байткод таким образом, чтобы фактический вызываемый метод для CALL находился в последовательной позиции в стеке (независимо от того, активна ли оптимизация вызова связанных методов).

  • gh-107674: Исправлена регрессия производительности в sys.settrace.

  • gh-107724: В предварительных версиях 3.12, вплоть до rc1, в функции обратного вызова sys.monitoring для события PY_THROW отсутствовал третий аргумент исключения. Теперь это исправлено.

  • gh-84436: Пропускает модификацию количества ссылок для многих известных бессмертных объектов.

  • gh-107596: Специализируйтесь на подписывании объектов str по индексам int.

  • gh-107080: Сборки Trace refs (--with-trace-refs) аварийно завершались при использовании изолированных подинтерпретаторов. Проблемное глобальное состояние было изолировано для каждого интерпретатора. Кроме устранения сбоев, это изменение не влияет на пользователей.

  • gh-107557: Генерируем кейсы, необходимые для абстрактного интерпретатора второго уровня для оптимизационных проходов в CPython.

  • gh-106608: Сделайте _PyUOpExecutorObject переменной длины.

  • gh-100964: Очистить состояние исключения генераторов после return, чтобы прервать циклы обращения.

  • gh-107455: Улучшение сообщений об ошибках при преобразовании несовместимого типа в ctypes.c_char_p, ctypes.c_wchar_p и ctypes.c_void_p.

  • gh-107263: Увеличиваем лимит рекурсии C для функций, отличных от основного интерпретатора, с 800 до 1500. Это позволит таким функциям, как list.__repr__ и json.dumps, обрабатывать все входы, которые они могли обрабатывать до версии 3.12

  • gh-104584: Исправлена проблема, приводившая к некорректному чтению встроенных кэшей при запуске с включенным PYTHONUOPS или -X uops.

  • gh-104432: Исправление потенциального не выровненного доступа к памяти в API на C, включающего возвращаемые последовательности указателей char * в модулях grp и socket. Они были обнаружены в сборке -fsaniziter=alignment на ARM macOS. Исправление Кристофера Чавеса.

  • gh-106078: Изолируйте _decimal (примените PEP 687). Исправление от Чарли Чжао.

  • gh-106898: Добавьте исключение в качестве третьего аргумента к обратным вызовам PY_UNIND в sys.monitoring. Это делает обратный вызов PY_UNWIND согласованным с другими обратными вызовами обработки исключений.

  • gh-106895: Вызывает ValueError, когда функция обратного вызова мониторинга возвращает DISABLE для событий, которые не могут быть отключены локально.

  • gh-106897: Добавьте в sys.monitoring событие RERAISE, которое происходит при повторном возникновении исключения, либо явно в обычном операторе raise, либо неявно в блоке except или finally.

  • gh-77377: Убедитесь, что объекты многопроцессорной синхронизации, созданные в контексте fork, не передаются другому процессу, созданному в контексте spawn. Это превращает segfault в actionable RuntimeError в родительском процессе.

  • gh-106931: Статически выделенные строковые объекты теперь интернируются глобально, а не для каждого интерпретатора. Это исправляет ситуацию, когда такая строка могла быть интернирована только в одном интерпретаторе. Обычные строковые объекты не затрагиваются.

  • gh-104621: Неподдерживаемые модули теперь всегда не импортируются.

  • gh-107122: Добавьте dbm.ndbm.ndbm.clear() к dbm.ndbm. Патч от Donghee Na.

  • gh-107122: Добавьте dbm.gnu.gdbm.clear() к dbm.gnu. Патч от Donghee Na.

  • gh-107015: Токены ASYNC и AWAIT удалены из грамматики, что устраняет возможность сделать async и await мягкими ключевыми словами при использовании feature_version<7 в ast.parse().

  • gh-106917: Исправление вызовов методов super() в стиле classmethod (т.е. когда второй аргумент super() или подразумеваемый второй аргумент из self/cls в случае zero-arg super является типом), когда цель вызова не является classmethod.

  • gh-105699: Python больше не падает из-за нечастой гонки при инициализации интерпритированных строк для каждого интерпретатора. Падение проявлялось, когда интерпретатор был завершен.

  • gh-105699: Python больше не падает из-за нечастой гонки при установке Py_FileSystemDefaultEncoding и Py_FileSystemDefaultEncodeErrors (оба deprecated), когда одновременно инициализируются два изолированных подынтерпретатора. Теперь они устанавливаются только во время инициализации во время выполнения.

  • gh-106908: Исправлены различные зависания, утечки ссылок, сбои в тестах и ошибки трассировки/интроспекции при запуске с включенным PYTHONUOPS или -X uops.

  • gh-106092: Исправление ошибки сегментации, вызванной ошибкой use-after-free в frame_dealloc, когда корзина задерживала деаллокацию PyFrameObject.

  • gh-106485: Сократите количество материализованных словарей экземпляров, дематериализовав их, когда это возможно.

  • gh-106719: Больше не подавляет произвольные ошибки в геттере и сеттере __annotations__ в типах и модулях.

  • gh-106723: Передайте frozen_modules интерпретаторам многопроцессорных порожденных процессов.

  • gh-104909: Разделите LOAD_ATTR_INSTANCE_VALUE на микрооперации.

  • gh-104909: Разделите специализации LOAD_GLOBAL на микроопы.

  • gh-106597: В _PyRuntimeState добавлена новая отладочная структура смещений, которая поможет внепроцессным отладчикам и профилировщикам получать смещения соответствующих структур интерпретатора способом, не зависящим от того, как был скомпилирован Python, и не требующим копирования заголовков. Патч от Pablo Galindo

  • gh-106487: Разрешить аргументу count в str.replace() быть ключевым словом. Исправление Хьюго ван Кеменаде.

  • gh-96844: Улучшите сообщение об ошибке list.remove(). Исправление от Donghee Na.

  • gh-81283: Компилятор теперь убирает отступы от строк документов. Это уменьшает размер файла pyc на 5%, если модуль сильно документирован. Это изменение затрагивает __doc__, так что инструменты вроде doctest будут затронуты.

  • gh-106396: Когда спецификация формата выражения f-строки пуста, парсер теперь генерирует для нее пустой узел ast.JoinedStr, а не одноэлементный ast.JoinedStr с пустой строкой ast.Constant.

  • gh-100288: Специализируйте LOAD_ATTR для недескрипторов класса. Добавляет LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES и LOAD_ATTR_NONDESCRIPTOR_NO_DICT.

  • gh-106008: Исправление возможных утечек ссылок при неудачной оптимизации сравнений с None в компиляторе байткода.

  • gh-106145: Сделайте end_lineno и end_col_offset обязательными для type_param узлов ast.

  • gh-106213: Изменен способ работы батутов вызовов Emscripten для совместимости с интеграцией Wasm/JS Promise.

  • gh-106182: sys.getfilesystemencoding() и sys.getfilesystemencodeerrors теперь возвращают интернированный объект Unicode.

  • gh-106210: Удален батут импорта Emscripten, так как он больше не нужен для Pyodide.

  • gh-104584: Добавили новый, экспериментальный, трассировочный оптимизатор и интерпретатор (он же «tier 2»). В настоящее время он пессимизирует, поэтому пока не используйте его - это инфраструктура, чтобы мы могли экспериментировать с оптимизацией проходов. Чтобы включить его, передайте -Xuops или установите PYTHONUOPS=1. Чтобы получить отладочный вывод, установите PYTHONUOPSDEBUG=N, где N - уровень отладки (0-4, где 0 - нет отладочного вывода, а 4 - чрезмерно многословный).

  • gh-105775: LOAD_CLOSURE теперь является псевдо-опцией.

  • gh-105730: Разрешите использовать в качестве предиката условия в BaseExceptionGroup.split() и BaseExceptionGroup.subgroup() любой вызываемый объект, кроме объектов типа.

  • gh-105979: Исправление сбоя в _imp.get_frozen_object() из-за неправильной обработки исключений.

  • gh-106003: Добавьте новую инструкцию TO_BOOL, которая выполняет булевы преобразования для POP_JUMP_IF_TRUE, POP_JUMP_IF_FALSE и UNARY_NOT (все они теперь ожидают точных значений bool). Кроме того, измените oparg команды COMPARE_OP, чтобы включить необязательный флаг «булево преобразование».

  • gh-98931: Убедитесь, что для некорректного импорта с несколькими целями выдаются пользовательские сообщения об ошибках SyntaxError. Исправление от Pablo Galindo

  • gh-105724: Улучшите сообщения об ошибках assert, указав точный диапазон ошибок.

  • gh-105908: Исправлена ошибка, при которой gh-99111 нарушал будущий импорт barry_as_FLUFL в Python REPL.

  • gh-105840: Исправление возможных сбоев при специализации вызовов функций со слишком большим количеством __defaults__.

  • gh-105831: Исправление ошибки с f-строкой, когда использование отладочного выражения (знак =), появляющегося в последней строке файла, приводило к тому, что буфер отладки, в котором хранится текст выражения, был слишком мал на один символ.

  • gh-105800: Корректно выдает SyntaxWarning в f-строках, если используются недопустимые последовательности. Исправление от Pablo Galindo

  • gh-105340: Включите итерационную переменную понимания в locals() внутри понимания, относящегося к модулю или классу.

  • gh-105331: Поднимает ValueError, если аргумент delay в asyncio.sleep() является NaN (совпадает с time.sleep()).

  • gh-105587: Время выполнения не может гарантировать, что бессмертные объекты не будут мутированы расширениями. Таким образом, это модифицирует _PyStaticObject_CheckRefcnt, чтобы предупреждать, а не утверждать.

  • gh-105564: Не включайте артифициальные новые строки в атрибут line токенов в API модуля tokenize. Исправление от Пабло Галиндо

  • gh-105549: Токенизируйте отдельно токены NUMBER и NAME, которые не являются неоднозначными. Исправление Пабло Галиндо.

  • gh-105588: Исправление проблемы, которая могла привести к сбоям при компиляции неверно сформированных узлов ast.

  • gh-100987: Разрешите объектам, отличным от объектов кода, выступать в качестве «исполняемого» во внутренних фреймах. В долгосрочной перспективе это поможет таким инструментам, как Cython и PySpy, взаимодействовать более эффективно. В краткосрочной перспективе это позволит нам выполнять некоторые оптимизации более просто.

  • gh-105375: Исправление ошибок в модуле builtins, когда исключения могли быть перезаписаны.

  • gh-105375: Исправлена ошибка в компиляторе, из-за которой исключение могло быть перезаписано.

  • gh-105375: Улучшена обработка ошибок в PyUnicode_BuildEncodingMap(), где исключение могло быть перезаписано.

  • gh-105486: Измените repr из ParamSpec списка args в types.GenericAlias.

  • gh-105678: Разбейте инструкцию MAKE_FUNCTION на две части: MAKE_FUNCTION, которая создает функцию, и SET_FUNCTION_ATTRIBUTE, которая устанавливает атрибуты функции. Это делает эффект стека MAKE_FUNCTION регулярным, чтобы облегчить оптимизацию и генерацию кода.

  • gh-105435: Исправление ложного символа новой строки, если файл заканчивается на комментарии без новой строки. Исправление от Pablo Galindo

  • gh-105390: Корректно поднимает исключения tokenize.TokenError вместо SyntaxError для ошибок токенизации, таких как неполный ввод. Исправление от Pablo Galindo

  • gh-105259: Не включать символ новой строки в концевые токены NEWLINE, выдаваемые в модуле tokenize. Исправление от Pablo Galindo

  • gh-104635: Устранение лишних инструкций STORE_FAST в компиляторе. Исправление от Donghee Na и Carl Meyer.

  • gh-105324: Исправьте главную функцию модуля tokenize при чтении из sys.stdin. Исправление от Pablo Galindo

  • gh-33092: Упрощение и ускорение интерпретатора f-строк. Удален опкод FORMAT_VALUE. Добавлены опкоды CONVERT_VALUE, FORMAT_SIMPLE и FORMAT_WITH_SPEC. Компилятор выдает более эффективную последовательность для каждого форматного выражения.

  • gh-105229: Удалите оставшиеся суперинструкции с двумя кодовыми единицами. Все оставшиеся суперинструкции принимают только одну кодовую единицу, что упрощает инструментарий и ускорение.

  • gh-105235: Предотвращение выхода за пределы памяти во время вызовов mmap.find().

  • gh-98963: Восстановление возможности для подкласса property определять __slots__ или иным образом быть бездиктовым, игнорируя неудачные попытки установить docstring для такого класса. Это поведение было изменено в 3.12beta1. Появление AttributeError там, где его раньше не было, нарушало существующий код.

  • gh-104812: Механизм «отложенного вызова» теперь работает для всех интерпретаторов, а не только для главного, и выполняется во всех потоках, а не только в главном. Некоторые вызовы по-прежнему выполняются только в главном потоке, следовательно, в главном интерпретаторе. Это изменение не затрагивает ни обработку сигналов, ни существующий публичный C-API (Py_AddPendingCall()), который по-прежнему предназначен только для главного потока. Новая функциональность пока предназначена только для внутреннего использования, так как последствия ее применения пока не очень понятны за пределами некоторых очень ограниченных случаев. Это изменение приводит возможность в соответствие с намерениями, когда несколько лет назад состояние было сделано индивидуальным для каждого интерпретатора.

  • gh-105194: Не экранируйте обратными косыми чертами спецификаторы формата f-строк. Исправление от Пабло Галиндо

  • gh-105229: Замените некоторые динамические суперинструкции эквивалентами из одной инструкции.

  • gh-105162: Исправлена ошибка в generator.close()/throw(), когда внутренний итератор игнорировался, когда внешний итератор был инструментирован.

  • gh-105164: Обеспечение корректной установки аннотаций, если единственная аннотация в блоке находится в блоке match. Исправление от Jelle Zijlstra.

  • gh-105148: Сделайте _PyASTOptimizeState внутренним для ast_opt.c. Пусть _PyAST_Optimize принимает два целых числа вместо указателя на эту структуру. Это избавит от необходимости включать pycore_compile.h в ast_opt.c.

  • gh-104799: Атрибуты узлов ast, которые являются списками, теперь по умолчанию принимают значение пустого списка, если оно опущено. Это означает, что некоторый код, который ранее выдавал TypeError при использовании узла AST, теперь будет работать с пустым списком. Исправление от Jelle Zijlstra.

  • gh-105111: Удалите старые макросы Py_TRASHCAN_SAFE_BEGIN и Py_TRASHCAN_SAFE_END для мусорной корзины. Они должны быть заменены новыми макросами Py_TRASHCAN_BEGIN и Py_TRASHCAN_END.

  • gh-105035: Исправьте вызовы super() для типов с пользовательской реализацией tp_getattro (например, мета-типов).

  • gh-105017: Показывать строки с CRLF в атрибуте tokenize string в лексемах NL и NEWLINE. Исправление Марты Гомес.

  • gh-105013: Исправлена обработка многострочных ламбд с круглыми скобками в inspect.getsource(). Исправление от Pablo Galindo

  • gh-105017: Не включать дополнительный финальный токен NL при разборе файлов, содержащих строки CRLF. Исправление от Марты Гомес.

  • gh-104976: Убедитесь в том, что прицепленные DEDENT tokenize.TokenInfo объектов, испускаемых модулем tokenize, сообщаются как в Python 3.11. Исправление от Pablo Galindo

  • gh-104972: Убедитесь, что атрибут line в объектах tokenize.TokenInfo в модуле tokenize всегда корректен. Исправление от Пабло Галиндо

  • gh-104955: Исправьте подпись для нового слота __release_buffer__(). Исправление от Jelle Zijlstra.

  • gh-104690: Запуск новых потоков и создание процессов через os.fork() во время завершения работы интерпретатора (например, из обработчиков atexit) больше не поддерживается. Это может привести к состоянию гонки между основным потоком выполнения Python, освобождающим состояние потоков, в то время как внутренние threading подпрограммы пытаются распределить и использовать состояние только что созданных потоков. Или дочерние вилки пытаются использовать состояние среды выполнения и потоков в дочернем процессе.

  • gh-104879: Исправление сбоя при обращении к атрибуту __module__ псевдонимов типов, определенных вне модуля. Исправление от Jelle Zijlstra.

  • gh-104825: Токены, испускаемые модулем tokenize, больше не включают неявный символ \n в атрибут line. Исправление от Pablo Galindo

  • gh-104770: Если генератор возвращает значение после закрытия, то теперь это значение возвращается generator.close().

  • gh-89091: Поднимает RuntimeWarning для нежданных методов асинхронного генератора, таких как asend(), athrow() и aclose(). Исправление Кумара Адитьи.

  • gh-96663: Добавьте лучшее, более понятное сообщение об ошибке при установке атрибутов для классов без __dict__ и без слота-члена для атрибута.

  • gh-93627: Обновите реализацию модуля pickle в Python, чтобы она соответствовала реализации модуля pickle в C. Для объектов, устанавливающих методы сокращения __reduce_ex__() или __reduce__() в None, pickle будет приводить к TypeError.

  • gh-101006: Улучшена обработка ошибок при чтении данных marshal.

  • gh-91095: Специализирует вызовы большинства классов Python. В частности, к любому классу, который наследуется от object или другого класса Python и не переопределяет __new__.

    Специализированная инструкция выполняет следующие действия:

    1. Создает объект (вызывая object.__new__)

    2. Помещает фрейм shim в стек фреймов (для очистки после __init__)

    3. Помещает кадр для __init__ в стек кадров

    Ускоряет инстанцирование большинства классов Python.

Библиотека

  • gh-110786: CLI sysconfig теперь игнорирует BrokenPipeError, заставляя его нормально завершать работу, если его вывод передается по трубе и труба закрывается.

  • gh-103480: Модуль sysconfig теперь является пакетом, а не однофайловым модулем.

  • gh-110733: Микрооптимизация: Избегайте вызова min(), max() в BaseEventLoop._run_once().

  • gh-94597: Добавлен asyncio.EventLoop для использования с asyncio.run() loop_factory kwarg, чтобы избежать вызова системы политик asyncio.

  • gh-110682: runtime-checkable protocols раньше считал __match_args__ членом протокола в __instancecheck__, если он присутствовал в протоколе. Теперь этот атрибут игнорируется, если он присутствует.

  • gh-110488: Исправлена пара проблем в pathlib.PurePath.with_name(): одиночная точка неверно считалась допустимым именем, а в PureWindowsPath имя с альтернативным потоком данных NTFS, например a:b, неверно считалось недопустимым.

  • gh-110590: Исправлена ошибка в _sre.compile(), при которой TypeError перезаписывался OverflowError, когда аргумент code представлял собой список не-int.

  • gh-65052: Предотвращение аварийного завершения pdb при попытке отобразить неотображаемые объекты

  • gh-110519: Предупреждение о нецелочисленном числе в gettext теперь всегда ссылается на строку в пользовательском коде, где используется функция или метод gettext. Ранее оно могло ссылаться на строку в коде gettext.

  • gh-89902: Устраните нестандартный спецификатор формата «N» для decimal.Decimal. Он не был документирован и поддерживался только в реализации на C.

  • gh-110378: Менеджеры контекста contextmanager() и asynccontextmanager() теперь закрывают недопустимый объект базового генератора, который выдает более одного значения.

  • gh-106670: В pdb установите переменную удобства $_exception для посмертной отладки.

  • gh-110365: Исправлена ошибка termios.tcsetattr(), которая перезаписывала существующие ошибки при разборе целых чисел из списка term.

  • gh-109653: Немного улучшает время импорта нескольких модулей стандартной библиотеки, откладывая импорт warnings внутри этих модулей. Исправление Алекса Уэйгуда.

  • gh-110273: dataclasses.replace() теперь вызывает ошибку TypeError вместо ValueError, если указать ключевое слово-аргумент для поля, объявленного с init=False, или пропустить ключевое слово-аргумент для обязательного поля InitVar.

  • gh-110249: Добавьте флаг --inline-caches в командную строку dis.

  • gh-109653: Исправление регрессии Python 3.12 во времени импорта random. Исправление от Алекса Уэйгуда.

  • gh-110222: Добавлена поддержка объектов последовательности struct в copy.replace(). Исправлено Xuehai Pan.

  • gh-109649: multiprocessing, concurrent.futures, compileall: Замените os.cpu_count() на os.process_cpu_count(), чтобы выбрать количество рабочих потоков и процессов по умолчанию. Получение сродства к процессору, если оно поддерживается. Исправление Виктора Стиннера.

  • gh-110150: Исправьте обработку базового случая в statistics.quantiles. Теперь допускается одна точка данных.

  • gh-110036: В Windows многопроцессорная Popen.terminate() теперь перехватывает PermissionError и получает код выхода процесса. Если процесс все еще запущен, снова поднимите PermissionError. В противном случае процесс завершился, как и ожидалось: сохраните его код выхода. Исправление Виктора Стиннера.

  • gh-110038: Исправлена проблема, из-за которой KqueueSelector.select() не возвращала все события готовности в некоторых случаях, когда файловый дескриптор был зарегистрирован как для чтения, так и для записи.

  • gh-110045: Обновите модуль symtable для поддержки новых диапазонов, введенных PEP 695.

  • gh-88402: Добавьте новые переменные в sysconfig.get_config_vars() под Windows: LIBRARY, LDLIBRARY, LIBDIR, SOABI и Py_NOGIL.

  • gh-109631: re, такие как re.findall(), re.split(), re.search() и re.sub(), которые выполняют короткие повторяющиеся совпадения, теперь могут быть прерваны пользователем.

  • gh-109653: Сократите время импорта email.utils примерно на 43 %. В результате время импорта email.message уменьшится примерно на 18 %, что, в свою очередь, сократит время импорта importlib.metadata примерно на 6 %. Автор исправления - Алекс Уэйгуд.

  • gh-109818: Исправьте, что reprlib.recursive_repr() не копирует __type_params__ из декорированной функции.

  • gh-109047: concurrent.futures: Поток менеджера исполнителя теперь перехватывает исключения при добавлении элемента в очередь вызовов. Во время финализации Python создание нового потока теперь может вызвать RuntimeError. В этом случае перехватите исключение и вызовите terminate_broken(). Исправление Виктора Стиннера.

  • gh-109782: Убедитесь, что сигнатура os.path.isdir() идентична на всех платформах. Исправление от Amin Alaee.

  • gh-109653: Улучшение времени импорта functools примерно на 13%. Исправление от Алекса Уэйгуда.

  • gh-109590: shutil.which() будет отдавать предпочтение файлам с расширением в PATHEXT, если заданный режим включает os.X_OK на win32. Если совпадение с PATHEXT не найдено, может быть возвращен файл без расширения в PATHEXT. Это изменение позволит shutil.which() вести себя более схоже с предыдущим поведением в Python 3.11.

  • gh-109653: Сокращение времени импорта enum более чем на 50%. Автор патча - Алекс Уэйгуд.

  • gh-109593: Избегайте тупика при реентерабельном вызове трекера ресурсов мультипроцессинга. Такой реентерабельный вызов, хотя и маловероятный, может произойти, если при проходе GC будет вызван финализатор для многопроцессорного объекта, такого как SemLock.

  • gh-109653: Сокращение времени импорта typing примерно на треть. Автор патча - Алекс Уэйгуд.

  • gh-109649: Добавьте функцию os.process_cpu_count() для получения количества логических процессоров, используемых вызывающим потоком текущего процесса. Исправление Виктора Стиннера.

  • gh-74481: Добавьте константы, связанные с set_error_mode, в модуль msvcrt в отладочной сборке Python.

  • gh-109613: Исправьте os.stat() и os.DirEntry.stat(): проверка на наличие исключений. Ранее на Python, собранном в режиме отладки, эти функции могли вызвать фатальную ошибку Python (и прервать процесс), если функция завершилась с набором исключений. Исправление от Виктора Стиннера.

  • gh-109599: Выразите тип объектов PyCapsule как types.CapsuleType.

  • gh-109109: Теперь вы можете получать необработанные цепочки сертификатов TLS из TLS-соединений с помощью методов ssl.SSLSocket.get_verified_chain() и ssl.SSLSocket.get_unverified_chain().

    Предоставлено Матеушем Новаком.

  • gh-109559: Обновление базы данных unicodedata до версии Unicode 15.1.0.

  • gh-109543: Уберите лишнюю проверку hasattr() при создании typing.TypedDict.

  • gh-109495: Удалите ненужные дополнительные __slots__ в datetimeв чистой реализации на питоне, чтобы уменьшить размер памяти, так как они определены в суперклассе. Исправление Джеймса Хилтона-Балфа

  • gh-109461: logging: Используйте менеджер контекста для получения блокировки.

  • gh-109096: http.server.CGIHTTPRequestHandler был устаревшим для удаления в версии 3.15. Его дизайн устарел, а веб-мир уже давно вышел за рамки CGI.

  • gh-109409: Исправлена ошибка, когда можно было наследовать замороженный класс данных от нескольких родителей, некоторые из которых, возможно, не были заморожены.

  • gh-109375: Команда pdb Команда alias теперь не позволяет регистрировать псевдонимы без аргументов.

  • gh-109319: Утрачиваем поле dis.HAVE_ARGUMENT в пользу dis.hasarg.

  • gh-107219: Устранение состояния гонки в concurrent.futures. Если процесс в пуле процессов был внезапно завершен (пока выполнялось или ожидалось будущее), закройте конец записи соединения. Если очередь вызовов заблокирована на отправку байтов рабочему процессу, закрытие конца записи соединения прерывает отправку, и очередь может быть закрыта. Исправление Виктора Стиннера.

  • gh-66143: Объект codecs.CodecInfo стал копируемым и pickleable. Исправлено Робертом Леманном и Фурканом Ондером.

  • gh-109187: pathlib.Path.resolve() теперь обрабатывает зацикливание симлинков как другие ошибки: в строгом режиме вызывается OSError, а в нестрогом - исключение не вызывается.

  • gh-50644: Попытки замариновать или создать неглубокую или глубокую копию потоков codecs теперь вызывают ошибку TypeError. Ранее копирование завершалось ошибкой RecursionError, а маринование приводило к неправильным результатам, что в итоге приводило к ошибке RecursionError при распикировке.

  • gh-109174: Добавьте поддержку types.SimpleNamespace в copy.replace().

  • gh-109164: pdb: Замените getopt на argparse для разбора аргументов командной строки.

  • gh-109151: Включить функции редактирования readline в sqlite3 command-line interface (python -m sqlite3).

  • gh-108987: Исправьте состояние гонки _thread.start_new_thread(). Если поток создается во время финализации Python, то теперь вновь порожденный поток немедленно завершает работу, а не пытается получить доступ к освобожденной памяти, что приводит к аварийному завершению. Исправление Виктора Стиннера.

  • gh-108682: Enum: требуется names=() или type=..., чтобы создать пустое перечисление с помощью функционального синтаксиса.

  • gh-109033: Исключения, вызванные встроенной функцией os.utime, теперь включают имя соответствующего файла

  • gh-108843: Исправление проблемы в ast.unparse() при распарсе f-строк, содержащих много типов кавычек.

  • gh-108469: ast.unparse() теперь поддерживает новый синтаксис f-string, введенный в Python 3.12. Обратите внимание, что кавычки f-string повторно выбираются для простоты в новом синтаксисе. (Исправление от Steven Sun)

  • gh-108751: Добавьте функцию copy.replace(), которая позволяет создать измененную копию объекта. Она поддерживает именованные кортежи, классы данных и многие другие объекты.

  • gh-108682: Enum: поднять TypeError, если super().__new__() вызывается из пользовательского __new__.

  • gh-108278: Откажитесь от передачи вызываемого обратного вызова по ключевому слову для следующих sqlite3.Connection API:

    В Python 3.15 затронутые параметры станут только позиционными.

    Патч Эрленда Э. Аасланда.

  • gh-105829: Исправление тупиковой ситуации в concurrent.futures.ProcessPoolExecutor

  • gh-108295: Исправление сбоев, связанных с использованием weakrefs на typing.TypeVar.

  • gh-108463: Заставьте выражения/высказывания работать так, как ожидается в pdb

  • gh-108277: Добавьте os.timerfd_create(), os.timerfd_settime(), os.timerfd_gettime(), os.timerfd_settime_ns() и os.timerfd_gettime_ns(), чтобы обеспечить низкоуровневый интерфейс для файлового дескриптора уведомлений таймера в Linux.

  • gh-107811: tarfile: извлечение членов с чрезмерно большим UID или GID (например, на ОС с 32-битным id_t) теперь не работает так же, как и при неудачной установке ID.

  • gh-64662: Исправлена поддержка виртуальных таблиц в sqlite3.Connection.iterdump(). Исправление от Авива Паливоды.

  • gh-108111: Исправление ошибки, введенной в gh-101251 для 3.12, которая приводила к неправильному расчету смещения в gzip.GzipFile.seek().

  • gh-108294: time.sleep() теперь вызывает событие аудита.

  • gh-108278: Откажитесь от передачи имени, количества аргументов и вызываемого объекта в качестве аргументов ключевого слова для следующих sqlite3.Connection API:

    В Python 3.15 затронутые параметры станут только позиционными.

    Патч Эрленда Э. Аасланда.

  • gh-108322: Ускорение работы NormalDist.samples() за счет использования метода обратного CDF вместо вызова random.gauss().

  • gh-83417: Добавляет возможность для venv создавать файл .gitignore, который заставляет созданное окружение игнорироваться Git’ом. По умолчанию он включен, когда venv вызывается через CLI.

  • gh-105736: Согласовали чисто питоновскую версию OrderedDict с версией на C. Теперь обе версии устанавливают свое внутреннее состояние в __new__. Раньше версия на чистом Python выполняла настройку в __init__.

  • gh-108083: Исправление ошибок в конструкторе sqlite3.Connection и sqlite3.Connection.close(), из-за которых могли утекать исключения. Исправление Эрленда Э. Аасланда.

  • gh-107932: Исправьте модуль dis, чтобы он правильно сообщал и отображал байткод, не содержащий исходных строк.

  • gh-105539: sqlite3 теперь выдает ResourceWarning, если объект sqlite3.Connection не является closed явным. Исправление Эрленда Э. Аасланда.

  • gh-107995: Атрибут __module__ у экземпляров functools.cached_property теперь устанавливается в имя модуля, в котором определено свойство cached_property, а не «functools». Это означает, что доктесты в документах cached_property теперь правильно собираются модулем doctest. Исправление подготовлено Тайлером Смартом.

  • gh-107963: Исправьте multiprocessing.set_forkserver_preload() для проверки заданного списка имен модулей. Исправление от Donghee Na.

  • gh-106242: Исправление os.path.normpath() для обработки встроенных нулевых символов без обрезания пути.

  • gh-81555: xml.dom.minidom теперь в атрибутах цитирует только ".

  • gh-50002: xml.dom.minidom теперь сохраняет пробелы в атрибутах.

  • gh-93057: Передача более одного позиционного аргумента в sqlite3.connect() и конструктор sqlite3.Connection является устаревшей. Остальные параметры станут только ключевыми в Python 3.15. Исправление Эрленда Э. Аасланда.

  • gh-76913: Добавьте параметр/функцию merge_extra в logging.LoggerAdapter

  • gh-107913: Исправление возможных потерь значений errno и winerror в исключениях OSError, если они были очищены или изменены кодом очистки до создания объекта исключения.

  • gh-107845: tarfile.data_filter() теперь учитывает местоположение симлинков при определении их цели, поэтому он больше не будет отклонять некоторые корректные тарбалы с LinkOutsideDestinationError.

  • gh-107812: Расширение поддержки netlink в сокетах для платформы FreeBSD.

  • gh-107805: Исправьте сигнатуры генерируемых функций на уровне модуля в turtle.

  • gh-107782: pydoc теперь может показывать подписи, которые невозможно представить в Python, например, для getattr и dict.pop.

  • gh-56166: Откажитесь от передачи необязательных аргументов maxsplit, count и flags в функциях уровня модуля re.split(), re.sub() и re.subn() как позиционных. Они должны передаваться только по ключевому слову.

  • gh-107710: Ускорить logging.getHandlerNames().

  • gh-107715: Исправление doctest.DocTestFinder.find() при наличии имен классов со специальными символами. Исправление Гертьяна ван Звиетена.

  • gh-100814: Передача вызываемого объекта в качестве значения опции в изображение Tkinter теперь вызывает ожидаемую ошибку TclError, а не ошибку AttributeError.

  • gh-72684: Добавьте методы виджета tkinter: tk_busy_hold(), tk_busy_configure(), tk_busy_cget(), tk_busy_forget(), tk_busy_current() и tk_busy_status().

  • gh-106684: Поднимает ResourceWarning, если asyncio.StreamWriter не закрыт, что приводит к утечке памяти. Исправление от Kumar Aditya.

  • gh-107465: Добавить pathlib.Path.from_uri() метод класса.

  • gh-107077: Похоже, что в некоторых случаях OpenSSL возвращает SSL_ERROR_SYSCALL вместо SSL_ERROR_SSL, когда проверка сертификации не удалась, но параметры ошибки по-прежнему содержат ERR_LIB_SSL и SSL_R_CERTIFICATE_VERIFY_FAILED. Теперь мы обнаруживаем эту ситуацию и поднимаем соответствующие ssl.SSLCertVerificationError. Исправление от Пабло Галиндо

  • gh-107576: Исправьте types.get_original_bases(), чтобы он возвращал __orig_bases__ только в том случае, если он присутствует в cls напрямую. Исправление Джеймса Хилтона-Балфа.

  • gh-105481: Удалите opcode.is_pseudo, opcode.MIN_PSEUDO_OPCODE и opcode.MAX_PSEUDO_OPCODE, которые были добавлены в 3.12, никогда не документировались и не предназначались для внешнего использования.

  • gh-105481: opcode.ENABLE_SPECIALIZATION (который был добавлен в 3.12, но никогда не документировался и не предназначался для внешнего использования) перемещен в _opcode.ENABLE_SPECIALIZATION, где к нему смогут обращаться тесты.

  • gh-107396: tarfiles; Исправлено использование перед присвоением self.exception для gzip-декомпрессии

  • gh-107409: Установите атрибут __wrapped__ в reprlib.recursive_repr().

  • gh-107406: Реализуйте новый метод __repr__() для struct.Struct. Теперь он возвращает Struct(<format repr>).

  • gh-107369: Оптимизируйте textwrap.indent(). Это на ~30% быстрее для больших входных данных. Исправление от Inada Naoki.

  • gh-78722: Исправлена проблема, при которой pathlib.Path.iterdir() не поднимал OSError до итерации.

  • gh-105578: Утратить typing.AnyStr в пользу нового синтаксиса Type Parameter. См. PEP 695.

  • gh-62519: Заставьте gettext.pgettext() искать определения во множественном числе, если перевод не найден.

  • gh-107089: Полки, открытые с помощью shelve.open(), работают гораздо быстрее clear(). Исправление Джеймса Кейва.

  • gh-82500: Исправление переполнения на 32-битных системах с asyncio os.sendfile() реализацией.

  • gh-83006: Документируйте поведение shutil.disk_usage() для немонтированных файловых систем на Unix.

  • gh-65495: Используйте строчные буквы mail from и rcpt to в smptlib.SMTP.

  • gh-106186: Не сообщайте о дефекте MultipartInvariantViolationDefect, если класс email.parser.Parser используется для разбора писем с headersonly=True.

  • gh-105002: Исправление некорректного результата метода PurePath.relative_to() при попытке пройти сегмент «..» в other с включенной опцией walk_up. Теперь в этом случае вызывается исключение ValueError.

  • gh-106739: Добавьте rtype_cache в предупреждающее сообщение (в дополнение к типу утечек и количеству утечек, уже включенных в сообщение), чтобы облегчить отладку утечек, когда процесс отслеживания ресурсов многопроцессорной системы обнаруживает утечки при завершении работы. Это поможет быстрее определить, что именно было утечено и/или почему объект утечки не был должным образом очищен.

  • gh-106751: Оптимизируйте SelectSelector.select() для случая многих итераций. Исправление от Donghee Na.

  • gh-106751: Оптимизируйте _PollLikeSelector.select() для случая многих итераций.

  • gh-106751: Оптимизируйте KqueueSelector.select() для случая многих итераций. Исправление от Donghee Na.

  • gh-106831: Исправьте потенциально отсутствующую проверку NULL результата d2i_SSL_SESSION в _ssl.c.

  • gh-105481: Различные списки опкодов в модуле dis теперь генерируются из bytecodes.c, а не создаются явно в opcode.py.

  • gh-106727: Сделайте inspect.getsource() более умным для класса с одноименными определениями

  • gh-106789: Удалить импорт pprint из sysconfig.

  • gh-105726: Добавили __slots__ к contextlib.AbstractContextManager и contextlib.AbstractAsyncContextManager, чтобы дочерние классы могли использовать __slots__.

  • gh-106774: Обновите поставляемую в комплекте копию pip до версии 23.2.1.

  • gh-106751: selectors: Оптимизируйте код EpollSelector.select(), перенеся часть кода за пределы цикла.

  • gh-106752: Исправлено несколько ошибок в zipfile.Path, в том числе: в zipfile.Path.match() больше не учитываются разделители Windows (и никогда не должны были учитываться); Исправлены операции name/suffix/suffixes/stem, когда отсутствует имя файла и Path не находится в корне zip-файла; Переработан glob для повышения производительности и более корректного поведения при сопоставлении.

  • gh-105293: Удалите обращение к SSL_CTX_set_session_id_context во время создания контекста на стороне клиента в модуле ssl.

  • gh-106734: Отключить завершение табуляции в многострочном режиме pdb

  • gh-105481: Раскрыть метаданные опкода через _opcode.

  • gh-106670: Добавьте новую команду exceptions в отладчик Pdb. Она позволяет перемещаться между цепочками исключений при использовании посмертной отладки.

  • gh-106602: Добавьте __copy__ и __deepcopy__ в enum.

  • gh-106664: selectors: Добавьте метод _SelectorMapping.get() и оптимизируйте _SelectorMapping.__getitem__().

  • gh-106628: Ускоряет разбор писем примерно на 20%, не составляя новое регулярное выражение для каждого письма.

  • gh-89427: Установите переменную окружения VIRTUAL_ENV_PROMPT при активации venv, даже если установлена VIRTUAL_ENV_DISABLE_PROMPT.

  • gh-106530: Верните изменение в colorsys.rgb_to_hls(), которое приводило к делению на ноль для некоторых почти белых входов. Автор патча - Терри Ян Риди.

  • gh-106584: Исправьте код выхода для unittest, если все тесты пропущены. Исправление от Егора Елисеева.

  • gh-106566: Оптимизируйте (?!) (шаблон, который всегда не работает) в регулярных выражениях.

  • gh-106554: selectors: Уменьшение нагрузки на селектор за счет использования dict.get() для поиска дескрипторов файлов.

  • gh-106558: Устраните цикл ref в вызывающих convert_to_error(), удалив result из области видимости в блоке finally.

  • gh-100502: Добавьте атрибут класса pathlib.PurePath.pathmod, который хранит реализацию os.path, используемую для низкоуровневых операций с путями: либо posixpath, либо ntpath.

  • gh-106527: Сократите накладные расходы на добавление и удаление читателей и писателей asyncio.

  • gh-106524: Исправление сбоя в _sre.template() с шаблонами, содержащими неверные индексы групп.

  • gh-106531: Удалены _legacy и предоставленные им имена из importlib.resources: Resource, contents, is_resource, open_binary, open_text, path, read_binary и read_text.

  • gh-106052: re Модуль: исправление соответствия притяжательных квантификаторов в случае подшаблона, содержащего обратный путь.

  • gh-106510: Улучшен вывод отладки для атомарных групп в регулярных выражениях.

  • gh-106503: Исправьте цикл ref в asyncio._SelectorSocketTransport, удалив _write_ready в close.

  • gh-105497: Исправление инверсии маски флага при наличии неименованных флагов.

  • gh-90876: Предотвращает неспособность multiprocessing.spawn импортировать в окружениях, где sys.executable является None. Это исправлено в 3.11 с добавлением поддержки объектов типа path в многопроцессорной обработке.

  • gh-106403: Экземпляры typing.TypeVar, typing.ParamSpec, typing.ParamSpecArgs, typing.ParamSpecKwargs и typing.TypeVarTuple снова поддерживают слабые ссылки, исправляя регрессию, появившуюся в Python 3.12.0 beta 1. Автор исправления - Jelle Zijlstra.

  • gh-89812: Добавьте частный класс pathlib._PathBase, который обеспечивает экспериментальную поддержку виртуальных файловых систем и может стать общедоступным в будущей версии Python.

  • gh-106292: Проверять наличие кэшированного значения instance-dict в методе __get__() из functools.cached_property(). Это лучше соответствует поведению до версии 3.12 и улучшает совместимость для пользователей, подклассифицирующих functools.cached_property() и добавляющих метод __set__().

  • gh-106350: Обнаружение возможной ошибки выделения памяти в функции libtommath mp_init(), используемой модулем _tkinter.

  • gh-106330: Исправление некорректного сопоставления пустых путей в pathlib.PurePath.match(). Эта ошибка появилась в Python 3.12.0 beta 1.

  • gh-106309: Deprecate typing.no_type_check_decorator(). Ни одна крупная программа проверки типов не добавила поддержку этого декоратора. Исправление от Алекса Уэйгуда.

  • gh-102541: Заставьте pydoc.doc() ловить плохой модуль ImportError, если выходной поток не None.

  • gh-106263: Исправление сбоя при вызове repr с вручную сконструированным объектом SignalDict. Исправление от Чарли Чжао.

  • gh-106236: Замените утверждения assert на raise RuntimeError в threading, чтобы _DummyThread нельзя было объединить даже с -OO.

  • gh-106238: Исправление редкой ошибки параллелизма при получении блокировки пакетом протоколирования.

  • gh-106152: Добавлен крючок события PY_THROW для cProfile для генераторов

  • gh-106075: Добавлены asyncio.taskgroups.__all__ к asyncio.__all__ для экспорта в звездном импорте.

  • gh-104527: Zipapp теперь будет пропускать добавление архива к себе.

  • gh-106046: Улучшите сообщение об ошибке от os.fspath(), если оно вызывается на объекте, для которого __fspath__ установлено значение None. Исправление от Алекса Уэйгуда.

  • gh-105987: Исправление сбоя из-за неправильного подсчета ссылок во внутренних подпрограммах фабрики задач asyncio eager.

  • gh-105974: Исправлена ошибка, из-за которой класс typing.Protocol, имеющий один или несколько невызываемых членов, вызывал ошибку TypeError при вызове issubclass(), даже если в нем был определен пользовательский метод __subclasshook__. Поведение в Python 3.11 и ниже - которое теперь восстановлено - не вызывало TypeError в таких ситуациях, если был определен пользовательский метод __subclasshook__. Исправление внесено Алексом Уэйгудом.

  • gh-96145: Отменено добавление json.AttrDict.

  • gh-89812: Добавьте pathlib.UnsupportedOperation, который поднимается вместо NotImplementedError, когда операция пути не поддерживается.

  • gh-105808: Исправление ошибки, внесенной в gh-101251 для 3.12, из-за которой gzip.GzipFile.flush() не промывал компрессор (и не передавал аргумент zip_mode).

  • gh-105481: stack_effect() больше не вызывает исключения, если oparg предоставлен для opcode, который не использует его arg, или если он не предоставлен для opcode, который его использует. В последнем случае эффект стека возвращается для oparg=0.

  • gh-104799: Включите ast.unparse() для разбора определений функций и классов, созданных без нового поля type_params из PEP 695. Исправление от Jelle Zijlstra.

  • gh-105793: Добавьте аргумент follow_symlinks только для ключевых слов в pathlib.Path.is_dir() и is_file(), по умолчанию используется True.

  • gh-105570: Утрачивают силу два метода создания классов typing.TypedDict с 0 полями с помощью функционального синтаксиса: TD = TypedDict("TD") и TD = TypedDict("TD", None). Оба метода будут запрещены в Python 3.15. Чтобы создать класс TypedDict с 0 полей, используйте либо class TD(TypedDict): pass, либо TD = TypedDict("TD", {}).

  • gh-105745: Исправьте метод webbrowser.Konqueror.open.

  • gh-105733: ctypes: Устранить недокументированные функции ctypes.SetPointerType() и ctypes.ARRAY(). Исправление Виктора Стиннера.

  • gh-105687: Убрать устаревшие re.template, re.T, re.TEMPLATE, sre_constans.SRE_FLAG_TEMPLATE.

  • gh-105684: Поддержка asyncio.Task.set_name() теперь обязательна для сторонних реализаций задач. Недокументированная функция _set_task_name() (deprecated since 3.8) была удалена. Исправление Кумара Адитьи.

  • gh-105375: Исправление ошибки в _Unpickler_SetInputStream(), когда исключение могло быть перезаписано в случае сбоя.

  • gh-105626: Измените возвращаемое по умолчанию значение http.client.HTTPConnection.get_proxy_response_headers() на None, а не на {}.

  • gh-105375: Исправление ошибок в sys, когда исключения могли быть перезаписаны из-за отложенной обработки ошибок.

  • gh-105605: Усильте обработку ошибок pyexpat при инициализации модуля, чтобы исключения не могли быть перезаписаны, а объекты не разыменовывались дважды.

  • gh-105375: Исправление ошибки в decimal, когда исключение могло быть перезаписано.

  • gh-105375: Исправление ошибки в _datetime, когда исключения могли быть перезаписаны в случае сбоя инициализации модуля.

  • gh-105375: Исправление ошибок в инициализации _ssl, которые могли привести к утечке ссылок и перезаписи исключений.

  • gh-105375: Исправление ошибки в array.array, когда исключение могло быть перезаписано.

  • gh-105375: Исправление ошибок в _ctypes, когда исключения могли быть перезаписаны.

  • gh-105375: Исправление ошибки в модуле posix, когда исключение могло быть перезаписано.

  • gh-105375: Исправление ошибок в _elementtree, когда исключения могли быть перезаписаны.

  • gh-105375: Исправление ошибок в zoneinfo, когда исключения могли быть перезаписаны.

  • gh-105375: Исправление ошибок в errno, когда исключения могли быть перезаписаны.

  • gh-105566: Откажитесь от создания класса typing.NamedTuple с использованием ключевых слов-аргументов для обозначения полей (NT = NamedTuple("NT", x=int, y=str)). Это будет запрещено в Python 3.15. Вместо этого используйте синтаксис, основанный на классах, или функциональный синтаксис.

    Два метода создания классов NamedTuple с 0 полями с помощью функционального синтаксиса также устарели и будут запрещены в Python 3.15: NT = NamedTuple("NT") и NT = NamedTuple("NT", None). Чтобы создать класс NamedTuple с 0 полей, используйте либо class NT(NamedTuple): pass, либо NT = NamedTuple("NT", []).

  • gh-105545: Убрать устаревший в 3.11 атрибут webbrowser.MacOSXOSAScript._name.

  • gh-105497: Исправление инверсии флага при наличии членов псевдонима/маски.

  • gh-105509: typing.Annotated теперь реализован как экземпляр typing._SpecialForm, а не как класс. Это не должно иметь никакого влияния на пользователей публичного API модуля typing.

  • gh-105375: Исправление ошибок в pickle, когда исключения могли быть перезаписаны.

  • gh-70303: Выделите FutureWarning из pathlib.Path.glob() и rglob(), если заданный шаблон заканчивается на «**». В будущем выпуске Python шаблоны с таким окончанием будут соответствовать как файлам, так и каталогам. Добавьте косую черту, чтобы совпадали только каталоги.

  • gh-105375: Исправлена ошибка в sqlite3, когда исключение могло быть перезаписано в обратном вызове collation.

  • gh-105382: Удалите параметры cafile, capath и cadefault из функции urllib.request.urlopen(), устаревшей в Python 3.6. Исправление Виктора Стиннера.

  • gh-105376: logging: Удалите недокументированные и непроверенные методы Logger.warn() и LoggerAdapter.warn() и функцию logging.warn(). Утратившие актуальность с Python 3.3, они были псевдонимами методов logging.Logger.warning(), logging.LoggerAdapter.warning() и функции logging.warning(). Исправление Виктора Стиннера.

  • gh-105332: Верните метод pickling из by-name обратно в by-value.

  • gh-104554: Добавьте поддержку схемы RTSPS в urllib.parse

  • gh-105292: Добавьте в traceback.format_exception_only() опцию для вызова вложенного исключения из BaseExceptionGroup.

  • gh-105280: Исправлена ошибка, при которой isinstance([], collections.abc.Mapping) мог оцениваться в True, если сборка мусора происходила в неправильное время. Ошибка была вызвана изменениями в реализации typing.Protocol в Python 3.12.

  • gh-80480: array: Добавьте типовой код 'w', который представляет Py_UCS4.

  • gh-105239: Исправление давней ошибки, из-за которой issubclass(object, typing.Protocol) в некоторых крайних случаях оценивался как True. Исправление от Алекса Уэйгуда.

  • gh-104310: В бета-версии 1 мы добавили служебную функцию для авторов модулей расширения, чтобы использовать ее при тестировании модуля на поддержку в нескольких интерпретаторах или в GIL для каждого интерпретатора. Название этой функции изменилось с allowing_all_extensions на _incompatible_extension_module_restrictions. Значение по умолчанию для аргумента «disable_check» изменилось с True на False, чтобы лучше соответствовать новому названию функции.

  • gh-105080: Исправлена непоследовательная подпись в производных классах для inspect.signature().

  • gh-105144: Исправьте недавнюю регрессию в модуле typing. Регрессия означала, что выполнение class Foo(X, typing.Protocol), в котором X был классом, имеющим abc.ABCMeta в качестве своего метакласса, приводило к тому, что последующие вызовы isinstance(1, X) ошибочно поднимали TypeError. Исправление Алекса Уэйгуда.

  • gh-62948: Финализатор io.IOBase теперь регистрирует ошибки метода close() в sys.unraisablehook. Ранее ошибки по умолчанию игнорировались молча, а логировались только в Python Development Mode или на Python built on debug mode. Исправление Виктора Стиннера.

  • gh-105096: wave: Утрачиваем методы getmark(), setmark() и getmarkers() классов wave.Wave_read и wave.Wave_write. Они будут удалены в Python 3.15. Исправление Виктора Стиннера.

  • gh-104992: Удалите непроверенный и недокументированный метод unittest.TestProgram.usageExit(), устаревший в Python 3.11. Исправление от Хьюго ван Кеменаде.

  • gh-104996: Улучшение производительности инициализации pathlib.PurePath за счет откладывания объединения путей при задании нескольких аргументов.

  • gh-101588: Откажитесь от недокументированной поддержки копирования/глубокого копирования/пикли для itertools.

  • gh-103631: Исправление pathlib.PurePosixPath(pathlib.PureWindowsPath(...)), не конвертирующего разделители путей, для восстановления совместимого с 3.11 поведения.

  • gh-104947: Сделайте сравнения между объектами pathlib.PureWindowsPath согласованными в Windows и Posix, чтобы соответствовать поведению 3.11.

  • gh-104773: PEP 594: Удалите модуль audioop, устаревший в Python 3.11. Исправление Виктора Стиннера.

  • gh-104773: PEP 594: Удалите модуль aifc, устаревший в Python 3.11. Исправление Виктора Стиннера.

  • gh-104773: PEP 594: Удалите модуль uu, устаревший в Python 3.11. Исправление Виктора Стиннера.

  • gh-104935: Исправление ошибок взаимодействия между typing.runtime_checkable() и typing.Generic, которые были внесены в реализацию PEP 695. Исправление от Jelle Zijlstra.

  • gh-104773: PEP 594: Удалите модуль crypt и его частное расширение _crypt, устаревшее в Python 3.11. Исправление Виктора Стиннера.

  • gh-104773: PEP 594: Удалите модуль nis, устаревший в Python 3.11. Исправление Виктора Стиннера.

  • gh-104898: Добавьте недостающие __slots__ к os.PathLike.

  • gh-104773: PEP 594: Удалите модуль xdrlib, устаревший в Python 3.11. Исправление Виктора Стиннера.

  • gh-104773: PEP 594: Удалите модуль nntplib, устаревший в Python 3.11. Исправление Виктора Стиннера.

  • gh-104886: Удалите недокументированный класс configparser.LegacyInterpolation, устаревший в строке документации с Python 3.2 и с предупреждением об устаревании с Python 3.11. Исправление от Хьюго ван Кеменаде.

  • gh-104786: Удалить создание на основе kwargs typing.TypedDict

  • gh-104876: Удалите метод turtle.RawTurtle.settiltangle(), устаревший в документации с Python 3.1 и с предупреждением об устаревании с Python 3.11. Исправление от Хьюго ван Кеменаде.

  • gh-104773: PEP 594: Удален пакет msilib, устаревший в Python 3.11.

  • gh-104773: PEP 594: Удалите модуль spwd, устаревший в Python 3.11: вместо него можно использовать проект python-pam. Исправление Виктора Стиннера.

  • gh-75552: Удален модуль tkinter.tix, устаревший с Python 3.6.

  • gh-104773: PEP 594: Удалите модуль chunk, устаревший в Python 3.11. Исправление Виктора Стиннера.

  • gh-104773: PEP 594: Удалите модуль mailcap, устаревший в Python 3.11. Исправление Виктора Стиннера.

  • gh-104773: PEP 594: Удалите модуль sunau, устаревший в Python 3.11. Исправление Виктора Стиннера.

  • gh-104780: PEP 594: Удалите модуль ossaudiodev, устаревший в Python 3.11. Патч Виктора Стиннера.

  • gh-104773: PEP 594: Удалите модуль pipes, устаревший в Python 3.11. Исправление Виктора Стиннера.

  • gh-104873: Добавьте typing.get_protocol_members(), чтобы вернуть набор членов, определяющих typing.Protocol. Добавьте typing.is_protocol(), чтобы проверить, является ли класс typing.Protocol. Исправление от Jelle Zijlstra.

  • gh-104874: Документируйте атрибуты __name__ и __supertype__ для typing.NewType. Исправление от Jelle Zijlstra.

  • gh-104835: Удалены следующие функции unittest, устаревшие в Python 3.11:

    • unittest.findTestCases()

    • unittest.makeSuite()

    • unittest.getTestCaseNames()

    Вместо этого используйте методы TestLoader:

    Патч от Хьюго ван Кеменаде.

  • gh-104804: Удалите непроверенный и недокументированный webbrowser MacOSX класс, устаревший в Python 3.11. Исправление от Хьюго ван Кеменаде.

  • gh-83863: Поддержка использования объектов pathlib.Path в качестве менеджеров контекста была удалена. До Python 3.9 выход из контекстного менеджера помечал путь как «закрытый», что приводило к тому, что при вызове некоторых (но не всех!) методов возникала ошибка. Начиная с Python 3.9, использование пути в качестве менеджера контекста ничего не дает.

  • gh-104799: Скорректируйте расположение поля (см. PEP 695) type_params на ast.ClassDef, ast.AsyncFunctionDef и ast.FunctionDef, чтобы лучше сохранить обратную совместимость. Исправление от Jelle Zijlstra

  • gh-104797: Разрешить классам typing.Protocol наследоваться от collections.abc.Buffer. Исправление от Jelle Zijlstra.

  • gh-104783: Уберите функцию locale.resetlocale(), устаревшую в Python 3.11. Исправление Виктора Стиннера.

  • gh-104780: Удалите программу 2to3 и модуль lib2to3, устаревшие в Python 3.11. Исправление Виктора Стиннера.

  • gh-104773: PEP 594: Удалите модуль telnetlib, устаревший в Python 3.11. Исправление Виктора Стиннера.

  • gh-104773: PEP 594: Удалите модуль imghdr, устаревший в Python 3.11. Исправление Виктора Стиннера.

  • gh-104773: PEP 594: Удалите модули cgi и cgitb, устаревшие в Python 3.11. Исправление Виктора Стиннера.

  • gh-104773: PEP 594: Удалите модуль sndhdr, устаревший в Python 3.11. Исправление Виктора Стиннера.

  • gh-104372: В Linux, где subprocess может использовать системный вызов vfork() для ускорения порождения, предотвратите блокирование родительским процессом других потоков, сбросив GIL, пока он ожидает завершения дочернего процесса vfork’ed exec(). Это не позволит порождению двоичного файла из медленной файловой системы заблокировать работу остальной части приложения.

  • gh-99108: Теперь мы выпускаем GIL для встроенных вычислений hashlib разумного размера для хэш-функций семейств SHA и MD5, что соответствует тому, что уже делают наши вычисления хэшей, поддерживаемые OpenSSL.

  • gh-102613: Повышение производительности pathlib.Path.glob() при расширении шаблона с нетерминальным компонентом «**» за счет фильтрации пройденных путей через регулярное выражение, а не за счет неоднократного вызова os.scandir() для каждого каталога.

  • gh-104399: Подготовьте модуль _tkinter к сборке с Tcl 9.0 и будущей libtommath, заменив использование устаревших функций mp_to_unsigned_bin_n() и mp_unsigned_bin_size(), когда это необходимо.

  • gh-102676: Добавьте поля start_offset, cache_offset, end_offset, baseopname, baseopcode, jump_target и oparg в dis.Instruction.

  • gh-103558: Исправлен механизм проверки аргументов parent в argparse. Улучшено покрытие тестов.

  • gh-103464: Предоставление полезных сообщений при разборе неправильных команд pdb.

  • gh-103384: Обобщите шаблон regex BaseConfigurator.INDEX_PATTERN, чтобы разрешить пробелы и неалфавитные символы в ключах.

  • gh-103124: Добавлена поддержка многострочных операторов для pdb

  • gh-101162: Запрещает использовать builtins.issubclass() с types.GenericAlias в качестве первого аргумента.

  • gh-103200: Исправлена семантика перезаполнения кэша в zipimport.invalidate_caches(). Теперь кэш пополняется при получении файлов с недействительным кэшем, а не когда кэш становится недействительным.

  • gh-100061: Исправлена ошибка, приводившая к неправильному совпадению регулярных выражений с притяжательным квалификатором.

  • gh-77609: Добавьте аргумент follow_symlinks в pathlib.Path.glob() и rglob(), по умолчанию false.

  • gh-102541: Скрыть отслеживание в подсказке help(), когда импорт не удался.

  • gh-102120: В tarfile добавлен потоковый режим, позволяющий читать архивы без кэширования информации о внутренних файлах.

  • gh-102029: Откажитесь от передачи каких-либо аргументов в threading.RLock().

  • gh-88233: Переработан zipfile._strip_extra для использования абстракций более высокого уровня для дополнительных функций вместо цикла с тяжелым состоянием.

  • gh-102024: Уменьшите количество вызовов _idle_semaphore.release() в concurrent.futures.thread._worker().

  • gh-73435: Добавьте поддержку рекурсивных подстановочных знаков в pathlib.PurePath.match().

  • gh-84867: unittest.TestLoader больше не загружает тестовые случаи из точных классов unittest.TestCase и unittest.FunctionTestCase.

  • gh-99203: Восстановлено следующее поведение shutil.make_archive() в CPython <= 3.10.5: не создавать пустой архив, если root_dir не является каталогом, и в этом случае вызывать FileNotFoundError или NotADirectoryError независимо от выбора format. Помимо возвращенного поведения, функция теперь может также вызывать эти исключения в режиме dry_run.

  • gh-80480: Эмиттировать DeprecationWarning для кода типа array в 'u', deprecated в документации с Python 3.3.

  • gh-94924: unittest.mock.create_autospec() теперь правильно возвращает корутиновые функции, совместимые с inspect.iscoroutinefunction().

  • gh-94777: Исправьте зависание multiprocessing ProcessPoolExecutor при падении дочернего процесса во время записи данных в очередь вызовов.

  • gh-92871: Удалите пространства имен typing.io и typing.re, устаревшие с Python 3.8. Все элементы по-прежнему доступны из основного модуля typing.

  • bpo-43633: Улучшение текстового представления IPv4-маппированных IPv6-адресов (RFC 4291 Разделы 2.2, 2.5.5.2) в ipaddress. Исправление Александра Павлюка.

  • bpo-44850: Улучшение производительности operator.methodcaller() с использованием PEP 590 vectorcall. Патч от Энтони Ли и Питера Ендебака.

  • bpo-44185: unittest.mock.mock_open() будет вызывать метод close() имитатора файлового хэндла при выходе из контекстного менеджера. Исправление от Samet Yaslan.

  • bpo-40988: Улучшите производительность functools.singledispatchmethod, кэшируя сгенерированную обертку диспетчера. Оптимизация предложена Фредерико. Исправление от @mental32, Alex Waygood и Pieter Eendebak.

  • bpo-41768: unittest.mock спецификация больше не вызывает свойства класса. Исправление Мелани Витт.

  • bpo-18319: Обеспечьте gettext(msg) получение переводов, даже если существует форма множественного числа. Другими словами: gettext(msg) == ngettext(msg, '', 1).

  • bpo-17013: Добавьте ThreadingMock к unittest.mock, которые могут быть использованы для создания Mock-объектов, способных ждать, пока их вызовут. Исправление от Karthikeyan Singaravelan и Mario Corchero.

Документация

  • gh-109209: Минимальная версия Sphinx, необходимая для документации, теперь составляет 4.2.

  • gh-108826: dis Интерфейс командной строки модуля теперь упоминается в документации.

  • gh-107305: Добавьте документацию для PyInterpreterConfig и Py_NewInterpreterFromConfig(). Также уточните некоторые близлежащие документы относительно GIL для каждого интерпретатора.

  • gh-107008: Документируйте переменные модуля curses LINES и COLS.

  • gh-106948: Добавьте ряд стандартных внешних имен в nitpick_ignore.

  • gh-106232: Сделайте командные строки timeit doc совместимыми с Windows, используя двойные кавычки для аргументов. Это также работает в linux и macOS.

  • gh-105172: Исправлена док-строка functools.lru_cache(), учитывающая разную обработку str и int в аргументе typed. Исправление от Bar Harel.

  • gh-105052: Обновите timeit doc, чтобы указать, что время в секундах - это просто время по умолчанию.

  • gh-89455: Добавьте недостающую документацию для параметров max_group_depth и max_group_width и атрибута exceptions класса traceback.TracebackException.

  • gh-89412: Добавьте недостающую документацию для атрибутов end_lineno и end_offset класса traceback.TracebackException.

  • gh-104943: Удалите упоминания о старых версиях Python в typing.NamedTuple.

  • gh-54738: Добавьте документацию о том, как локализовать модуль argparse.

  • gh-102823: Документируйте тип возврата x // y, если x и y имеют тип float.

  • gh-102759: Приведите сигнатуру функции functools.reduce в документации и docstring в соответствие с реализацией на C.

Тесты

  • gh-110647: Исправьте test_stress_modifying_handlers() из test_signal. Исправление от Виктора Стиннера.

  • gh-103053: Исправление test_tools.test_freeze на FreeBSD: запустите «make distclean» вместо «make clean» в скопированном каталоге исходников, чтобы удалить также программу «python». Исправление Виктора Стиннера.

  • gh-110167: Исправление тупиковой ситуации в test_socket, когда сервер завершает работу по таймауту, а клиент продолжает работать в своем потоке. Не удерживайте блокировку для вызова функций очистки в doCleanups(). Одна из функций очистки ожидает завершения работы клиента, в то время как клиент может зайти в тупик, если вызовет addCleanup() в такой ситуации. Исправление Виктора Стиннера.

  • gh-110388: Добавьте тесты для tty.

  • gh-81002: Добавьте тесты для termios.

  • gh-110367: regrtest: При использовании рабочих процессов (-jN) с опцией –verbose3 regrtest теперь может отображать вывод рабочего процесса, даже если рабочий процесс аварийно завершается. Ранее sys.stdout и sys.stderr были заменены, и поэтому вывод рабочего процесса терялся при сбое. Автор исправления - Виктор Стиннер.

  • gh-110267: Добавлены тесты для пикирования и копирования объектов PyStructSequence. Исправлено Xuehai Pan.

  • gh-110171: libregrtest теперь всегда устанавливает и показывает random.seed, так что тесты стали более воспроизводимыми. Используйте флаг --randseed, чтобы передавать явное случайное зерно для тестов.

  • gh-110152: Удалите Tools/scripts/run_tests.py и make hostrunnertest. Вместо них просто запустите ./python -m test --slow-ci, make buildbottest или make test. Python test runner (regrtest) теперь работает с кросс-компиляцией и HOSTRUNNER. Он также добавляет опции для Python, такие как быстрый -u -E -W default -bb, когда используется опция --fast-ci или --slow-ci. Исправление Виктора Стиннера.

  • gh-110031: Пропускайте тесты test_threading при использовании thread+fork, если Python собран с Address Sanitizer (ASAN). Исправление от Виктора Стиннера.

  • gh-110088: Исправьте таймауты test_asyncio: не измеряйте максимальную продолжительность, тест не должен измерять производительность CI. Измеряйте только минимальную продолжительность, когда задача имеет таймаут или задержку. Добавьте CLOCK_RES к test_asyncio.utils. Исправление Виктора Стиннера.

  • gh-109974: Исправление условий гонки в тестах блокировки test_threading. Ожидание выполнения условия вместо использования time.sleep() с жестко заданным числом секунд. Исправление Виктора Стиннера.

  • gh-110033: Исправьте test_interprocess_signal() из test_signal. Убедитесь, что объект subprocess.Popen удален до того, как тест вызовет исключение в обработчике сигнала. В противном случае Popen.__del__() может получить исключение, которое будет зарегистрировано как Exception ignored in: ..., и тест завершится неудачей. Исправление Виктора Стиннера.

  • gh-109594: Исправьте test_timeout() в test_concurrent_futures.test_wait. Удалите будущее, которое может завершиться или не завершиться в зависимости от того, длится ли оно дольше таймаута или нет. Оставьте второе будущее, которое не завершится до истечения таймаута wait(). Исправление Виктора Стиннера.

  • gh-109972: Разделили файл test_gdb.py на пакет test_gdb, состоящий из нескольких тестов, так что теперь тесты можно запускать параллельно. Исправление Виктора Стиннера.

  • gh-109566: regrtest: При использовании опции --fast-ci или --slow-ci regrtest теперь заменяет текущий процесс на новый, чтобы добавить в Python опции -u -W default -bb -E. Исправление Виктора Стиннера.

  • gh-109748: Исправление test_zippath_from_non_installed_posix() в test_venv: не копируйте подкаталоги __pycache__/, потому что они могут быть изменены другими Python-тестами, выполняющимися параллельно. Исправление Виктора Стиннера.

  • gh-109739: regrtest: Исправьте проверку утечки ссылок в Windows. Отключите трекер загрузки на Windows в режиме проверки утечки ссылок (опция -R). Исправление от Виктора Стиннера.

  • gh-109276: regrtest: Когда тест завершается неудачей с сообщением «env changed» и используется опция –rerun, тест теперь запускается заново в режиме verbose в свежем процессе. Исправление Виктора Стиннера.

  • gh-103053: Пропустите test_freeze_simple_script() из test_tools.test_freeze, если Python собран с ./configure --enable-optimizations, то есть с Profile Guided Optimization (PGO): это просто сделает тест слишком медленным. Инструмент freeze тестируется многими другими CI с другими (более быстрыми) флагами компилятора. Исправление Виктора Стиннера.

  • gh-109580: Пропустите test_perf_profiler, если Python собран с дезинфектором ASAN, MSAN или UBSAN. При такой сборке Python случайно падает в этом тесте. Исправление от Виктора Стиннера.

  • gh-109566: regrtest: Добавьте опции --fast-ci и --slow-ci. --fast-ci использует таймаут по умолчанию 10 минут и -u all,-cpu (пропускать самые медленные тесты). --slow-ci по умолчанию использует таймаут 20 минут и -u all (запуск всех тестов). Исправление Виктора Стиннера.

  • gh-109425: libregrtest теперь декодирует stdout рабочих процессов тестирования с обработчиком ошибок «backslashreplace» для записи поврежденного stdout в журнал, вместо того чтобы завершить работу с ошибкой и не записывать stdout в журнал. Исправление Виктора Стиннера.

  • gh-109396: Исправьте test_socket.test_hmac_sha1() в режиме FIPS. Используйте более длинный ключ: Режим FIPS требует не менее 112 бит. Предыдущий ключ был всего 32 бита. Исправление от Виктора Стиннера.

  • gh-104736: Исправьте test_gdb на Python, собранном с LLVM clang 16 на Linux ppc64le (например, Fedora 38). Поиск шаблонов в выводе команды gdb «bt» для обнаружения случаев, когда gdb не может получить обратную трассировку. Например, пропустить тест, если найдено Backtrace stopped: frame did not save the PC. Исправление Виктора Стиннера.

  • gh-109276: libregrtest теперь вызывает random.seed() перед запуском каждого тестового файла, когда используется опция командной строки -r/--randomize. Более того, она также вызывается в рабочих процессах. Это должно помочь сделать тесты более детерминированными. Ранее он вызывался только один раз в главном процессе перед запуском всех тестовых файлов и не вызывался в рабочих процессах. Исправление Виктора Стиннера.

  • gh-109276: libregrtest теперь использует разделенный дескриптор файла для записи результатов тестирования в формате JSON. Ранее, если тест писал отладочные сообщения в конце JSON, основной процесс тестирования не мог разобрать JSON. Исправление Виктора Стиннера.

  • gh-108996: Исправить и включить test_msvcrt.

  • gh-109237: Исправьте test_site.test_underpth_basic(), когда рабочий каталог содержит хотя бы один не-ASCII символ: перекодируйте файл ._pth в UTF-8 и включите режим UTF-8, чтобы использовать UTF-8 для stdout дочернего процесса. Исправление Виктора Стиннера.

  • gh-109230: Исправление test_pyexpat.test_exception(): теперь его можно запускать из каталога, отличного от каталога исходного кода Python. Раньше в этом случае тест не выполнялся. Пропускайте тест, если исходный код Modules/pyexpat.c недоступен. Также пропустите тест на реализациях Python, отличных от CPython. Исправление Виктора Стиннера.

  • gh-108996: Добавьте тесты для msvcrt.

  • gh-109015: Исправьте тесты test_asyncio, test_imaplib и test_socket на FreeBSD, если включена черная дыра TCP (sysctl net.inet.tcp.blackhole). Пропустите несколько тестов, которые не сработали при использовании ETIMEDOUT с такой нестандартной конфигурацией. В настоящее время используется FreeBSD GCP image enables TCP and UDP blackhole (sysctl net.inet.tcp.blackhole=2 и sysctl net.inet.udp.blackhole=1). Исправление Виктора Стиннера.

  • gh-91960: Пропустите test_gdb, если gdb не может получить фреймовые объекты Python: если фрейм <optimized out>. Когда Python собран с «clang -Og», gdb может не получить параметр frame из _PyEval_EvalFrameDefault(). В этом случае тесты типа py_bt(), скорее всего, не пройдут. Не имея доступа к фреймам Python, python-gdb.py в большинстве случаев не сможет получить трассировку Python. Кроме того, test_gdb больше не пропускается на macOS, если Python собран с помощью Clang. Исправление Виктора Стиннера.

  • gh-108962: Пропустите test_tempfile.test_flags(), если chflags() завершится с ошибкой «OSError: [Errno 45] Operation not supported» (например, на FreeBSD 13). Исправление Виктора Стиннера.

  • gh-91960: Покрытие CI-запросов для FreeBSD 13.2 теперь обеспечивается Cirrus-CI (хостинговый CI-сервис, поддерживающий Linux, macOS, Windows и FreeBSD).

  • gh-89392: Убрана поддержка функции test_main() в тестах. Теперь они всегда используют обычный тестовый бегунок unittest.

  • gh-108851: Исправление test_tomllib тестов на рекурсию для билдботов WASI: уменьшение предела рекурсии и вычисление максимального вложенного массива/дикта в зависимости от текущего доступного предела рекурсии. Исправление Виктора Стиннера.

  • gh-108851: Добавьте функции get_recursion_available() и get_recursion_depth() в модуль test.support. Исправление Виктора Стиннера.

  • gh-108834: Добавьте опцию --fail-rerun option к regrtest: если тест не прошел, а затем прошел при повторном запуске в режиме verbose, завершите процесс с кодом выхода 2 (ошибка), вместо кода выхода 0 (успех). Исправление Виктора Стиннера.

  • gh-108834: Переименуйте опцию regrtest --verbose2 (-w) в --rerun. Оставьте --verbose2 в качестве устаревшего псевдонима. Исправление Виктора Стиннера.

  • gh-108834: Когда regrtest повторно запускает неудачные тесты в режиме verbose (./python -m test --rerun), тесты теперь повторно запускаются в свежих рабочих процессах, а не выполняются в главном процессе. Если тест падает или завершается по таймауту, главный процесс может обнаружить и обработать завершенный рабочий процесс. Тесты запускаются параллельно, если используется опция -jN для параллельного запуска тестов. Исправление Виктора Стиннера.

  • gh-108822: regrtest теперь вычисляет статистику по всем тестам: успехи, неудачи и пропущенные. test_netrc, test_pep646_syntax и test_xml_etree теперь возвращают результаты в своей функции test_main(). Исправление Виктора Стиннера и Алекса Уэйгуда.

  • gh-108794: Метод doctest.DocTestRunner.run() теперь подсчитывает количество пропущенных тестов. Добавлены атрибуты doctest.DocTestRunner.skips и doctest.TestResults.skipped. Исправление Виктора Стиннера.

  • gh-108388: Преобразование test_concurrent_futures в пакет из 7 подтестов. Исправление Виктора Стиннера.

  • gh-108388: Разделили test_multiprocessing_fork, test_multiprocessing_forkserver и test_multiprocessing_spawn на тестовые пакеты. Каждый пакет состоит из 4 подтестов: processes, threads, manager и misc. Это позволяет запускать больше тестов параллельно и тем самым сократить общую продолжительность тестирования. Автор патча - Виктор Стиннер.

  • gh-105776: Исправьте test_cppext, когда команда компилятора C -std=c11 опция: удалить -std= опции из команды компилятора. Исправление Виктора Стиннера.

  • gh-107652: Настройка CIFuzz для запуска целей fuzz в GitHub Actions. Исправление от Illia Volochii.

  • gh-107237: test_logging: Исправьте test_udp_reconnection(), увеличив таймаут со 100 мс до 5 минут (LONG_TIMEOUT). Исправление Виктора Стиннера.

  • gh-107178: Добавьте тест C API для функций в протоколе отображения, протоколе последовательности и некоторых функций в протоколе объектов.

  • gh-106714: test_capi: Исправьте test_no_FatalError_infinite_loop(), чтобы больше не писать coredump, используя test.support.SuppressCrashReport. Исправление Виктора Стиннера.

  • gh-104090: Избегайте создания ссылки на тестовый объект в collectedDurations().

  • gh-106752: Переместили тесты для zipfile.Path в Lib/test/test_zipfile/_path. Сделали zipfile._path пакетом.

  • gh-106690: Добавьте .coveragerc в репозиторий cpython для использования с пакетом покрытия.

  • gh-101634: При запуске набора тестов Python с опцией -jN, если рабочий stdout не может быть декодирован из кодировки локали, сообщите о неудачном тесте, если exitcode ненулевой. Исправление Виктора Стиннера.

  • gh-105084: Когда сборка Python настроена на --with-wheel-pkg-dir, тесты, требующие колёса setuptools и wheel, будут искать колёса в WHEEL_PKG_DIR.

  • gh-81005: Строковые тесты изменены, чтобы отразить, что str и unicode слиты в Python 3. Исправление от Даниила Фортунова.

  • gh-103186: Подавление и утверждение ожидаемых предупреждений RuntimeWarnings в test_sys_settrace.py

  • gh-69714: Добавьте дополнительные тесты в calendar, чтобы добиться полного тестового покрытия.

Построить

  • gh-103053: «make check-clean-src» теперь также проверяет, найдена ли программа «python» в каталоге с исходным кодом: если она существует, то выдает ошибку. Исправление Виктора Стиннера.

  • gh-109191: Исправление ошибки компиляции при сборке с последними версиями libedit.

  • gh-110276: Больше не игнорирует сбой PROFILE_TASK без звука: команда, используемая Profile Guided Optimization (PGO). Исправление от Виктора Стиннера.

  • gh-109566: Удалите цель make testall: вместо нее используйте make buildbottest. Исправление Виктора Стиннера.

  • gh-109740: Экспериментальный флаг конфигурации --disable-gil теперь включает «t» (для «threaded») в ABI-теги расширений.

  • gh-109054: Исправлена сборка расширения _testcapi на Linux AArch64, требующая линковки с libatomic, когда используется <cpython/pyatomic.h>: функция _Py_atomic_or_uint64() требует libatomic __atomic_fetch_or_8() на этой платформе. Теперь скрипт configure проверяет, нужна ли связь с libatomic, и генерирует новую переменную LIBATOMIC, используемую для сборки расширения _testcapi. Автор исправления - Виктор Стиннер.

  • gh-63760: Исправьте сборку Solaris: больше не переопределяйте функцию gethostname(). Solaris определяет эту функцию с 2005 года. Исправление Виктора Стиннера, оригинальный патч Якуба Кулика.

  • gh-108740: Исправление состояния гонки в make regen-all. Исходный код deepfreeze.c и файлы, генерируемые Argument Clinic, теперь генерируются или обновляются перед генерацией «глобальных объектов». Ранее некоторые идентификаторы могли быть пропущены в зависимости от порядка генерации этих файлов. Исправление Виктора Стиннера.

  • gh-108634: Python, собранный с помощью configure --with-trace-refs (трассировка ссылок) теперь совместим по ABI с релизными сборками Python и debug build. Исправление Виктора Стиннера.

  • gh-85283: _stat Расширение C теперь собирается с помощью limited C API. Исправление Виктора Стиннера.

  • gh-108447: Исправьте сборку x86_64 GNU/Hurd

  • gh-107814: При вызове find_python.bat с помощью -q он не глушил вывод nuget. Теперь это исправлено.

  • gh-105481: Удалите цель make regen-opcode-targets, объедините ее работу в regen-opcode, которая повторяет большую часть вычислений. Это упрощает код для сборки и уменьшает дублирование кода.

  • gh-106881: Проверьте наличие linux/limits.h, прежде чем включать его в Modules/posixmodule.c.

  • gh-95855: Рефакторинг кода обнаружения платформенных триплетов и добавление обнаружения для MIPS soft float и musl libc.

  • gh-106962: Обнаружить компиляторы MPI в configure.

  • gh-106118: Исправление компиляции для платформ без O_CLOEXEC. Проблема появилась в Python 3.12b1 в gh-103295. Исправление Эрленда Аасланда.

  • gh-105875: Для сборки модуля расширения sqlite3 требуется SQLite 3.15.2 или новее. Исправление Эрленда Аасланда.

  • gh-90005: Исправьте регрессию в configure, из-за которой мы могли непреднамеренно связываться с libbsd.

  • gh-102404: Документируйте, как выполнить сборку WASI в Linux. Также добавьте Tools/wasm/build_wasi.sh в качестве эталонной реализации документации.

  • gh-89886: Autoconf 2.71 и aclocal 1.16.4 теперь требуются для регенерации !configure.

  • gh-104692: Включите commoninstall как необходимое условие для bininstall

    Это гарантирует, что commoninstall будет завершен до запуска bininstall, если используются параллельные сборки (make -j install), и поэтому симлинк python3 будет установлен только после установки всех модулей стандартной библиотеки.

  • gh-101538: Добавляет экспериментальную поддержку wasi-потоков. Исправление от Такаши Ямамото.

Windows

  • gh-110437: Позволяет переопределять источник перераспределяемых файлов VC, чтобы релизы гарантированно не понижались между обновлениями.

  • gh-109286: Обновление программы установки Windows для использования SQLite 3.43.1.

  • gh-82367: os.path.realpath() теперь разрешает имена файлов в стиле MS-DOS, даже если файл недоступен. Исправление от Moonsik Park.

  • gh-109991: Обновление сборки Windows для использования OpenSSL 3.0.11.

  • gh-106242: Исправлено поведение realpath(), которое должно быть последовательным при передаче пути, содержащего встроенный нулевой символ в Windows. В строгом режиме он теперь поднимает OSError вместо неожиданного ValueError, а в нестрогом режиме делает путь абсолютным.

  • gh-83180: Изменяет значение Python Launcher для Windows, чтобы предпочесть активное виртуальное окружение, если запущенный скрипт содержит строку shebang, использующую виртуальную команду Unix-подобного типа, даже если команда запрашивает конкретную версию Python.

  • gh-106844: Исправьте целочисленное переполнение и усечение по нулевому символу в _winapi.LCMapStringEx(), которое влияет на ntpath.normcase().

  • gh-105436: Убедитесь, что пустой блок среды завершается двумя нулевыми символами, как того требует Windows.

  • gh-105146: Обновлены ссылки в конце программы установки, чтобы они указывали на Discourse, а не на списки рассылки.

  • gh-103646: При установке из Microsoft Store pip больше не устанавливает по умолчанию установку для каждого пользователя. Однако, поскольку директория установки является недоступной для записи, она должна автоматически принимать решение об установке для каждого пользователя в любом случае. Это позволит решить проблемы, когда pip передается опция, конфликтующая с --user.

  • gh-88745: Повысьте производительность shutil.copy2(), используя функцию CopyFile2 операционной системы. Это может привести к тонким изменениям метаданных, копируемых вместе с некоторыми файлами, приводя их в соответствие с обычным поведением ОС.

  • gh-104820: Исправляет stat() и связанные с ним функции в файловых системах, которые не поддерживают запросы идентификатора файла. К ним относятся FAT32 и exFAT.

  • gh-104803: Добавьте os.path.isdevdrive(), чтобы определить, находится ли путь на Windows Dev Drive. Возвращает False на платформах, не поддерживающих Dev Drive, и отсутствует на платформах, отличных от Windows.

macOS

  • gh-109286: Обновите программу установки macOS для использования SQLite 3.43.1.

  • gh-109991: Обновите программу установки macOS для использования OpenSSL 3.0.11.

  • gh-99079: Обновите программу установки macOS для использования OpenSSL 3.0.9.

IDLE

  • gh-104719: Удалите модификацию tokenize.tabsize в IDLE и протестируйте другие варианты использования данных и методов tokenize.

Инструменты/демоверсии

  • gh-109991: Обновите рабочие процессы GitHub CI для использования OpenSSL 3.0.11 и multissltests для использования 1.1.1w, 3.0.11 и 3.1.3.

  • gh-108494: Argument Clinic теперь имеет частичную поддержку Limited API: см. documentation in the Python Developer’s Guide Патч от Виктора Стиннера.

  • gh-107704: Теперь можно отказаться от передачи аргументов с ключевыми словами для ключевых или позиционных параметров с помощью Argument Clinic, используя новый синтаксис / [from X.Y]. (Следует читать как «только для позиционных параметров, начиная с версии Python X.Y ».) Дополнительную информацию см. в documentation in the Python Developer’s Guide.

  • gh-107880: Argument Clinic теперь может клонировать методы __init__() и __new__().

  • gh-104683: Добавьте опцию --exclude в Аргумент Клиники CLI.

  • gh-95065: Argument Clinic теперь поддерживает переопределение автоматически сгенерированной сигнатуры с помощью директивы @text_signature. См. documentation in the Python Developer’s Guide.

  • gh-107609: Исправлена проверка дублирующего модуля в Argument Clinic. Ранее дублирующееся определение некорректно принималось молча. Исправление Эрленда Э. Аасланда.

  • gh-107467: Инструмент командной строки Argument Clinic теперь печатает в stderr, а не в stdout при неудаче.

  • gh-106970: Исправление ошибок в команде Argument Clinic destination <name> clear; буферы назначения никогда не очищались, а парсер директивы destination после обработки команды просто переходил к обработчику ошибок. Исправление Эрленда Э. Аасланда.

  • gh-106706: Измените синтаксис байткода для семейств, чтобы убрать избыточный псевдосинтаксис сопоставления имен.

  • gh-106359: Argument Clinic теперь явно запрещает «kwarg splats» в вызовах функций, используемых в качестве аннотаций.

  • gh-103186: freeze теперь получает CONFIG_ARGS из оригинального экземпляра CPython, который Makefile использует для вызова сценариев утилит. Исправление Иджтабы Хусейна.

  • gh-95065: Теперь можно отказаться от позиционной передачи параметров с помощью Argument Clinic, используя новый синтаксис * [from X.Y]. (Следует читать как «только для ключевых слов, начиная с версии Python X.Y ».) Более подробную информацию смотрите в documentation in the Python Developer’s Guide. Исправление сделано Эрлендом Э. Аасланом при помощи Алекса Уэйгуда, Никиты Соболева и Сергея Сторчака.

C API

  • gh-85283: Если макрос Py_LIMITED_API определен, макросы Py_BUILD_CORE, Py_BUILD_CORE_BUILTIN и Py_BUILD_CORE_MODULE теперь не определяются макросом <Python.h>. Исправление Виктора Стиннера.

  • gh-110289: Добавьте функции PyUnicode_EqualToUTF8AndSize() и PyUnicode_EqualToUTF8().

  • gh-110235: Повышение TypeError для дублирующихся/неизвестных полей в конструкторе PyStructSequence. Исправлено Xuehai Pan.

  • gh-110014: Удалите недокументированную константу PY_TIMEOUT_MAX из ограниченного C API. Исправление Виктора Стиннера.

  • gh-109521: PyImport_GetImporter() теперь устанавливает RuntimeError, если не может получить sys.path_hooks или sys.path_importer_cache или они не являются list и dict соответственно. Ранее он мог возвращать NULL без установки ошибки в неясных случаях, аварийно завершать работу или вызывать SystemError, если эти атрибуты имели неправильный тип.

  • gh-108724: Добавьте PyMutex только внутренний API облегченной блокировки.

  • gh-85283: Добавьте функцию PySys_AuditTuple(): аналогично PySys_Audit(), но аргументы события передаются в виде объекта Python tuple. Исправление Виктора Стиннера.

  • gh-108867: Добавьте функцию PyThreadState_GetUnchecked(): аналогично PyThreadState_Get(), но не убивайте процесс с фатальной ошибкой, если результат равен NULL. Вызывающая сторона сама проверяет, является ли результат NULL. Ранее эта функция была приватной и называлась _PyThreadState_UncheckedGet(). Исправление Виктора Стиннера.

  • gh-108765: Python.h больше не включает стандартный заголовочный файл <ctype.h>. При необходимости его теперь следует включать явно. Например, он предоставляет функции isalpha() и tolower(), которые зависят от локали. Python предоставляет независимые от локали функции, такие как Py_ISALPHA() и Py_TOLOWER(). Исправление Виктора Стиннера.

  • gh-108765: Python.h больше не включает стандартный заголовочный файл <unistd.h>. При необходимости его теперь следует включать явно. Например, он предоставляет функции: close(), getpagesize(), getpid() и sysconf(). Исправление Виктора Стиннера.

  • gh-108765: Python.h больше не включает стандартный заголовок <ieeefp.h>. Он был включен для функции finite(), которая теперь обеспечивается заголовком <math.h>. Теперь его следует включать в явном виде, если это необходимо. Удалите также макрос HAVE_IEEEFP_H. Исправление Виктора Стиннера.

  • gh-108765: Python.h больше не включает эти стандартные заголовочные файлы: <time.h>, <sys/select.h> и <sys/time.h>. При необходимости их теперь следует включать явно. Например, <time.h> предоставляет функции clock() и gmtime(), <sys/select.h> - функцию select(), а <sys/time.h> - функции futimes(), gettimeofday() и setitimer(). Патч от Виктора Стиннера.

  • gh-108511: Добавьте функции PyObject_HasAttrWithError(), PyObject_HasAttrStringWithError(), PyMapping_HasKeyWithError() и PyMapping_HasKeyStringWithError().

  • gh-107073: Добавьте функции PyObject_VisitManagedDict() и PyObject_ClearManagedDict(), которые должны вызываться функциями traverse и clear типа, использующего флаг Py_TPFLAGS_MANAGED_DICT. Исправление Виктора Стиннера.

  • gh-108634: Python, созданный с помощью configure --with-trace-refs (трассировка ссылок) теперь поддерживает Limited API. Исправление Виктора Стиннера.

  • gh-108014: Добавьте функцию PyLong_AsInt(): она аналогична PyLong_AsLong(), но хранит результат в C int, а не в C long. Ранее она была известна как частная функция _PyLong_AsInt() (с префиксом подчеркивания). Исправление Виктора Стиннера.

  • gh-108314: Добавьте функцию PyDict_ContainsString(): то же самое, что и PyDict_Contains(), но ключ указывается как const char*. UTF-8 кодированная байтовая строка, а не PyObject*. Исправление Виктора Стиннера.

  • gh-108337: Добавьте атомарные операции над дополнительными типами данных в pyatomic.h.

  • gh-108014: Добавьте функцию Py_IsFinalizing(): проверьте, является ли основной интерпретатор Python shutting down. Исправление Виктора Стиннера.

  • gh-107916: Функции C API PyErr_SetFromErrnoWithFilename(), PyErr_SetExcFromWindowsErrWithFilename() и PyErr_SetFromWindowsErrWithFilename() теперь сохраняют код ошибки перед вызовом PyUnicode_DecodeFSDefault().

  • gh-107915: Такие функции C API, как PyErr_SetString(), PyErr_Format(), PyErr_SetFromErrnoWithFilename() и многие другие, больше не аварийно завершаются и не игнорируют ошибки, если им не удалось отформатировать сообщение об ошибке или декодировать имя файла. Вместо этого они сохраняют соответствующую ошибку.

  • gh-107810: Улучшите DeprecationWarning для использования PyType_Spec с метаклассами, имеющими пользовательские tp_new.

  • gh-107249: Реализуйте макрос Py_UNUSED для компилятора Windows MSVC. Исправление Виктора Стиннера.

  • gh-107226: PyModule_AddObjectRef() теперь доступен только в ограниченном API версии 3.10 или более поздней.

  • gh-106320: Удалите частный псевдоним _PyUnicode_AsString() для PyUnicode_AsUTF8(). Он был сохранен для обратной совместимости с Python 3.0 - 3.2. Функция PyUnicode_AsUTF8() доступна начиная с Python 3.3. Функция PyUnicode_AsUTF8String() может быть использована для сохранения совместимости с Python 3.2 и старше. Исправление Виктора Стиннера.

  • gh-106572: Преобразование макросов PyObject_DelAttr() и PyObject_DelAttrString() в функции. Исправление Виктора Стиннера.

  • gh-106307: Добавить функцию PyMapping_GetOptionalItem().

  • gh-106521: Добавьте функции PyObject_GetOptionalAttr() и PyObject_GetOptionalAttrString().

  • gh-106320: Удалите псевдоним _PyInterpreterState_Get() для PyInterpreterState_Get(), который был сохранен для обратной совместимости с Python 3.8. Исправление Виктора Стиннера.

  • gh-106316: Удалите заголовочный файл cpython/pytime.h: он содержал только приватные функции. Исправление Виктора Стиннера.

  • gh-106023: Удалите приватную функцию _PyObject_FastCall(): используйте PyObject_Vectorcall(), которая доступна с Python 3.8 (PEP 590). Исправление Виктора Стиннера.

  • gh-106168: Если Python построен на debug mode или with assertions, то PyTuple_SET_ITEM() и PyList_SET_ITEM() теперь проверяют аргумент index с помощью утверждения. Если утверждение не проходит, убедитесь, что размер был задан раньше. Исправление Виктора Стиннера.

  • gh-106084: Удалите старые псевдонимы для функций, вызывающих функции, которые были сохранены для обратной совместимости с предварительным API Python 3.8:

    • _PyObject_CallMethodNoArgs(): использовать PyObject_CallMethodNoArgs()

    • _PyObject_CallMethodOneArg(): использовать PyObject_CallMethodOneArg()

    • _PyObject_CallOneArg(): использовать PyObject_CallOneArg()

    • _PyObject_FastCallDict(): использовать PyObject_VectorcallDict()

    • _PyObject_Vectorcall(): использовать PyObject_Vectorcall()

    • _PyObject_VectorcallMethod(): использовать PyObject_VectorcallMethod()

    • _PyVectorcall_Function(): использовать PyVectorcall_Function()

    Просто удалите префикс подчеркивания, чтобы обновить свой код. Исправление Виктора Стиннера.

  • gh-106004: Добавляет функции PyDict_GetItemRef() и PyDict_GetItemStringRef(): аналогичные PyDict_GetItemWithError(), но возвращающие strong reference вместо borrowed reference. Исправление Виктора Стиннера.

  • gh-105927: Утратили актуальность функции PyWeakref_GetObject() и PyWeakref_GET_OBJECT(): вместо них используйте новую функцию PyWeakref_GetRef(). Исправление Виктора Стиннера.

  • gh-105927: Добавьте функцию PyWeakref_GetRef(): аналогична PyWeakref_GetObject(), но возвращает strong reference, или NULL, если референт больше не жив. Исправление Виктора Стиннера.

  • gh-105922: Добавьте PyImport_AddModuleRef(): аналогично PyImport_AddModule(), но возвращает strong reference вместо borrowed reference. Исправление Виктора Стиннера.

  • gh-105227: Новый PyType_GetDict() предоставляет словарь для данного объекта типа, который обычно раскрывается cls.__dict__. Обычно достаточно использовать tp_dict, но для статических встроенных типов tp_dict теперь всегда NULL. Вместо этого PyType_GetDict() предоставляет правильный объект dict.

  • gh-105375: Исправление ошибки в PyErr_WarnExplicit(), когда исключение могло быть перезаписано, если API не справлялся с внутренней задачей.

  • gh-105603: Мы переименовали новый (в 3.12) PyInterpreterConfig.own_gil в PyInterpreterConfig.gil и изменили значение с «bool» на целое число с поддерживаемыми значениями PyInterpreterConfig_DEFAULT_GIL, PyInterpreterConfig_SHARED_GIL и PyInterpreterConfig_OWN_GIL. По умолчанию используется значение «shared».

  • gh-105387: В ограниченном API C версии 3.12 функции Py_INCREF() и Py_DECREF() теперь реализованы как непрозрачные вызовы функций, чтобы скрыть детали реализации. Исправление Виктора Стиннера.

  • gh-105396: Утрачиваем функцию PyImport_ImportModuleNoBlock(), которая с Python 3.3 является просто псевдонимом для PyImport_ImportModule(). Исправление Виктора Стиннера.

  • gh-103968: PyType_FromMetaclass() теперь позволяет использовать метаклассы с tp_new, установленным на NULL.

  • gh-105268: Удалите старый приватный, недокументированный и непроверенный макрос _PyGC_FINALIZED(), который был оставлен для обратной совместимости с Python 3.8 и старше. Исправление Виктора Стиннера.

  • gh-105182: Удалите функции PyEval_AcquireLock() и PyEval_ReleaseLock(), устаревшие в Python 3.2. Исправление Виктора Стиннера.

  • gh-105182: Удалите функции PyEval_InitThreads() и PyEval_ThreadsInitialized(), устаревшие в Python 3.9. Исправление Виктора Стиннера.

  • gh-105145: Устраните старые функции инициализации Python:

    Патч Виктора Стиннера.

  • gh-85275: PyObject_AsCharBuffer(), PyObject_AsReadBuffer(), PyObject_CheckReadBuffer() и PyObject_AsWriteBuffer() удалены. Пожалуйста, перейдите на новый буферный протокол; PyObject_GetBuffer() и PyBuffer_Release().

  • gh-105156: Откажитесь от старых типов Py_UNICODE и PY_UNICODE_TYPE: вместо них используйте непосредственно тип wchar_t. Начиная с Python 3.3, Py_UNICODE и PY_UNICODE_TYPE являются просто псевдонимами для wchar_t. Исправление Виктора Стиннера.

  • gh-105145: Удалите следующие старые функции для настройки инициализации Python, устаревшие в Python 3.11:

    • PySys_AddWarnOptionUnicode()

    • PySys_AddWarnOption()

    • PySys_AddXOption()

    • PySys_HasWarnOptions()

    • PySys_SetArgvEx()

    • PySys_SetArgv()

    • PySys_SetPath()

    • Py_SetPath()

    • Py_SetProgramName()

    • Py_SetPythonHome()

    • Py_SetStandardStreamEncoding()

    • _Py_SetProgramFullPath()

    Патч Виктора Стиннера.

  • gh-105107: Удалите функции, устаревшие в Python 3.9.

    • PyEval_CallObject(), PyEval_CallObjectWithKeywords(): используйте вместо них PyObject_CallNoArgs() и PyObject_Call() (позиционные аргументы не должны быть NULL).

    • PyEval_CallFunction(): используйте вместо него PyObject_CallFunction().

    • PyEval_CallMethod(): используйте вместо него PyObject_CallMethod().

    • PyCFunction_Call(): используйте вместо него PyObject_Call().

    Патч Виктора Стиннера.

  • gh-105115: PyTypeObject.tp_basestp_mro) для встроенных статических типов теперь общие для всех интерпретаторов, тогда как в 3.12-beta1 они хранились на PyInterpreterState. Также обратите внимание, что теперь кортежи являются бессмертными объектами.

  • gh-105071: Добавьте PyUnstable_Exc_PrepReraiseStar в нестабильный C api, чтобы показать реализацию except*.

  • gh-104922: PY_SSIZE_T_CLEAN больше не требуется использовать форматы '#' в таких API, как PyArg_ParseTuple() и Py_BuildValue(). Они используют Py_ssize_t для '#' независимо от PY_SSIZE_T_CLEAN.

  • gh-104584: Добавляет нестабильный C API для подключения оптимизатора. Это в основном внутреннее, но помеченное как «нестабильное», чтобы позволить сторонним разработчикам экспериментировать.

  • gh-104668: Не вызывайте PyOS_InputHook или PyOS_ReadlineFunctionPointer в субинтерпретаторах, так как обычно трудно избежать использования глобального состояния в их зарегистрированных обратных вызовах. Это также позволяет избежать ситуаций, когда расширения могут оказаться запущенными в подинтерпретаторе, который они не поддерживают (или который еще не был загружен).

  • bpo-42327: Добавьте функцию PyModule_Add(): аналогична PyModule_AddObjectRef() и PyModule_AddObject(), но всегда сохраняет ссылку на значение.

  • bpo-40309: Правильно обрабатывать пробелы перед закрывающей скобкой в строках формата Py_BuildValue().

Python 3.12.0 beta 1

Дата выхода: 2023-05-22

Безопасность

  • gh-99889: Исправлен недостаток безопасности в uu.decode(), который мог привести к обращению к директории на основе входных данных, если не был указан out_file.

  • gh-104049: Не раскрывайте локальное расположение на диске в индексах каталогов, созданных http.client.SimpleHTTPRequestHandler.

  • gh-99108: Обновление встроенной hashlib Реализация SHA3 до проверенной реализации из проекта HACL*. Используется, когда OpenSSL отсутствует или в нем нет SHA3.

  • gh-102153: urllib.parse.urlsplit() теперь удаляет ведущие управляющие символы C0 и пробелы, следуя спецификации для URL, определенной WHATWG в ответ на CVE-2023-24329. Исправление Илии Волочии.

Ядро и встроенные модули

  • gh-102856: Внесите изменения PEP 701 в модуль tokenize. Исправления от Марты Гомес Масиас и Пабло Галиндо Сальгадо

  • gh-104615: Исправьте неправильное упорядочивание присваиваний в коде типа a, a = x, y. Внесено Карлом Мейером.

  • gh-104572: Улучшено сообщение об ошибке синтаксиса для недопустимых конструкций в контекстах PEP 695 и в аннотациях, когда активна from __future__ import annotations.

  • gh-104482: Исправлены три ошибки в обработке ошибок в проверке операторов сопоставления шаблонов в ast.c.

  • gh-102818: Не добавлять кадр в обратный след в функциях sys.setprofile и sys.settrace trampoline. Это гарантирует, что кадры не будут дублироваться, если в функции обратного вызова возникнет исключение, а также гарантирует, что кадры не будут пропущены, если используется обратный вызов на языке C, который не добавляет кадр.

  • gh-104405: Исправлена проблема, из-за которой некоторые инструкции bytecode могли игнорировать PEP 523 при «инлайнинге» вызовов.

  • gh-103082: Изменено поведение событий sys.monitoring.events.LINE в sys.monitoring: События линии теперь происходят при достижении новой линии динамически, а не с помощью статического приближения, как раньше. Это делает поведение очень похожим на поведение событий «линия» в sys.settrace. Это должно облегчить перенос инструментов с 3.11 на 3.12.

  • gh-104263: Исправьте float("nan") для получения тихого NaN на платформах (например, MIPS), где значение бита signalling / quiet инвертировано по сравнению с его обычным значением. Также введен новый макрос Py_INFINITY, соответствующий INFINITY из C99, и рефакторинг внутренних функций, чтобы полагаться на макросы NAN и INFINITY из C99 вместо жесткого кодирования битовых шаблонов для бесконечности и NaN. Спасибо Себастьяну Бергу.

  • gh-99113: Модули расширения Multi-phase init теперь могут указывать, что они поддерживают запуск в субинтерпретаторах, имеющих свой собственный GIL. Для этого используется значение Py_MOD_PER_INTERPRETER_GIL_SUPPORTED в слоте def модуля Py_mod_multiple_interpreters. В противном случае модуль по умолчанию не может быть импортирован в такие подынтерпретаторы. (Это не влияет на основной интерпретатор или подинтерпретаторы, не имеющие собственного GIL). В дополнение к изоляции, которую обычно требует многофазный init, поддержка GIL для каждого интерпретатора подразумевает еще одно ограничение: безопасность потоков. Если модуль имеет внешние (связанные) зависимости, и эти библиотеки имеют состояние, которое не является потокобезопасным, то модуль должен проделать дополнительную работу по добавлению потокобезопасности. Это должно быть редким случаем.

  • gh-99113: GIL теперь (опционально) зависит от конкретного интерпретатора. Это фундаментальное изменение для PEP 684. Все это стало возможным благодаря изолированному состоянию каждого интерпретатора в процессе. Поведение главного интерпретатора остается неизменным. Аналогично, интерпретаторы, созданные с помощью Py_NewInterpreter(), не затрагиваются. Чтобы получить интерпретатор с собственным GIL, вызовите Py_NewInterpreterFromConfig().

  • gh-104108: Модули расширения Multi-phase init теперь могут указывать, поддерживают ли они на самом деле несколько интерпретаторов. По умолчанию предполагается, что такие модули поддерживают использование в нескольких интерпретаторах. В редких случаях, когда это не так, модуль может использовать новый слот Py_mod_multiple_interpreters. Значение 0 означает, что модуль их не поддерживает. Значение 1 означает, что поддерживает. По умолчанию используется значение 1.

  • gh-104142: Исправлена проблема, из-за которой при повторении list или tuple не соблюдался PEP 683.

  • gh-104078: Улучшение производительности PyObject_HasAttrString()

  • gh-104066: Улучшение работы hasattr() для объектов модуля с отсутствующим атрибутом.

  • gh-104028: Сократите создание объектов при вызове функции обратного вызова из gc. Исправление от Donghee Na.

  • gh-104018: Запретить спецификатор формата «z» в объектах %-формата байтов.

  • gh-102213: Исправление падения производительности при обращении к атрибутам объекта с определенным __getattr__.

  • gh-103895: Улучшение обработки крайних случаев при отображении Exception.__notes__. Обеспечивает, чтобы сообщения всегда заканчивались новой строкой и чтобы строки/байты не разрывались на несколько строк. Исправление от Carey Metcalfe.

  • gh-103907: Не изменяйте рефкаунты известных бессмертных объектов (True, False и None) в главном цикле интерпретатора.

  • gh-103899: Предоставляет полезную подсказку в сообщении TypeError при случайном вызове объекта module, у которого есть вызываемый атрибут с таким же именем (например, dis.dis() или datetime.datetime).

  • gh-103845: Удаляйте инструментарий строк и инструкций перед добавлением новых для мониторинга, чтобы избежать немедленного удаления вновь добавленного инструментария.

  • gh-103763: Реализуйте PEP 695, добавив синтаксическую поддержку общих классов, общих функций и псевдонимов типов.

    Для псевдонимов типов добавлен новый синтаксис type X = ..., который во время выполнения разрешается в экземпляр нового класса typing.TypeAliasType. Значение лениво оценивается и доступно через атрибут .__value__. Это реализовано в виде нового узла AST ast.TypeAlias.

    Добавлен новый синтаксис (class X[T]: ..., def func[T](): ...) для определения общих функций и классов. Это реализовано в виде нового атрибута type_params на узлах AST для классов и функций. В этом узле хранятся экземпляры новых AST-классов ast.TypeVar, ast.ParamSpec и ast.TypeVarTuple.

    typing.TypeVar, typing.ParamSpec, typing.ParamSpecArgs, typing.ParamSpecKwargs, typing.TypeVarTuple и typing.Generic теперь реализованы на C, а не на Python.

    Появились новые инструкции байткода LOAD_LOCALS, LOAD_CLASSDICT_OR_GLOBAL и LOAD_CLASSDICT_OR_DEREF для поддержки корректного разрешения имен в пространствах имен классов.

    Патч от Эрика Траута, Ларри Хастингса и Йелле Зейлстры.

  • gh-103801: Добавляет три незначительных исправления линтинга в модуль wasm, которые были пойманы ruff.

  • gh-103793: Оптимизировали создание задач asyncio, отложив дорогостоящее форматирование строк (генерацию имени задачи) от создания задачи до первого вызова get_name. Благодаря этому бенчмарки asyncio работают на 5 % быстрее.

  • gh-102310: Измените диапазон ошибок для недопустимых байтовых литералов.

  • gh-103590: Не заворачивайте одно исключение, вызванное конструкцией try-except*, в конструкцию ExceptionGroup.

  • gh-103650: Измените формат perf map, чтобы убрать префикс „0x“ из адресов

  • gh-102856: Реализуйте необходимые изменения токенизатора C для PEP 701. Исправления внесли Пабло Галиндо Сальгадо, Лисандрос Николау, Батухан Таская, Марта Гомес Масиас и sunmy2019.

  • gh-100530: Уточните сообщение об ошибке, возникающей, когда вызываемая часть шаблона класса на самом деле не является классом.

  • gh-101517: Исправлена ошибка в номерах строк инструкций, выдаваемых для except*.

  • gh-103492: Уточните сравнение SyntaxWarning с литералом is, указав, какой литерал является проблематичным, поскольку сравнения is с литералами, например, None и bool, являются идиоматическими.

  • gh-87729: Добавьте LOAD_SUPER_ATTR (и специализацию для super().method()), чтобы ускорить super().method() и super().attr. Это делает super().method() примерно в 2,3 раза быстрее и приближает его к 20 % производительности простого вызова метода. Исправление Владимира Матвеева и Карла Мейера.

  • gh-103488: Изменяет внутреннее смещение, различающее целевые адреса выхода и возврата, чтобы указатель инструкции был корректен для обработки исключений и других разворачиваний стека.

  • gh-82012: Оператор побитовой инверсии (~) для bool устарел. Он возвращает побитовую инверсию базового представления int, такого что bool(~True) == True, что может сбить с толку. Используйте not для логического отрицания bool. В редких случаях, когда вам действительно нужна побитовая инверсия базового представления int, преобразуйте в int явным образом ~int(x).

  • gh-77757: Исключения, возникающие в методе __set_name__ типового объекта, больше не оборачиваются RuntimeError. Информация о контексте добавляется к исключению в виде примечания PEP 678.

  • gh-103333: AttributeError теперь сохраняет атрибут name в маринованном и неочищенном виде.

  • gh-103242: Перенесите метод set_ecdh_curve(), чтобы он не использовал устаревшие API OpenSSL. Исправление от Donghee Na.

  • gh-103323: Мы заменили использование _PyRuntime.tstate_current на переменную, локальную для потока. Это довольно низкоуровневая деталь реализации, и никаких изменений в поведении быть не должно.

  • gh-84436: Реализация PEP-683, которая добавляет бессмертные объекты, используя фиксированный счетчик ссылок, который пропускает подсчет ссылок, чтобы сделать объекты действительно неизменяемыми.

  • gh-102700: Разрешить встроенным модулям быть подмодулями. Это позволяет подмодулям быть статически связанными с бинарным файлом CPython.

  • gh-103082: Реализуйте PEP 669 Мониторинг с низким воздействием для CPython.

  • gh-88691: Сократите количество встроенных записей CACHE для CALL.

  • gh-102500: Сделайте протокол буфера доступным в коде Python с помощью новых магических методов __buffer__ и __release_buffer__. Подробности смотрите в PEP 688. Исправление от Jelle Zijlstra.

  • gh-97933: PEP 709: встроенные постижения списков, диктов и множеств для повышения производительности и уменьшения размера байткода.

  • gh-99184: Обход доступа к атрибутам экземпляра __name__ в repr из weakref.ref.

  • gh-98003: Вызовы сложных функций теперь выполняются быстрее и не занимают место в стеке C.

  • bpo-39610: len() для 0-мерных memoryview объектов (таких как memoryview(ctypes.c_uint8(42))) теперь возвращает TypeError. Ранее это возвращало 1, что было несовместимо с тем, что mem_0d[0] вызывал IndexError.

  • bpo-31821: Исправьте работу pause_reading() при вызове из connection_made() в asyncio.

Библиотека

  • gh-104600: functools.update_wrapper() теперь устанавливает атрибут __type_params__ (добавленный PEP 695).

  • gh-104340: Когда трубный протокол asyncio теряет соединение из-за ошибки, а вызывающая сторона не ожидает wait_closed() на соответствующем StreamWriter, не надо записывать в журнал предупреждение об исключении, которое так и не было получено. В конце концов, согласно документации StreamWriter.close(), вызов wait_closed() является опциональным («не обязательным»).

  • gh-104555: Исправлена проблема, при которой проверка issubclass(), сравнивающая класс X с runtime-checkable protocol Y с невызываемыми членами не приводила к появлению сообщения TypeError, если до этого был выполнен вызов isinstance(), сравнивающий экземпляр X с Y. Эта проблема присутствовала в крайних случаях в Python 3.11, но стала более заметной в 3.12 из-за некоторых несвязанных изменений, которые были внесены в проверяемые во время выполнения протоколы. Исправление сделано Алексом Уэйгудом.

  • gh-104372: Переработаны внутренние компоненты _posixsubprocess, чтобы избежать использования API Python C между fork и exec при пометке наследования дескрипторов файлов pass_fds=.

  • gh-104484: Добавлен аргумент case_sensitive в pathlib.PurePath.match().

  • gh-75367: Исправьте обнаружение дескрипторов данных в inspect.getattr_static().

  • gh-104536: Исправление состояния гонки во внутренней логике очистки multiprocessing.process, которое могло проявиться в виде непреднамеренного AttributeError при вызове process.close().

  • gh-103857: Обновите stracktrace в datetime deprecations, чтобы он указывал на вызывающую строку

  • gh-101520: Переместите основную функциональность модуля tracemalloc в папку Python/, оставив только обертку модуля в Modules/.

  • gh-104392: Удалите недокументированный и неиспользуемый атрибут _paramspec_tvars из некоторых классов в typing.

  • gh-102613: Исправлена проблема, при которой pathlib.Path.glob() поднимал RecursionError при прохождении по глубоким деревьям каталогов.

  • gh-103000: Улучшение производительности dataclasses.asdict() для распространенного случая, когда dict_factory равно dict. Исправление от David C Ellis.

  • gh-104301: Разрешить ведущие пробельные символы в разобщающих утверждениях в pdb.

  • gh-104139: Научите urllib.parse.unsplit() сохранять "//" при сборке itms-services://?action=generate-bugs в стиле Apple Platform Deployment. URL.

  • gh-104307: socket.getnameinfo() теперь освобождает GIL при обращении к DNS-серверу

  • gh-104310: Теперь пользователи могут использовать importlib.util.allowing_all_extensions() (менеджер контекста) для временного отключения строгих проверок совместимости при импорте модулей расширения в подынтерпретаторы.

  • gh-87695: Исправлена проблема, при которой pathlib.Path.glob() поднимал OSError, когда встречал симлинк на слишком длинный путь.

  • gh-104265: Предотвращение возможного сбоя путем запрета инстанцирования типов _csv.Reader и _csv.Writer. Регрессия была введена в 3.10.0a4 с PR 23224 (bpo-14935). Исправление внесено Радиславом Чугуновым.

  • gh-102613: Улучшение производительности pathlib.Path.glob() при расширении рекурсивных подстановочных знаков («**») за счет объединения смежных подстановочных знаков и удаления дублирования результатов только при необходимости.

  • gh-65772: Удалите ненужные комментарии и код в turtle.py.

  • gh-90208: Исправлена проблема, из-за которой метод pathlib.Path.glob() возвращал неполные результаты, когда встречал PermissionError. Теперь этот метод подавляет все исключения OSError, кроме тех, которые возникают при вызове is_dir() на пути верхнего уровня.

  • gh-104144: Оптимизируйте asyncio.TaskGroup при использовании asyncio.eager_task_factory(). Пропускать планирование обратного вызова done, если задача TaskGroup завершается с нетерпением.

  • gh-104144: Оптимизируйте asyncio.gather() при использовании asyncio.eager_task_factory(), чтобы он завершался с нетерпением, если все фьючерсы завершены с нетерпением. Избегайте планирования обратных вызовов done для фьючерсов, которые завершаются с нетерпением.

  • gh-104114: Исправлена проблема, при которой pathlib.Path.glob() возвращала пути, используя случай неволшебных символов для соответствующих сегментов пути, а не реальный случай файловой системы.

  • gh-104104: Улучшите производительность pathlib.Path.glob(), используя re.IGNORECASE для реализации сопоставления без учета регистра.

  • gh-104102: Улучшение производительности pathlib.Path.glob() при оценке шаблонов, содержащих сегменты '../'.

  • gh-103822: Обновите тип возврата weekday на новый добавленный атрибут Day

  • gh-103629: Обновите repr из typing.Unpack в соответствии с PEP 692.

  • gh-103963: Заставьте dis отображать имена аргументов для CALL_INTRINSIC_*.

  • gh-104035: Не игнорируйте определенные пользователем методы __getstate__ и __setstate__ для щелевых замороженных классов данных.

  • gh-103987: В mmap исправлено несколько ошибок, которые могли привести к доступу к файлам, отображаемым в памяти, после того как они были аннулированы.

  • gh-103977: Улучшите время импорта модуля platform.

  • gh-88773: В модуль turtle добавлен turtle.teleport() для перемещения черепашки в новую точку без трассировки линии, видимой или невидимой. Исправление Лиама Герстена.

  • gh-103935: Используйте io.open_code() для файлов, которые будут выполняться вместо необработанных open().

  • gh-68968: Исправлен искаженный вывод assertEqual(), когда на входе отсутствовала завершающая новая строка.

  • gh-100370: Исправление потенциальных OverflowError в sqlite3.Connection.blobopen() для 32-битных сборок. Исправление от Erlend E. Aasland.

  • gh-102628: Замените CTRL-D на CTRL-Z в sqlite3 Баннер CLI при работе под Windows.

  • gh-103636: Атрибуты уровня модуля January и February устарели по сравнению с calendar.

  • gh-103583: Изолируйте _multibytecodec и модули расширения кодеков. Патчи Эрленда Э. Аасланда.

  • gh-103848: Добавьте проверку того, что хосты [, заключенные в скобки ], найденные urllib.parse.urlsplit(), имеют формат IPv6 или IPvFuture.

  • gh-103872: Обновите поставляемую в комплекте копию pip до версии 23.1.2.

  • gh-99944: Заставьте dis отображать значение oparg из KW_NAMES.

  • gh-74940: Локаль C.UTF-8 больше не конвертируется в en_US.UTF-8, что позволяет использовать кодировку UTF-8 на системах, где не установлены локали.

  • gh-103861: Исправление того, что zipfile.Zipfile создавал некорректные zip-файлы, когда force_zip64 использовался для добавления в них файлов. Исправление от Carey Metcalfe.

  • gh-103857: Устаревшие datetime.datetime.utcnow() и datetime.datetime.utcfromtimestamp() (исправление от Paul Ganssle).

  • gh-103839: Избегайте ошибки компиляции из-за того, что файл tommath.h не найден, при сборке Tkinter на Tcl 8.7, собранном с libtommath в комплекте.

  • gh-103791: contextlib.suppress теперь поддерживает подавление исключений, поднятых как часть ExceptionGroup. Если в группе существуют другие исключения, они будут повторно подняты в группе, которая не содержит подавленных исключений.

  • gh-90750: Используйте datetime.datetime.fromisocalendar() в реализации datetime.datetime.strptime(), которая теперь должна принимать только действительные даты ISO. (Исправление от Paul Ganssle)

  • gh-103685: Подготовьте tkinter.Menu.index() для Tk 8.7, чтобы он не поднимал TclError: expected integer but got "", когда должен возвращать None.

  • gh-81403: urllib.request.CacheFTPHandler больше не вызывает URLError, если кэшированный экземпляр FTP используется повторно. Метод ftplib endtransfer вызывает voidresp для разрыва соединения, чтобы правильно обрабатывать повторное использование экземпляров FTP.

  • gh-103699: Добавляет __orig_bases__ в негенерические TypedDicts, TypedDicts, основанные на вызовах, и NamedTuples, основанные на вызовах. Другие типизаторы и NamedTuples уже имеют этот атрибут.

  • gh-103693: Добавьте функцию удобной переменной в pdb

  • gh-92248: Утратить type, choices и metavar параметры argparse.BooleanOptionalAction.

  • gh-89415: Добавьте константы socket для специфической для источника многоадресной рассылки. Исправление от Reese Hyde.

  • gh-103673: socketserver получает ForkingUnixStreamServer и ForkingUnixDatagramServer классы. Исправление от Джея Берри.

  • gh-103636: Добавлен Enum для месяцев и дней в модуле календаря.

  • gh-84976: Создайте новый файл Lib/_pydatetime.py, определяющий Python-версию модуля datetime, и заставьте datetime импортировать содержимое новой библиотеки только в случае отсутствия реализации на C. В настоящее время полная реализация Python определяется, а затем удаляется, если реализация C недоступна, что неоправданно замедляет работу import datetime.

  • gh-103596: Атрибуты/методы больше не затеняются одноименными членами перечисления, хотя они могут быть затенены свойствами перечисления.

  • gh-103584: Обновлено importlib.metadata с изменениями от importlib_metadata 5.2 по 6.5.0, включая: Поддержка installed-files.txt для Distribution.files при наличии. PackageMetadata теперь предусматривает дополнительный метод get, позволяющий легко запрашивать ключи метаданных, которые могут отсутствовать. packages_distributions теперь учитывает пакеты и модули с модулями Python, которые не являются источниками .py (например, .pyc, .so). Расширение протокола для PackageMetadata.get_all в соответствии с реализацией email.message.Message.get_all в python/typeshed#9620. Исправлено использование Distribution без определения абстрактных методов. Исправлено ожидание, что PackageMetadata.__getitem__ будет возвращать None для отсутствующих ключей. В будущем он будет вызывать KeyError.

  • gh-103578: Исправлена ошибка, при которой метод pdb падал при чтении исходного файла с другой кодировкой, путем замены io.open() на io.open_code(). Новый метод также будет вызывать хук, установленный PyFile_SetOpenCodeHook().

  • gh-103556: Теперь создание объектов inspect.Signature с позиционным параметром только по умолчанию, за которым следует позиционный параметр или ключевое слово без него, невозможно.

  • gh-103559: Обновите поставляемую в комплекте копию pip до версии 23.1.1.

  • gh-103548: Повышает производительность pathlib.Path.absolute() и cwd(), соединяя пути только при необходимости. Также улучшает производительность pathlib.PurePath.is_absolute() на Posix, пропуская разбор и нормализацию путей.

  • gh-103538: Удалите код модуля _tkinter, защищенный определением макроса TK_AQUA, который был необходим только для Tk 8.4.7 или более ранних версий и никогда не был определен ни одной системой сборки или документирован для ручного использования.

  • gh-103533: Обновите cProfile для использования API PEP 669

  • gh-103525: Исправлено недостоверное сообщение об исключении при передаче смешанных аргументов str и bytes в pathlib.PurePath и Path.

  • gh-103489: Добавьте getconfig() и setconfig() к Connection для внесения изменений в конфигурацию соединения с базой данных. Исправление Эрленда Э. Аасланда.

  • gh-103365: Установите границу флага по умолчанию на STRICT и исправьте побитовые операции.

  • gh-103472: Избегайте потенциальных ResourceWarning в http.client.HTTPConnection, явно закрывая ответ CONNECT прокси/туннеля.

  • gh-103462: Исправлена проблема с использованием writelines() в asyncio для отправки очень больших полезных нагрузок, превышающих объем данных, который может быть записан за один вызов socket.socket.send() или socket.socket.sendmsg(), в результате чего оставшийся буфер оставался незаписанным.

  • gh-103449: Исправление ошибки в генерации doc-строк в dataclasses.dataclass().

  • gh-103092: Изолировать _collections (применить PEP 687). Исправление Эрленда Э. Аасланда.

  • gh-103357: Добавлена поддержка параметра logging.Formatter defaults к параметрам logging.config.dictConfig() и logging.config.fileConfig(). Исправление от Bar Harel.

  • gh-103092: Адаптируйте модуль расширения winreg к PEP 687.

  • gh-74690: Производительность проверок isinstance() по отношению к runtime-checkable protocols была значительно улучшена для протоколов, состоящих всего из нескольких членов. Для достижения этого улучшения были отрефакторены некоторые детали внутренней реализации модуля typing, включая typing._ProtocolMeta.__instancecheck__, typing._is_callable_members_only и typing._get_protocol_attrs. Патчи от Алекса Уэйгуда.

  • gh-74690: Члены протокола, проверяемого во время выполнения, теперь считаются «замороженными» во время выполнения, как только класс был создан. Более подробную информацию см. в «What’s new in Python 3.12».

  • gh-103256: Исправлена ошибка, из-за которой hmac вызывал исключение, когда запрашиваемый хэш-алгоритм не был доступен в OpenSSL, хотя и был доступен отдельно в составе самого hashlib. Теперь он корректно возвращается к встроенному. Это может произойти, например, когда ваш OpenSSL не включает поддержку SHA3, а вы хотите вычислить hmac.digest(b'K', b'M', 'sha3_256').

  • gh-102778: Поддержите sys.last_exc в idlelib.

  • gh-103285: Улучшить производительность ast.get_source_segment().

  • gh-103225: Исправление ошибки в pdb при отображении номеров строк исходного кода на уровне модуля.

  • gh-103092: Адаптируйте модуль расширения msvcrt к PEP 687.

  • gh-103092: Адаптируйте модуль расширения winsound к PEP 687.

  • gh-93910: Устраните устаревание доступа к enum member.member.

  • gh-102978: Исправление того, что unittest.mock.patch() не выполнял сигнатуры функций для методов, оформленных с помощью @classmethod или @staticmethod, когда патч вызывается с помощью autospec=True.

  • gh-103092: Изолировать _socket (применить PEP 687). Исправление Эрленда Э. Аасланда.

  • gh-100479: Добавьте метод pathlib.PurePath.with_segments(), который создает объект пути из аргументов. Этот метод вызывается всякий раз, когда создается производный путь, например, из pathlib.PurePath.parent. Подклассы могут переопределять этот метод для обмена информацией между объектами пути.

  • gh-103220: Исправлена проблема, при которой os.path.join() добавлял косую черту при присоединении к неполному UNC-диску с косой чертой в конце на Windows.

  • gh-103204: Исправляет http.server, принимая HTTP-запросы с номерами версий, которым предшествуют „+“, „-“ или символы „_“, разделяющие цифры. Длина номеров версий также ограничена.

  • gh-75586: Исправление различных проблем, специфичных для Windows shutil.which.

  • gh-103193: Улучшение производительности inspect.getattr_static(). Исправление от Алекса Уэйгуда.

  • gh-103176: sys._current_exceptions() теперь возвращает отображение из thread-id в экземпляр исключения, а не в кортеж (typ, exc, tb).

  • gh-103143: Отполируйте справочные сообщения и документацию pdb.

  • gh-103015: Добавьте в sqlite3.Connection.load_extension() параметр entrypoint только с ключевым словом, чтобы переопределить точку входа расширения SQLite. Исправление Эрленда Э. Аасланда.

  • gh-103000: Улучшение производительности dataclasses.astuple() и dataclasses.asdict() в случаях, когда содержимое является обычными типами Python.

  • gh-102953: Методы извлечения из tarfile и shutil.unpack_archive() имеют новый аргумент фильтр, который позволяет ограничить возможности tar, которые могут быть неожиданными или опасными, например, создание файлов вне целевого каталога. Подробности см. в Фильтры для извлечения.

  • gh-97696: Реализовал фабрику задач с нетерпением в asyncio. При использовании в качестве фабрики задач в цикле событий она выполняет ускоренное выполнение корутинов. Корутины, которые могут завершиться синхронно (например, return или raise без блокировки), возвращаются сразу как завершенная задача, и задача никогда не планируется в цикл событий. Если корутина блокируется, то (ожидающая) задача планируется и возвращается.

  • gh-81079: Добавьте чувствительный к регистру аргумент только для ключевого слова в pathlib.Path.glob() и rglob().

  • gh-101819: Изолируйте модуль расширения io, применив PEP 687. Исправление Кумара Адитьи, Виктора Стиннера и Эрленда Э. Аасланда.

  • gh-91896: Утратить collections.abc.ByteString

  • gh-101362: Ускорьте построение pathlib.Path, исключив якорь пути из внутреннего списка частей пути.

  • gh-102114: Функции в модуле dis, принимающие в качестве аргумента строку исходного кода, теперь выводят более лаконичный трассировочный бэкграунд, если строка содержит синтаксическую ошибку или ошибку отступа.

  • gh-62432: Теперь бегун unittest будет завершать работу с кодом состояния 5, если не было запущено ни одного теста. Обычно при неправильной конфигурации тестового прогона не удается найти ни одного теста, это должно быть ошибкой.

  • gh-78079: Исправлена некорректная нормализация корней путей UNC устройств и частичных корней путей UNC ресурсов в pathlib.PurePath. Pathlib больше не добавляет к таким путям косую черту.

  • gh-85984: Добавьте tty.cfmakeraw() и tty.cfmakecbreak() к tty и модернизируйте поведение tty.setraw() и tty.setcbreak(), чтобы по умолчанию использовать маски флагов POSIX.1-2017 Глава 11 «Общий терминальный интерфейс».

  • gh-101688: Реализуйте types.get_original_bases(), чтобы обеспечить дальнейшую интроспекцию для типов.

  • gh-101640: argparse.ArgumentParser теперь отлавливает ошибки при написании сообщений, например, когда sys.stderr равно None. Исправление Олега Иарыгина.

  • gh-83861: Исправьте возвращаемое значение метода datetime.astimezone при вызове наивного экземпляра datetime, который представляет локальное время, попадающее в промежуток перехода часовых поясов. PEP 495 требует, чтобы в этом случае экземпляры с fold=1 выдавали более раннее время, чем экземпляры с fold=0.

  • gh-89550: Уменьшите время выполнения некоторых записей в файлы gzip на 15%, добавив более подходящую буферизацию.

  • gh-95299: Удалите поставляемое колесо setuptools из ensurepip и прекратите установку setuptools в окружениях, созданных venv.

  • gh-99353: Уважать флаг http.client.HTTPConnection .debuglevel флаг в urllib.request.AbstractHTTPHandler, если параметр конструктора debuglevel не установлен. И сделайте то же самое для *HTTPS*.

  • gh-98040: Удалите давно устаревший модуль imp.

  • gh-97850: Утратить pkgutil.find_loader() и pkgutil.get_loader() в пользу importlib.util.find_spec().

  • gh-94473: Уплощение аргументов в tkinter.Canvas.coords(). Теперь он принимает не только x1, y1, x2, y2, ... и [x1, y1, x2, y2, ...], но и (x1, y1), (x2, y2), ... и [(x1, y1), (x2, y2), ...].

  • gh-98040: Удалите больше устаревших API importlib: find_loader(), find_module(), importlib.abc.Finder, pkgutil.ImpImporter, pkgutil.ImpLoader.

  • gh-96522: Исправление потенциального тупика в pty.spawn()

  • gh-96534: Поддержка divert(4) добавлена в FreeBSD 14.

  • gh-87474: Исправление потенциальных утечек дескрипторов файлов в subprocess.Popen.

  • gh-94906: Поддержка нескольких шагов в math.nextafter(). Исправление от Shantanu Jain и Matthias Gorgens.

  • gh-51574: Заставьте tempfile.mkdtemp() возвращать абсолютные пути, когда его параметр dir является относительным.

  • gh-94518: Преобразовать частное _posixsubprocess.fork_exec() для использования Аргумент Клиника.

  • gh-92184: При создании zip-файлов с использованием zipfile, os.altsep, если не None, всегда будет рассматриваться как разделитель путей, даже если он не является /. Исправление от Carey Metcalfe.

  • bpo-46797: Предупреждения об устаревании теперь выдаются для ast.Num, ast.Bytes, ast.Str, ast.NameConstant и ast.Ellipsis. Они были задокументированы как устаревшие с Python 3.8 и будут удалены в Python 3.14.

  • bpo-44844: Включает webbrowser для обнаружения и запуска браузера Microsoft Edge.

  • bpo-45606: Исправлена ошибка в pathlib.Path.glob() – ранее висячая ссылка не находилась этим методом при точном совпадении шаблона, но находилась, если шаблон содержал подстановочный знак или рекурсивный подстановочный знак (**). С этим изменением висячая ссылка будет найдена в обоих случаях.

  • bpo-23041: Добавьте QUOTE_STRINGS и QUOTE_NOTNULL к набору стилей цитирования модуля csv.

  • bpo-24964: Добавлен http.client.HTTPConnection.get_proxy_response_headers(), предоставляющий доступ к HTTP-заголовкам в ответе прокси-сервера на запрос CONNECT.

  • bpo-17258: multiprocessing теперь поддерживает более сильные алгоритмы HMAC для аутентификации межпроцессных соединений, а не только HMAC-MD5.

  • bpo-39744: Заставьте asyncio.subprocess.Process.communicate() закрывать stdin подпроцесса, даже если он вызывается с помощью input=None.

  • bpo-22708: Улучшения туннельного метода http.client CONNECT: Использование протокола HTTP 1.1; отправка соответствующего заголовка Host: при CONNECT, если он не предоставлен; преобразование доменных имен IDN в Punycode. Исправление Майкла Хэндлера.

Документация

  • gh-67056: Документируйте, что эффект регистрации или снятия регистрации функции очистки atexit изнутри зарегистрированной функции очистки не определен.

  • gh-103629: Упомяните новый способ типизации **kwargs с помощью Unpack и TypedDict, представленный в PEP 692.

  • gh-48241: Уточнение документации о том, что параметр url в urllib.request.urlopen и urllib.request.Request должен быть правильно закодирован.

  • gh-86094: Добавлена поддержка дополнительного поля Unicode Path в ZipFile. Исправление от Yeojin Kim и Andrea Giudiceandrea

  • gh-99202: Исправьте тип расширения из документации для компиляции в режиме C++20

Тесты

  • gh-104494: Обновите test_pack_configure_in и test_place_configure_in для изменений в форматировании сообщений об ошибках в Tk 8.7.

  • gh-104461: Запускайте test_configure_screen только на X11, так как переменная окружения DISPLAY и опция -screen для toplevels не пригодятся в Tk для Win32 или Aqua.

  • gh-86275: Добавлены тесты на основе свойств к тестам zoneinfo, а также заглушки для интерфейса hypothesis. (Исправление от Paul Ganssle)

  • gh-103329: Добавлены регрессионные тесты для поведения unittest.mock.PropertyMock.

  • gh-102795: исправлено использование poll в test_epoll’s test_control_and_wait

  • gh-75729: Исправление ошибок в тестах os.spawn* под Windows, когда рабочий каталог или путь к интерпретатору содержит пробелы.

Построить

  • gh-101282: Оптимизация BOLT теперь применяется к общей библиотеке libpython при сборке общей библиотеки. Настройки инструментов и приложений BOLT теперь можно изменять с помощью переменных конфигурации BOLT_INSTRUMENT_FLAGS и BOLT_APPLY_FLAGS.

  • gh-99017: PYTHON_FOR_REGEN теперь требуют Python 3.10 или новее.

  • gh-104490: Определите .PHONY / Виртуальные цели выполняются последовательно и правильно.

  • gh-104106: Добавляет gcc fallback для mkfifoat/mknodat для macOS. Исправление от Donghee Na.

  • gh-103532: Макрос TKINTER_PROTECT_LOADTK больше не определяется и не используется в модуле _tkinter. Раньше он определялся только при сборке с Tk 8.4.13 и старше, но Tk старше 8.5.12 не поддерживается с gh-91152.

  • gh-99069: Расширение обходного пути, определяющего static_assert при отсутствии в заголовках libc, на все сборки clang и gcc. В частности, это исправляет сборку на macOS <= 10.10.

  • gh-100220: Изменено значение по умолчанию переменной SHELL Makefile переменной с /bin/sh на /bin/sh -e, чтобы обеспечить корректное завершение сложных рецептов после ошибки. Ранее переменная make install могла не устанавливать некоторые файлы и при этом возвращать успешный результат.

  • gh-90656: Добавьте платформенные триплеты для 64-битного LoongArch:

    • loongarch64-linux-gnusf

    • loongarch64-linux-gnuf32

    • loongarch64-linux-gnu

    Патч от Чжан На.

Windows

  • gh-104623: Обновление программы установки Windows для использования SQLite 3.42.0.

  • gh-82814: Исправление потенциальной [Errno 13] Permission denied при использовании shutil.copystat() в Windows Subsystem for Linux (WSL) на смонтированной файловой системе путем добавления errno.EACCES в список игнорируемых ошибок во внутренней реализации.

  • gh-103088: Исправьте скрипт виртуальной среды activate, имеющий неправильные окончания строк для Cygwin.

  • gh-103088: Исправляет неработающие venvs в bash под Windows на разных дисках

  • gh-102997: Обновление программы установки Windows для использования SQLite 3.41.2.

  • gh-88013: Исправлена ошибка, из-за которой в некоторых случаях при вызове ntpath.realpath() с параметром bytes возникала ошибка TypeError.

macOS

  • gh-99834: Обновление программы установки macOS до версии Tcl/Tk 8.6.13.

  • gh-104623: Обновление программы установки macOS до версии SQLite 3.42.0.

  • gh-103545: Добавьте os.PRIO_DARWIN_THREAD, os.PRIO_DARWIN_PROCESS, os.PRIO_DARWIN_BG и os.PRIO_DARWIN_NONUI. Их можно использовать вместе с os.setpriority, чтобы запустить процесс с более низким приоритетом и задействовать более эффективные ядра в системах Apple Silicon.

  • gh-104180: Поддержка чтения конфигурации SOCKS-прокси из системной конфигурации macOS. Исправление от Сэма Шотта.

  • gh-60436: обновите текстовое поле curses, чтобы оно дополнительно обрабатывало бэкспейс при нажатии клавиши curses.ascii.DEL.

  • gh-102997: Обновление программы установки macOS до версии SQLite 3.41.2.

IDLE

  • gh-104499: Исправление завершений для Tk Aqua 8.7 (в настоящее время пустой).

  • gh-104496: About печатает версии tcl и tk, если они отличаются (ожидается, что когда-нибудь).

  • gh-88496: Исправление зависания теста IDLE на macOS.

Инструменты/демоверсии

  • gh-104389: Аргумент Клиника Конвертеры C теперь принимают ключевое слово unused для обертывания параметра с помощью Py_UNUSED. Исправление Эрленда Э. Аасланда.

C API

  • gh-101291: Добавлен нестабильный API на языке C для извлечения значений «компактных» целых чисел: PyUnstable_Long_IsCompact() и PyUnstable_Long_CompactValue().

  • gh-104109: Мы добавили Py_NewInterpreterFromConfig() и PyInterpreterConfig в публичный C-API (но не в стабильный ABI, по крайней мере, пока). Новая функция может быть использована для создания нового интерпретатора с различными настройками. Функция была добавлена для поддержки PEP 684 (per-interpreter GIL).

  • gh-103968: PyType_FromSpec() и его варианты теперь позволяют создавать классы, чей метакласс переопределяет tp_new. При этом tp_new игнорируется. Это поведение устарело и будет запрещено в версии 3.14+. Новый PyType_FromMetaclass() уже запрещает это.

  • gh-103743: Добавьте функцию PyUnstable_Object_GC_NewWithExtraData(), которая может быть использована для выделения дополнительной памяти после объекта для данных, не управляемых Python.

  • gh-103295: Введены PyUnstable_WritePerfMapEntry(), PyUnstable_PerfMapState_Init() и PyUnstable_PerfMapState_Fini(). Они позволяют модулям расширения (в частности, JIT-компиляторам) писать в файлы perf-map потокобезопасным образом. Поддержка Python для профилировщика Linux perf также использует эти API для записи записей в файл perf-map.

  • gh-103509: Добавлен C API для расширения типов, чья компоновка памяти экземпляра непрозрачна: PyType_Spec.basicsize теперь может быть нулевым или отрицательным, PyObject_GetTypeData() может использоваться для получения данных, специфичных для подкласса, а Py_TPFLAGS_ITEMS_AT_END может использоваться для безопасного расширения объектов переменного размера. Подробности см. в разделе PEP 697.

  • gh-103091: Добавлена новая функция C-API для нетерпеливого присвоения метки версии объекту PyTypeObject: PyUnstable_Type_AssignVersionTag().

  • gh-101408: PyObject_GC_Resize должен вычислять размер предзаголовка, если это необходимо. Исправление от Donghee Na.

  • gh-98836: Добавлена поддержка большего количества вариантов форматирования (выравнивание по левому краю, восьмеричные числа, шестнадцатеричные числа в верхнем регистре, intmax_t, ptrdiff_t, wchar_t C-строки, переменная ширина и точность) в PyUnicode_FromFormat() и PyUnicode_FromFormatV().

  • gh-96803: Добавьте нестабильные функции C-API для получения объекта кода, lasti и номера строки из внутреннего _PyInterpreterFrame в ограниченном API. Этими функциями являются:

    • PyCodeObject * PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame)

    • int PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame)

    • int PyUnstable_InterpreterFrame_GetLine(struct _PyInterpreterFrame *frame)

Python 3.12.0 alpha 7

Дата выхода: 2023-04-04

Ядро и встроенные модули

  • gh-102192: Утратил силу _PyErr_ChainExceptions в пользу _PyErr_ChainExceptions1.

  • gh-89987: Сократите количество встроенных записей CACHE для BINARY_SUBSCR.

  • gh-102859: Удалены инструкции JUMP_IF_FALSE_OR_POP и JUMP_IF_TRUE_OR_POP.

  • gh-101975: Исправлено значение stacktop в записях трассировки, чтобы избежать повреждения при сборке мусора.

  • gh-102778: Добавьте sys.last_exc и отмените sys.last_type, sys.last_value и sys.last_traceback, которые содержат ту же информацию в устаревшей форме.

  • gh-100982: Замените все вхождения COMPARE_AND_BRANCH на COMPARE_OP.

  • gh-102701: Исправление переполнения при создании очень больших dict.

  • gh-102755: Добавьте PyErr_DisplayException(), который принимает только экземпляр исключения, чтобы заменить унаследованный PyErr_Display(), который принимает триплет (typ, exc, tb).

  • gh-102594: Добавьте примечание к исключению, возникающему в PyErr_SetObject при неудачной нормализации.

  • gh-90997: Сократите количество встроенных записей CACHE, используемых LOAD_GLOBAL.

  • gh-102491: Улучшение времени импорта platform за счет удаления разбора версии IronPython. Разбор версии IronPython был неработоспособен (см. https://github.com/IronLanguages/ironpython3/issues/1667).

  • gh-101291: Биты возмущения в первом поле (после заголовка) PyLongObject. * Биты 0 и 1: 1 - знак. Т.е. 0 для положительных чисел, 1 для нуля и 2 для отрицательных чисел. * Бит 2 зарезервирован (вероятно, для бессмертного бита) * Бит 3+ размер без знака.

    Это делает несколько операций немного более эффективными, а в будущем позволит использовать более компактное и быстрое 2s-комплементарное представление большинства интов.

  • gh-102397: Исправление segfault из-за состояния гонки при обработке сигналов во время сборки мусора. Исправление от Kumar Aditya.

  • gh-102406: Ошибки кодирования/декодирования codecs теперь получают информацию о контексте (какая операция и какие кодеки) в виде примечаний PEP 678, а не через цепочку новых экземпляров исключения.

  • gh-102281: Исправление потенциального разыменования nullptr и использования неинициализированной памяти в fileutils. Исправление от Макса Бахмана.

  • gh-102300: Повторное использование операндов с refcount, равным 1, в float-специализациях BINARY_OP.

  • gh-102213: Исправление падения производительности при обращении к атрибутам объекта с определенным __getattr__.

  • gh-102255: Улучшена поддержка сборки для Xbox. Патч от Макса Бахмана.

  • gh-102027: Исправьте обнаружение SSE2 и SSE3 во внутреннем модуле _blake2. Исправление от Макса Бахмана.

  • gh-101865: Утратить co_lnotab в объектах кода, запланировать его удаление в Python 3.14

  • bpo-1635741: Адаптируйте _pickle к PEP 687. Патч от Mohamed Koubaa и Erlend Aasland.

Библиотека

  • gh-103085: Pure python locale.getencoding() не будет предупреждать об устаревании.

  • gh-103068: Больше нельзя регистрировать условные точки останова в Pdb, которые поднимают SyntaxError. Исправление от Tian Gao.

  • gh-102549: Не игнорируйте исключения при создании типа-члена.

  • gh-103056: Убедитесь, что конечный _generate_next_value_ является staticmethod.

  • gh-103046: Правильное отображение метки текущей строки в dis, если show_caches равно False и lasti указывает на запись CACHE.

  • gh-102433: При проверке isinstance() на runtime-checkable protocols теперь используется inspect.getattr_static(), а не hasattr() для поиска наличия атрибутов. Это означает, что дескрипторы и методы __getattr__() больше не будут неожиданно оцениваться при проверке isinstance() на соответствие протоколам, проверяемым во время выполнения. Однако это также может означать, что некоторые объекты, которые раньше считались экземплярами протокола, проверяемого временем выполнения, больше не будут считаться экземплярами этого протокола на Python 3.12+, и наоборот. Большинство пользователей вряд ли пострадают от этого изменения. Автор исправления - Алекс Уэйгуд.

  • gh-103023: Больше нельзя регистрировать выражения для отображения в Pdb, которые поднимают SyntaxError. Исправление от Tian Gao.

  • gh-102947: Улучшение возврата трассировки при вызове dataclasses.fields() на не-датаклассе. Исправление от Алекса Уэйгуда

  • gh-102780: Менеджер контекста asyncio.Timeout теперь надежно работает даже при выполнении очистки из-за отмены задачи. Ранее в таких случаях он мог поднять CancelledError вместо TimeoutError.

  • gh-102871: Удалите поддержку устаревших браузеров из webbrowser. К удаленным браузерам относятся Grail, Mosaic, Netscape, Galeon, Skipstone, Iceape, Firebird и Firefox версий 35 и ниже.

  • gh-102839: Повышение производительности обработки аргументов math.log() за счет удаления клиники аргументов.

  • gh-102828: Добавьте аргумент onexc к shutil.rmtree(), который похож на onerror, но ожидает экземпляр исключения, а не кортеж exc_info. Утратить onerror.

  • gh-88965: типизация: Исправлена ошибка, связанная с подстановкой в пользовательские классы, общие для ParamSpec. Ранее, если ParamSpec подставлялся в список параметров, который сам содержал TypeVar, то TypeVar в списке параметров не мог быть впоследствии подставлен. Теперь это исправлено.

    Патч Никиты Соболева.

  • gh-76846: Исправлена проблема, из-за которой методы __new__() и __init__() подклассов pathlib.PurePath и Path не вызывались при некоторых обстоятельствах.

  • gh-78530: asyncio.wait() теперь принимает задания с генераторами, приносящими доход. Исправление Кумара Адитьи.

  • gh-102748: asyncio.iscoroutine() теперь возвращает False для генераторов, поскольку asyncio не поддерживает унаследованные генераторные корутины. Исправление Кумара Адитьи.

  • gh-102670: Оптимизированы fmean(), correlation(), covariance() и linear_regression() с использованием новой функции math.sumprod().

  • gh-102615: Типизация: Улучшите repr общих псевдонимов для классов, общих для ParamSpec. (Используйте квадратные скобки для представления списка параметров).

  • gh-100112: asyncio.Task.get_coro() теперь всегда возвращает coroutine при обертывании ожидаемого объекта. Исправление Кумара Адитьи.

  • gh-102578: Ускоряет установку или удаление изменяемых атрибутов для подклассов замороженных классов данных, не являющихся классами данных. В связи с реализацией __setattr__ и __delattr__ для замороженных классов данных, ранее эта задача имела временную сложность O(n). Теперь временная сложность составляет O(1).

  • gh-102519: Добавьте функции os.listdrives(), os.listvolumes() и os.listmounts() в Windows для перечисления дисков, томов и точек монтирования

  • gh-74468: Атрибут имени извлеченного tarfile файлового объекта теперь содержит имя самого файла, а не архива, в котором он находится. Исправление Олега Иарыгина.

  • gh-102378: Приватный метод-помощник inspect._signature_strip_non_python_syntax больше не будет удалять / из входной строки.

  • gh-79940: Добавьте inspect.getasyncgenstate() и inspect.getasyncgenlocals(). Исправление Томаса Креннваллнера.

  • gh-102103: Добавьте аргумент module к dataclasses.make_dataclass() и сделайте производимые им классы pickleable.

  • gh-102069: Исправьте генерацию дескрипторов __weakref__ для пользовательских классов данных.

  • gh-102038: Пропустите stat в site, если мы уже нашли pyvenv.cfg.

  • gh-98886: Исправление проблем при определении классов данных, содержащих поля со специфическими именами с подчеркиванием, которые явно не зарезервированы dataclasses.

  • gh-101673: Исправлена ошибка pdb, когда ll очищал изменения локальных переменных.

  • gh-101313: Добавлены аргументы -h и –help в CLI веб-браузера

  • gh-100372: ssl.SSLContext.load_verify_locations() больше не воспринимает некорректно некоторые случаи с данными в конце при разборе DER.

  • gh-89727: Исправьте ошибку рекурсии pathlib.Path.walk на глубоких деревьях каталогов, переписав ее с помощью итерации вместо рекурсии.

  • gh-100131: Добавлен необязательный аргумент ключевого слова delete для tempfile.TemporaryDirectory.

  • gh-48330: Добавлена опция командной строки --durations, показывающая N самых медленных тестовых случаев. Конструкторы unittest.TextTestRunner и unittest.TextTestResult принимают новый аргумент ключевого слова durations. Подклассы должны учитывать это или принимать **kwargs. Добавлены метод unittest.TestResult.addDuration() и атрибут unittest.TestResult.collectedDurations.

    (Предоставлено Джампаоло Родола)

  • gh-98169: Исправление сбоя dataclasses.astuple() при наличии collections.defaultdict в атрибутах.

  • gh-96931: Исправьте неверные результаты из ssl.SSLSocket.shared_ciphers()

  • gh-95495: При сборке на базе OpenSSL 3.0 модуль ssl имел ошибку, при которой он сообщал о неаутентифицированных EOF (т.е. без close_notify) как о чистых EOF на уровне TLS. Теперь он поднимает SSLEOFError, что соответствует поведению в предыдущих версиях OpenSSL. Атрибут options на SSLContext также больше не включает OP_IGNORE_UNEXPECTED_EOF по умолчанию. Этот параметр можно установить, чтобы указать прежнее поведение OpenSSL 3.0.

  • gh-94684: Теперь функции uuid.uuid3() и uuid.uuid5() поддерживают объекты bytes в качестве аргумента имя.

  • gh-94440: Исправлена ошибка concurrent.futures.process, из-за которой выключение ProcessPoolExecutor могло зависнуть после быстрой отправки и отмены будущего.

  • gh-72346: Добавлено предупреждение об устаревании для параметра isdst в email.utils.localtime().

  • bpo-36305: Исправлена работа с именами файлов Windows, похожими на имена дисков, например ./a:b, в pathlib.

Документация

Тесты

  • gh-102980: Улучшите покрытие тестов на pdb.

  • gh-102537: Настройте стратегию обработки ошибок в test_zoneinfo.TzPathTest.python_tzpath_context. Исправление от Paul Ganssle.

  • gh-101377: Улучшена функция test_locale_calendar_formatweekday календаря.

Построить

  • gh-102973: Добавьте контейнер dev (вместе с сопутствующим Dockerfile) для целей разработки.

  • gh-102711: Исправьте предупреждения компилятора -Wstrict-prototypes.

Windows

  • gh-102690: Обновите webbrowser, чтобы вернуться к Microsoft Edge вместо Internet Explorer.

  • gh-99726: Улучшает корректность результатов статистики для Windows и использует более быстрый API, если он доступен

Инструменты/демоверсии

  • gh-102809: Misc/gdbinit был удален.

C API

  • gh-102013: Добавьте новую (нестабильную) функцию C-API для итерации по объектам GC’able с использованием обратного вызова: PyUnstable_VisitObjects.

Python 3.12.0 alpha 6

Дата выхода: 2023-03-07

Безопасность

  • gh-99108: Замените встроенные реализации MD5 и SHA1 в хеш-либе проверенными из проекта HACL*.

  • gh-101727: Обновлена версия OpenSSL, используемая в бинарных сборках Windows и macOS, до 1.1.1t для решения проблем CVE-2023-0286, CVE-2022-4303 и CVE-2022-4303 в соответствии с the OpenSSL 2023-02-07 security advisory.

  • gh-99108: Замените встроенные hashlib реализации SHA2-384 и SHA2-512 из LibTomCrypt на формально проверенный, устойчивый к побочным каналам код из проекта HACL*. Встроенные функции остаются запасным вариантом, используемым только в тех случаях, когда OpenSSL их не предоставляет.

  • gh-101283: subprocess.Popen теперь использует более безопасный подход для поиска cmd.exe при запуске с shell=True. Патч от Eryk Sun, основанный на патче от Oleg Iarygin.

Ядро и встроенные модули

  • gh-102493: Исправьте регрессию в семантике нормализации в PyErr_SetObject.

  • gh-102416: Не мемоизировать неправильно сгенерированные автоматически правила циклов в парсере. Исправление от Пабло Галиндо.

  • gh-102356: Исправлена ошибка, приводившая к сбою при деаллокации глубоко вложенных объектов фильтра. Исправление от Marta Gómez Macías.

  • gh-102336: Очистка специальной обработки, специфичной для Windows 7. Исправление от Макса Бахмана.

  • gh-102250: Исправлен сегфолт, возникающий при вызове интерпретатором метода __bool__, который поднимает.

  • gh-102126: Исправление тупика при завершении работы при очистке состояний потоков, если какой-либо финализатор пытается получить головную блокировку времени выполнения. Исправление Кумара Адитьи.

  • gh-102027: Используйте GetCurrentProcessId в Windows, если getpid недоступен. Исправление от Макса Бахмана.

  • gh-102056: Исправлены ошибки в обработке ошибок в коде печати исключений интерпретатора, которые могли привести к краху при бесконечной рекурсии.

  • gh-100982: Ограничьте область действия инструкции FOR_ITER_RANGE областью действия исходной инструкции FOR_ITER, чтобы разрешить инструментарий.

  • gh-101967: Исправление возможного сегфайта в функции positional_only_passed_as_keyword при создании нового списка.

  • gh-101952: Исправление возможного сегфайта в опкоде BUILD_SET при создании нового набора.

  • gh-74895: socket.getaddrinfo больше не повышает OverflowError для int портов, выходящих за пределы длинного диапазона C. Значения, выходящие за пределы диапазона, остаются на усмотрение API библиотеки C, основанной на строках. A socket.gaierror SAI_SERVICE или вообще никакой ошибки, поскольку не все библиотеки платформы C генерируют ошибку.

  • gh-101799: Добавьте CALL_INTRINSIC_2 и используйте его вместо PREP_RERAISE_STAR.

  • gh-101857: Исправьте обнаружение поддержки xattr в системах Linux, расширив проверку на linux, а не только на glibc. Это исправляет поддержку musl.

  • gh-84783: Сделайте объект slice хэшируемым. Исправление Уилла Брэдшоу и Фуркана Ондера.

  • gh-87849: Измените инструкцию SEND, чтобы оставить приемник в стеке. Это позволяет специализированной форме SEND пропустить цепочку вызовов C и перейти непосредственно к RESUME в генераторе или корутине.

  • gh-101765: Исправление ошибки SystemError / segmentation fault в iter __reduce__, когда внутренний доступ к ключам builtins.__dict__ мутирует объект iter.

  • gh-101430: Обновите tracemalloc, чтобы правильно обрабатывать предварительный размер объекта. Исправление от Donghee Na.

  • gh-101696: Недействительный тег версии типа в _PyStaticType_Dealloc для статических типов, что позволяет избежать ошибки, при которой ложное попадание в кэш может привести к аварийному завершению работы интерпретатора. Исправление Кумара Адитьи.

  • gh-101632: Добавляет новую инструкцию RETURN_CONST.

  • gh-100719: Удалите поле gi_code из объектов генератора (а также coroutine и async-генератора), так как оно является избыточным. Фрейм уже содержит ссылку на объект кода.

  • gh-98627: Когда интерпретатор настроен на проверку (и только тогда), импорт модуля расширения теперь будет неудачным, если расширение не поддерживает несколько интерпретаторов (т. е. не реализует многофазный инит PEP 489). Это не относится ни к основному интерпретатору, ни к подинтерпретаторам, созданным с помощью Py_NewInterpreter().

Библиотека

  • gh-102302: Микрооптимизация хэширования inspect.Parameter, сокращающая время хэширования экземпляра примерно на 40 %.

  • gh-101979: Исправлена ошибка, при которой скобки в аргументе metavar для argparse.ArgumentParser.add_argument() опускались. Исправление от Yeojin Kim.

  • gh-91038: platform.platform() теперь имеет булевые аргументы по умолчанию.

  • gh-81652: Добавьте mmap.MAP_ALIGNED_SUPER FreeBSD и mmap.MAP_CONCEAL OpenBSD константы в mmap. Исправление от Yeojin Kim.

  • gh-102179: Исправьте сообщение об ошибке os.dup2() для отрицательных fds.

  • gh-101961: В двоичном режиме fileinput.hookcompressed() не устанавливает значение encoding, даже если оно равно None. Исправление от Gihwan Kim.

  • gh-101936: Значение по умолчанию fp становится io.BytesIO, если HTTPError инициализируется без обозначенного параметра fp. Патч от Long Vo.

  • gh-101566: В zip-файле синхронизируйте Path с zipp 3.14, включая исправление extractall на базовом zip-файле после обертывания в Path.

  • gh-97930: Примените изменения из importlib_resources 5.12, включая исправление для MultiplexedPath для поддержки каталогов в нескольких пространствах имен (python/importlib_resources#265).

  • gh-101997: Обновление колеса pip в комплекте с ensurepip (pip 23.0.1)

  • gh-99108: Встроенные модули расширения для hashlib SHA2-алгоритмов, используемые, когда OpenSSL их не предоставляет, теперь находятся в одном внутреннем модуле _sha2 вместо отдельных модулей _sha256 и _sha512.

  • gh-101892: Вызываемые итераторы больше не поднимают SystemError, когда вызываемый объект исчерпывает итератор, но забывает либо вернуть значение sentinel, либо поднять StopIteration.

  • gh-87634: Удалите поведение блокировки из functools.cached_property().

  • gh-97786: Исправление потенциально неопределенного поведения в угловых случаях преобразований с плавающей точкой во время.

  • gh-101517: Исправлена ошибка, при которой bdb просматривал исходную строку с linecache с помощью lineno=None, что приводило к ошибке с необработанным исключением.

  • gh-101773: Оптимизируйте fractions.Fraction для небольших компонентов. Частный аргумент _normalize конструктора fractions.Fraction был удален.

  • gh-101693: В sqlite3.Cursor.execute() теперь выдается DeprecationWarning, когда named placeholders используются вместе с параметрами, представленными в виде sequence, а не в виде dict. Начиная с Python 3.14, использование именованных плейсхолдеров с параметрами, переданными в виде последовательности, будет вызывать ошибку ProgrammingError. Исправление Эрленда Э. Аасланда.

  • gh-101446: Измените repr из collections.OrderedDict, чтобы использовать обычное форматирование словаря вместо пар ключей и значений.

  • gh-101362: Ускоряем построение pathlib.PurePath, обрабатывая аргументы более единообразно. При передаче аргумента pathlib.Path мы используем его строковое представление, а не соединяем его части с помощью os.path.join().

  • gh-101362: Ускорьте построение pathlib.PurePath, вызывая os.path.join() только при наличии двух или более аргументов.

  • gh-101362: Ускоряет построение pathlib.Path, выполняя проверку совместимости path flavour только при импорте pathlib.

  • gh-85984: Переработали реализацию pty.fork() для использования os.login_tty().

    Теперь DeprecationWarning вызывается pty.master_open() и pty.slave_open(). Они были недокументированы и давно устарели в docstring в пользу pty.openpty().

  • gh-101561: Добавьте новый декоратор typing.override(). Подробности см. в разделе PEP 698. Исправление Стивена Трокслера.

  • gh-63301: Установите код выхода, когда tabnanny CLI завершает работу при ошибке.

  • gh-101360: Исправлено сопоставление якорей в pathlib.PureWindowsPath.match(). Якоря путей и шаблонов теперь сопоставляются с fnmatch, как и другие части пути. Это позволяет сопоставлять такие шаблоны, как "*:/Users/*".

  • gh-101277: Удалите глобальное состояние из модуля itertools (PEP 687). Патчи Эрленда Э. Аасланда.

  • gh-100809: Исправлена обработка относительных к диску путей (например, „C:“ и „C:foo“) в pathlib.Path.absolute(). Теперь этот метод использует API ОС для получения правильного текущего рабочего каталога для диска.

  • gh-99138: Применить PEP 687 к zoneinfo. Исправление Эрленда Э. Аасланда.

  • gh-96764: asyncio.wait_for() теперь использует asyncio.timeout() в качестве базовой реализации. Исправление Кумара Адитьи.

  • gh-88233: Корректно сохранять «дополнительные» поля в zipfile независимо от их порядка относительно zip64 «extra».

  • bpo-23224: Исправление сегфайтов при создании объектов lzma.LZMADecompressor и bz2.BZ2Decompressor без вызова __init__(), а также исправление утечки блокировок и внутренних буферов при многократном вызове методов __init__() объектов lzma.LZMADecompressor, lzma.LZMACompressor, bz2.BZ2Compressor и bz2.BZ2Decompressor.

Документация

  • gh-85417: Обновите документацию cmath, чтобы уточнить поведение при разрезании ветвей.

  • gh-97725: Исправьте описание asyncio.Task.print_stack() для file=None. Патч от Олега Иарыгина.

Тесты

  • gh-102019: Исправление тупика при выключении, если test_current_{exception,frames} не работает. Исправление от Джейкоба Боуэра.

  • gh-85984: Использование новых функций «winsize» из termios в тестах pty.

  • gh-89792: test_tools теперь копирует в 10 раз меньше исходных данных во временный каталог во время теста freeze, игнорируя метаданные git и другие артефакты. Он также ограничивает параллелизм сборки python на основе os.cpu_count вместо жесткого кодирования в 8 ядер.

Построить

  • gh-99942: На Android в статической сборке python-config в режиме встраивания больше не сообщает неверно о библиотеке, с которой нужно ссылаться.

  • gh-99942: На Android, python.pc теперь корректно сообщает библиотеку, с которой нужно ссылаться, как и python-config.sh.

  • gh-100221: Исправлено создание директорий установки в make sharedinstall, если они уже существуют вне DESTDIR.

  • gh-96821: Явно пометьте модули расширения C, которым требуется определенное переполнение знаковых целых чисел, и добавьте опцию configure --with-strict-overflow. Исправление Матиаса Гёргенса и Шантану Джайна.

Windows

  • gh-102344: Реализуйте winreg.QueryValue с помощью QueryValueEx и winreg.SetValue с помощью SetValueEx. Патч от Макса Бахмана.

  • gh-101881: Правильно обрабатывайте операции чтения и записи на неблокирующих трубах в Windows.

  • gh-101881: Добавьте поддержку функций os.get_blocking() и os.set_blocking() в Windows.

  • gh-101849: Обеспечивает корректное обновление существующих установок py.exe пусковой установки.

  • gh-101763: Обновление копии libffi, поставляемой с установками Windows, до версии 3.4.4.

  • gh-101759: Обновление программы установки Windows до версии SQLite 3.40.1.

  • gh-101614: Корректная обработка расширений, созданных на основе отладочных двоичных файлов, которые ссылаются на python3_d.dll.

  • gh-101196: Функции os.path.isdir, os.path.isfile, os.path.islink и os.path.exists теперь на 13-28 % быстрее в Windows за счет меньшего количества вызовов Win32 API.

macOS

  • gh-101759: Обновление программы установки macOS до версии SQLite 3.40.1.

C API

  • gh-101907: Убирает использование нестандартного расширения C++ в публичных заголовочных файлах.

  • gh-99293: Документируйте, что тег Py_TPFLAGS_VALID_VERSION_TAG является внутренней функцией, не должен использоваться и будет удален.

  • gh-101578: Добавьте PyErr_GetRaisedException() и PyErr_SetRaisedException() для сохранения и восстановления текущего исключения. Эти функции возвращают и принимают один объект исключения, а не тройной аргумент в уже устаревших PyErr_Fetch() и PyErr_Restore(). Это меньше подвержено ошибкам и немного эффективнее.

    Добавьте PyException_GetArgs() и PyException_SetArgs() в качестве удобных функций для получения и изменения args, переданного конструктору исключения.

  • gh-91744: Введен уровень Unstable C API, обозначающий APi, который разрешено изменять в минорных выпусках без периода амортизации. Подробности см. в PEP 689.

Python 3.12.0 alpha 5

Дата выхода: 2023-02-07

Безопасность

  • gh-99108: Замените встроенные hashlib реализации SHA2-224 и SHA2-256 из LibTomCrypt на формально проверенный, устойчивый к побочным каналам код из проекта HACL*. Встроенные функции остаются запасным вариантом, используемым только в тех случаях, когда OpenSSL их не предоставляет.

Ядро и встроенные модули

  • gh-92173: Исправление аргументов defs и kwdefs в PyEval_EvalCodeEx() и утечка ссылок в этой функции.

  • gh-59956: API GILState теперь частично совместим с субинтерпретаторами. Ранее PyThreadState_GET() и PyGILState_GetThisThreadState() рассинхронизировались, что приводило к непоследовательному поведению и сбоям.

  • gh-101400: Исправление неправильного lineno в сообщении об исключении для continue или break, которые не находятся в цикле. Исправление от Donghee Na.

  • gh-101372: Исправьте is_normalized(), чтобы правильно обрабатывать случаи UCD 3.2.0. Исправление от Donghee Na.

  • gh-101266: Исправьте отчетность sys.getsizeof() для подклассов int.

  • gh-101291: Рефакторинг PyLongObject struct в обычный заголовок объекта Python и PyLongValue struct.

  • gh-101046: Исправление возможной утечки памяти в парсере при повышении MemoryError. Исправление от Пабло Галиндо

  • gh-101037: Исправлена потенциальная проблема неполного распределения памяти для экземпляров подклассов int с нулевым значением.

  • gh-100762: Запишите глубину блока (виртуального) исключения в oparg YIELD_VALUE. Используйте это, чтобы избежать дорогостоящего throw() при закрытии генераторов (и корутинов), которые могут быть закрыты тривиально.

  • gh-100982: Добавляет новую инструкцию COMPARE_AND_BRANCH. Это немного эффективнее при выполнении сравнения, за которым сразу следует ветвление, и восстанавливает замысел PEP 659 о том, что специализации локальны для одной инструкции.

  • gh-100942: Исправлена ошибка в property.getter/setter/deleter, возникавшая, когда подкласс свойства переопределял метод __new__ для возврата экземпляра, не являющегося свойством.

  • gh-100923: Удалите запись в кэше mask для инструкции COMPARE_OP и вставьте маску в oparg.

  • gh-100892: Исправление гонки при итерации по состояниям потоков в очистке threading.local. Исправление Кумара Адитьи.

  • gh-91351: Исправление ситуации, когда реентерабельный импорт мог повредить код обнаружения тупиковых ситуаций при импорте и привести к поднятию KeyError из importlib/_bootstrap. Помимо простых случаев, это также может происходить, когда сборка мусора приводит к выдаче предупреждения - как это происходит при сборе открытого сокета или файла)

  • gh-100726: Оптимизируйте построение объекта range для целых чисел среднего размера.

  • gh-100712: Добавлена возможность собирать cpython с отключенной специализацией, установив ENABLE_SPECIALIZATION=False в opcode, а затем make regen-all.

  • bpo-32780: В строки формата PEP3118, получаемые из объектов ctypes.Structure, теперь вставляются межполевые прокладки, отражающие их истинное представление в памяти.

Библиотека

  • gh-101541: [Enum] - исправить создание псевдо-флага

  • gh-101570: Обновление колеса pip в комплекте с ensurepip (pip 23.0)

  • gh-101323: Исправлена ошибка, из-за которой zlib._ZlibDecompressor не выбрасывал ошибки, если они возникали при распаковке.

  • gh-101317: Добавьте параметр ssl_shutdown_timeout для asyncio.StreamWriter.start_tls().

  • gh-101326: Исправление регрессии при передаче None в качестве второго или третьего аргумента в FutureIter.throw.

  • gh-92123: Адаптация модуля расширения _elementtree к многофазному init (PEP 489). Патчи от Эрленда Э. Аасланда.

  • gh-100795: Избежать потенциального неожиданного вызова freeaddrinfo (double free) в socket, когда реализация libc getaddrinfo() оставляет мусор в выходном указателе при возврате ошибки. Автор оригинального патча - Сергей Г. Брестер.

  • gh-101143: Удалите неиспользуемые ссылки на TimerHandle в asyncio.base_events.BaseEventLoop._add_callback.

  • gh-101144: Сделайте так, чтобы zipfile.Path.open() и zipfile.Path.read_text() также принимали encoding в качестве позиционного аргумента. Такое поведение было в Python 3.9 и более ранних версиях. В версии 3.10 появилась регрессия, когда добавление encoding в качестве позиционного аргумента приводило к появлению TypeError.

  • gh-94518: Переименованы связанные с группами переменные модуля _posixsubprocess, чтобы подчеркнуть, что дополнительное групповое сродство добавляется к форку, а не заменяет унаследованное. Исправление Олега Иарыгина.

  • gh-101015: Закрепите typing.get_type_hints() на '*tuple[...]' и *tuple[...]. Он не должен опускать часть Unpack.

  • gh-101000: Добавьте os.path.splitroot(), которая разбивает путь на кортеж из трех элементов (drive, root, tail). Эта новая функция используется pathlib для повышения производительности построения путей на треть.

  • gh-100573: Исправлена ошибка Windows asyncio с именованными трубами, когда клиент, выполняющий os.stat() на трубе, вызывал ошибку на сервере, которая не позволяла обслуживать последующие запросы.

  • gh-39615: warnings.warn() теперь имеет возможность пропускать кадры стека на основе префикса имени файла кода, а не только числового stacklevel с помощью нового аргумента skip_file_prefixes в ключевом слове.

  • gh-100750: передать кодировку kwarg подпроцессу в платформе

  • gh-100160: Выдавать предупреждение об устаревании в asyncio.DefaultEventLoopPolicy.get_event_loop(), если нет текущего набора циклов событий, и он решает создать его.

  • gh-96290: Исправлена обработка частичных и недействительных UNC-дисков в ntpath.splitdrive() и в ntpath.normpath() на не-Windows системах. Такие пути, как „\server“ и „\“, теперь рассматриваются splitdrive() как содержащие только диск и, следовательно, не изменяются normpath() на системах, отличных от Windows. Поведение normpath() на Windows-системах не затрагивается, так как используются собственные API ОС. Исправление сделано Эриком Суном при участии Барни Гейла.

  • gh-99952: Исправление проблемы недосчета ссылок в ctypes.Structure с результатами from_param(), превышающими указатель C.

  • gh-67790: Добавьте поддержку форматирования в стиле float для экземпляров fractions.Fraction.

  • gh-99266: Сохраняйте более подробные сообщения об ошибках в ctypes.

  • gh-86682: Убедитесь, что создаваемые во время выполнения коллекции имеют правильное имя модуля, используя недавно добавленный (внутренний) sys._getframemodulename().

  • gh-88597: uuid теперь имеет интерфейс командной строки. Попробуйте python -m uuid -h.

  • gh-60580: Определение ctypes.wintypes.BYTE изменено с c_byte на c_ubyte, чтобы соответствовать Windows SDK. Патч от Анатолия Техтоника и Олега Иарыгина.

  • gh-94518: _posixsubprocess теперь инициализирует все переменные UID и GID, используя зарезервированное значение -1 вместо отдельного флага. Исправление Олега Иарыгина.

  • bpo-38941: Модуль xml.etree.ElementTree теперь выдает DeprecationWarning при проверке истинностного значения xml.etree.ElementTree.Element. Раньше реализация на Python выдавала FutureWarning, а реализация на C - ничего.

  • bpo-40077: Преобразование типов elementtree в типы кучи. Исправление Эрленда Э. Аасланда.

  • bpo-29847: Исправлена ошибка, при которой pathlib.Path принимал и игнорировал аргументы ключевых слов. Исправление предоставлено Юрием Карабасом.

  • gh-77772: ctypes.CDLL, ctypes.OleDLL, ctypes.WinDLL и ctypes.PyDLL теперь принимают path-like objects в качестве аргумента name. Заплатка от Роберта Хоэльцля.

Документация

  • gh-88324: Переформулируйте subprocess, чтобы подчеркнуть поведение по умолчанию аргументов stdin, stdout и stderr. Убрать неточное утверждение о наследовании дескрипторов дочерних файлов.

Тесты

  • gh-101334: test_tarfile был обновлен для прохождения при выполнении в качестве высокого UID.

Построить

  • gh-101282: Обновите конфигурацию BOLT, чтобы не использовать устаревшее использование --split functions. Исправление от Donghee Na.

  • gh-101522: Позволяет переопределять версии и пути к зависимостям Windows с помощью свойств MSBuild.

  • gh-77532: Незначительные исправления, позволяющие строить с PlatformToolset=ClangCL под Windows.

  • gh-101152: В соответствии с PEP 699, поле ma_version_tag в PyDictObject является устаревшим для модулей расширения. Обращение к этому полю будет генерировать предупреждение компилятора во время компиляции. Это поле будет удалено в Python 3.14.

  • gh-100340: Разрешает -Wno-int-конверсию для wasm-sdk 17 и выше, что позволяет собирать сборки WASI один раз против последнего sdk.

  • gh-101060: Условно добавьте -fno-reorder-blocks-and-partition в configure. Эффективно исправляет --enable-bolt при использовании Clang, так как это, похоже, флаг только для GCC.

  • gh-98705: __bool__ определен в системных заголовочных файлах AIX, что нарушает сборку в AIX, поэтому отмените его определение.

  • gh-98636: Исправлена регрессия в обнаружении библиотеки gdbm_compat для сборки модуля _gdbm.

  • gh-96305: _aix_support теперь использует простой код для получения данных о платформе, а не несуществующий теперь _bootsubprocess во время загрузки.

Windows

  • gh-101543: Убедитесь, что путь установки в реестре используется только в том случае, если стандартная библиотека не была расположена каким-либо другим способом.

  • gh-101467: Программа запуска py.exe теперь корректно фильтрует, когда установлена только одна среда выполнения. Он также корректно обрабатывает префиксные совпадения тегов, так что -3.1 не совпадает с 3.11, но все равно будет совпадать с 3.1-32.

  • gh-99834: Обновление поставляемой копии Tcl/Tk до версии 8.6.13.0

  • gh-101135: Восстановление возможности запуска старых 32-битных версий из пусковой установки py.exe, когда доступны 32-битная и 64-битная установки одной и той же версии.

  • gh-82052: Исправлена проблема, при которой запись более 32 К Юникода на экран консоли за один раз могла привести к появлению mojibake.

  • gh-100320: Обеспечивает использование ключа реестра PythonPath из установки при запуске из другой копии Python, которая полагается на существующую установку для предоставления копии своих модулей и стандартной библиотеки.

  • gh-100247: Восстанавливает поддержку py.exe для пусковой установки, находящей команды shebang в своем конфигурационном файле с использованием полного имени команды.

Python 3.12.0 alpha 4

Дата выхода: 2023-01-10

Ядро и встроенные модули

  • gh-100776: Исправьте вводящее в заблуждение значение по умолчанию в input() в __text_signature__.

  • gh-99005: Удалите UNARY_POSITIVE, ASYNC_GEN_WRAP и LIST_TO_TUPLE, заменив их интринсиками.

  • gh-99005: Добавьте новую инструкцию CALL_INTRINSIC_1. Удалите IMPORT_STAR, PRINT_EXPR и STOPITERATION_ERROR, заменив их инструкцией CALL_INTRINSIC_1.

  • gh-100288: Удалите специализированную инструкцию LOAD_ATTR_METHOD_WITH_DICT. Статистика показывает, что она не является полезной.

  • gh-100720: Добавлена функция _PyFrame_NumSlotsForCodeObject, которая возвращает количество слотов, необходимых в кадре для данного объекта кода.

  • gh-100719: Удалено поле co_nplaincellvars из объекта кода, так как оно является избыточным.

  • gh-100637: Исправьте вычисление int.__sizeof__(), чтобы оно включало 1-элементный массив ob_digit для 0 и False.

  • gh-100649: Обновление поля native_thread_id в PyThreadState после форка.

  • gh-100126: Исправление проблемы, при которой «неполные» кадры могли быть кратковременно видны коду на языке C во время разрушения других кадров, что могло привести к повреждению или жесткому аварийному завершению интерпретатора при выполнении финализаторов.

  • gh-87447: Исправление SyntaxError при проверке перепривязки понимания с именами, которые на самом деле не переопределены.

    Теперь переназначение b в [(b := 1) for a, b.prop in some_iter] разрешено. Переназначение a по-прежнему запрещено в соответствии с PEP 572.

  • gh-100268: Добавьте int.is_integer(), чтобы улучшить совместимость типов уток между int и float.

  • gh-100425: Повышение точности sum() с помощью компенсированного суммирования.

  • gh-100374: Исправление неправильного результата и задержки в socket.getfqdn(). Исправление от Доминика Сокулара.

  • gh-100357: Преобразовать vars, dir, next, getattr и iter в аргумент клиника.

  • gh-100117: Улучшает вывод codeobject.co_lines(), выдавая только одну запись для каждого диапазона строк.

  • gh-90043: Обработка NaN при специализации COMPARE_OP для значений float.

  • gh-100222: Переопределите типовое определение _Py_CODEUNIT как объединение, чтобы описать его расположение для компилятора C, избегая каламбура типов и улучшая ясность.

  • gh-99955: Внутренние функции компилятора (в compile.c) теперь последовательно возвращают -1 при ошибке и 0 при успехе.

  • gh-100188: Инструкции BINARY_SUBSCR_LIST_INT и BINARY_SUBSCR_TUPLE_INT больше не используются для отрицательных целых чисел, поскольку эти инструкции всегда промахиваются при встрече с отрицательными целыми числами.

  • gh-99110: Инициализируйте frame->previous в файле frameobject.c, чтобы исправить ошибку сегментации при обращении к кадрам, созданным PyFrame_New().

  • gh-94155: Улучшен алгоритм хэширования для объектов кода, что позволило уменьшить некоторые коллизии хэшей.

  • gh-99540: None теперь хэшируется до постоянного значения. Это не является изменением требований.

  • gh-100143: При сборке с флагом --enable-pystats сбор статистики по умолчанию отключен. Чтобы включить его при раннем запуске, передайте флаг -Xpystats. Статы теперь всегда сбрасываются, даже если они выключены.

  • gh-100146: Усовершенствуйте опкод BUILD_LIST, чтобы он работал аналогично опкоду BUILD_TUPLE, похищая ссылки из стека, а не используя многократные операции со стеком для установки элементов списка. Подробности реализации - в новом частном API _PyList_FromArraySteal().

  • gh-100110: Специализируйте FOR_ITER для кортежей.

  • gh-100050: Исправление существующих ошибок, возникающих при поиске несовпадающих скобок в токенизаторе. Исправление от Пабло Галиндо

  • gh-92216: Улучшение работы hasattr() для объектов типа с отсутствующим атрибутом.

  • gh-99582: Заморозьте модуль zipimport в _bootstrap_python.

  • gh-99554: Более эффективная упаковка отладочных таблиц местоположения во время компиляции байткода.

  • gh-98522: Добавляет внутренний номер версии к объектам кода, чтобы обеспечить лучшую версионность внутренних функций и пониманий, а значит, и лучшую специализацию этих функций. Это изменение незаметно для расширений как Python, так и C.

  • gh-94603: Улучшение производительности list.pop для небольших списков.

  • gh-89051: Добавить ssl.OP_LEGACY_SERVER_CONNECT

  • bpo-32782: Массивы ctypes длины 0 теперь сообщают правильный размер элементов при построении из них массива memoryview, а не всегда выдают значение 0.

Библиотека

  • gh-100833: Ускорьте math.fsum(), удалив защитные квалификаторы volatile.

  • gh-100805: Измените реализацию random.choice(), чтобы она снова работала с массивами NumPy.

  • gh-100813: Добавить константу socket.IP_PKTINFO.

  • gh-100792: Сделайте email.message.Message.__contains__() в два раза быстрее.

  • gh-91851: Микрооптимизации для fractions.Fraction.__round__(), fractions.Fraction.__ceil__() и fractions.Fraction.__floor__().

  • gh-90104: Избегайте ошибки RecursionError на repr, если определение поля класса данных имеет циклическую ссылку.

  • gh-100689: Исправление сбоя в pyexpat путем статического выделения капсулы PyExpat_CAPI.

  • gh-100740: Исправление unittest.mock.Mock, не соблюдающего спецификацию для имен атрибутов с префиксом assert.

  • gh-91219: Измените SimpleHTTPRequestHandler для поддержки подклассификации, чтобы обеспечить другой набор имен индексных файлов вместо использования параметров __init__.

  • gh-100690: Mock небезопасные объекты теперь будут вызывать ошибку AttributeError при обращении к атрибуту, совпадающему с именем утверждения, но без префикса assert_, например, при обращении к called_once вместо assert_called_once. Это дополнение к тому, что уже происходит при обращении к атрибутам с префиксами assert, assret, asert, aseert и assrt.

  • gh-89727: Упростите и оптимизируйте os.walk(), используя проверки isinstance() для проверки вершины стека.

  • gh-100485: Добавьте math.sumprod() для вычисления суммы произведений.

  • gh-86508: Исправьте asyncio.open_connection(), чтобы пропустить привязку к локальным адресам разных семейств. Исправление Кумара Адитьи.

  • gh-97930: importlib.resources.files теперь принимает модуль в качестве якоря вместо того, чтобы принимать только пакеты. Если передан модуль, то ресурсы разрешаются рядом с этим модулем (в том же пакете или в корне пакета). Параметр был переименован из package в anchor с сохранением совместимости для тех, кто передает по ключевому слову. Кроме того, новый параметр anchor теперь необязателен и по умолчанию будет соответствовать модулю вызывающей стороны.

  • gh-100585: Исправлена ошибка, при которой importlib.resources.as_file оставлял открытыми указатели на файлы

  • gh-100562: Повышение производительности pathlib.Path.absolute() почти в 2 раза. Это достигается за счет снижения производительности pathlib.Path.cwd(), который, как правило, реже используется в пользовательском коде.

  • gh-100519: Небольшое упрощение http.cookiejar.eff_request_host(), улучшающее читабельность и лучше соответствующее формулировке RFC.

  • gh-100287: Исправьте взаимодействие unittest.mock.seal() с unittest.mock.AsyncMock.

  • gh-100488: Добавьте Fraction.is_integer(), чтобы проверить, является ли fractions.Fraction целым числом. Это улучшает совместимость утиных типов с float и int.

  • gh-100474: http.server теперь проверяет, является ли индексная страница обычным файлом, прежде чем попытаться ее обслужить. Это позволяет избежать проблем с каталогами с именем index.html.

  • gh-100363: Ускорьте asyncio.get_running_loop(), удалив лишние проверки getpid. Исправление Кумара Адитьи.

  • gh-78878: Исправление сбоя при создании экземпляра _ctypes.CField.

  • gh-100348: Исправьте цикл ref в asyncio._SelectorSocketTransport, удалив _read_ready_cb в close.

  • gh-100344: Обеспечьте реализацию asyncio.current_task() на языке C для ускорения в 4-6 раз.

  • gh-100272: Исправьте JSON-сериализацию OrderedDict. Теперь она сохраняет порядок ключей.

  • gh-83076: Инстанцирование Mock() и AsyncMock() теперь происходит в 3,8 раза быстрее.

  • gh-100234: Установите значение по умолчанию 1,0 для параметра lambd в random.expovariate().

  • gh-100228: При вызове os.fork() или os.forkpty() из многопоточных процессов может возникнуть ошибка DeprecationWarning. Форкинг из потоков небезопасен и может привести к тупикам, сбоям и другим проблемам. Отсутствие предупреждения не означает, что вызов форка был действительно безопасным, так как Python может не знать обо всех потоках.

  • gh-100039: Улучшение подписей для перечислений и флагов.

  • gh-100133: Исправление регрессии в asyncio, когда подпроцесс иногда терял данные, полученные из трубы.

  • bpo-44592: Исправлена непоследовательная обработка чувствительности к регистру аргумента extrasaction в csv.DictWriter.

  • gh-100098: Исправьте приведение подклассов tuple к tuple при использовании их в качестве значений перечисления.

  • gh-85432: Переименуйте параметр fmt чистой реализации datetime.time.strftime() на format. Переименуйте параметр t из datetime.datetime.fromtimestamp() в timestamp. Эти изменения означают, что имена параметров в чистой реализации на Python теперь совпадают с именами параметров в реализации на C. Исправление Алекса Уэйгуда.

  • gh-98778: Обновление HTTPError для правильной инициализации, даже если fp - это None. Исправление от Donghee Na.

  • gh-99925: Унифицируйте сообщения об ошибках при сериализации JSON между json.dumps(float('nan'), allow_nan=False) и json.dumps(float('nan'), allow_nan=False, indent=<SOMETHING>). Теперь оба сообщения включают представление значения, которое не удалось сериализовать.

  • gh-89727: Исправление проблемы с os.walk(), когда RecursionError возникал в глубоких структурах каталогов, путем корректировки реализации os.walk(), чтобы она была итеративной, а не рекурсивной.

  • gh-94943: Добавьте Поддержка классов данных к Enum __repr__(). При наследовании от dataclass отображайте только имена полей в секции значений члена repr(), а не имя класса класса данных.

  • gh-83035: Исправьте inspect.getsource() обработку вызовов декораторов с вложенными круглыми скобками.

  • gh-99576: Исправьте метод .save() для LWPCookieJar и MozillaCookieJar: сохраненный файл не усекался при повторном сохранении.

  • gh-94912: Добавьте декоратор inspect.markcoroutinefunction(), который вручную помечает функцию как coroutine для пользы iscoroutinefunction().

  • gh-99509: Добавьте поддержку PEP 585 для multiprocessing.queues.Queue.

  • gh-99482: Удалите код частичной совместимости Jython из нескольких модулей stdlib.

  • gh-99433: Исправьте ошибку doctest на types.MethodWrapperType в модулях.

  • gh-85267: Несколько улучшений в работе inspect.signature() с __text_signature. - Исправлен случай, когда inspect.signature() отбрасывал параметры - Исправлен случай, когда inspect.signature() поднимал tokenize.TokenError. - Позволяет inspect.signature() понимать значения по умолчанию, включающие двоичные операции над константами - inspect.signature() документирован как вызывающий только TypeError или ValueError, но иногда вызывал RuntimeError. Теперь в этих случаях вызывается ValueError. - Удален путь к мертвому коду

  • gh-91166: asyncio оптимизировано, чтобы избежать чрезмерного копирования при записи в сокет, и используйте sendmsg(), если платформа его поддерживает. Исправление Кумара Адитьи.

  • gh-98030: Добавьте недостающие параметры TCP-сокета из Linux: TCP_MD5SIG, TCP_THIN_LINEAR_TIMEOUTS, TCP_THIN_DUPACK, TCP_REPAIR, TCP_REPAIR_QUEUE, TCP_QUEUE_SEQ, TCP_REPAIR_OPTIONS, TCP_TIMESTAMP, TCP_CC_INFO, TCP_SAVE_SYN, TCP_SAVED_SYN, TCP_REPAIR_WINDOW, TCP_FASTOPEN_CONNECT, TCP_ULP, TCP_MD5SIG_EXT, TCP_FASTOPEN_KEY, TCP_FASTOPEN_NO_COOKIE, TCP_ZEROCOPY_RECEIVE, TCP_INQ, TCP_TX_DELAY.

  • gh-88500: Уменьшено использование памяти urllib.parse.unquote() и urllib.parse.unquote_to_bytes() при больших значениях.

  • gh-96127: inspect.signature поднимал TypeError при вызове с mock-объектами. Теперь он корректно возвращает (*args, **kwargs) в качестве выведенной сигнатуры.

  • gh-95882: Исправлена регрессия 3.11 в asynccontextmanager(), из-за которой распространялись исключения с неправильной трассировкой, и исправлена регрессия 3.11 в contextmanager(), из-за которой распространялись исключения с неправильной трассировкой для StopIteration.

  • gh-78707: Откажитесь от передачи более одного позиционного аргумента в pathlib.PurePath.relative_to() и is_relative_to().

  • gh-92122: Исправление синтаксических ошибок reStructuredText в документах в модуле enum.

  • gh-91851: Оптимизируйте арифметику Fraction для маленьких компонентов.

  • bpo-24132: Сделайте pathlib.PurePath и Path подклассами (для начала частными). Ранее попытка инстанцировать подкласс приводила к возникновению AttributeError. Исправление Барни Гейла.

  • bpo-40447: Принимайте os.PathLike (например, pathlib.Path) в аргументах stripdir в compileall.compile_file() и compileall.compile_dir().

  • bpo-36880: Исправление проблемы подсчета ссылок, когда обратный вызов ctypes с типом возврата py_object возвращал None, что могло привести к сбоям.

Документация

  • gh-100616: Документируйте существующий параметр attr для функции curses.window.vline() в curses.

  • gh-100472: Убрать утверждение в документации, что параметры stripdir, prependdir и limit_sl_dest для compileall.compile_dir() и compileall.compile_file() могут быть bytes.

  • bpo-25377: Уточните использование восьмеричного формата аргумента mode в help(os.chmod), а также help(os.fchmod)

Тесты

  • gh-100454: Начните выполнять SSL-тесты с OpenSSL 3.1.0-beta1.

  • gh-100086: Бегунок для тестирования Python (libregrtest) теперь регистрирует информацию о сборке Python, такую как «debug» vs «release» сборка, или оптимизация LTO и PGO. Исправление Виктора Стиннера.

  • gh-93018: Сделайте два теста щадящими по отношению к хост-системе libexpat с примененными исправлениями безопасности.

Построить

  • gh-100540: Удалена опция --with-system-ffi configure; теперь libffi должна всегда предоставляться системой на всех платформах, отличных от Windows. Эта опция не имела никакого эффекта на платформах, отличных от Darwin, в течение нескольких выпусков, а в 3.11 имела лишь неочевидный эффект вызова pkg-config для поиска libffi и никогда не устанавливала -DUSING_APPLE_OS_LIBFFI. Теперь на платформах Darwin configure будет сначала проверять наличие ОС libffi, а затем возвращаться к той же обработке, что и на других платформах, если она не будет найдена.

  • gh-88267: Избегайте экспорта символов Python в связанных приложениях Windows, если ядро собрано как статическое.

  • bpo-41916: Разрешить переопределение ac_cv_cxx_thread, чтобы кросс-компилируемый python мог установить -pthread для CXX.

Windows

  • gh-100180: Обновление программы установки Windows до OpenSSL 1.1.1s

  • gh-99191: Используйте _MSVC_LANG >= 202002L вместо менее точного _MSC_VER >=1929 для более точной проверки поддержки C++20 в PC/_wmimodule.cpp.

  • gh-79218: Определите MS_WIN64 для Mingw-w64 64bit, исправьте ошибку компиляции cython.

  • gh-99941: Убедитесь, что asyncio.Protocol.data_received() получает неизменяемый объект bytes (как указано в документации), а не bytearray.

  • bpo-43984: winreg.SetValueEx() теперь оставляет целевое значение нетронутым в случае ошибок преобразования. Ранее в случае таких ошибок записывалось -1.

  • bpo-34816: hasattr(ctypes.windll, 'nonexistant') теперь возвращает False, а не поднимает OSError.

macOS

  • gh-100180: Обновление программы установки macOS до OpenSSL 1.1.1s

  • gh-100540: Удален устаревший шим dlfcn.h из модуля расширения _ctypes, который не нужен с Mac OS X 10.2.

Инструменты/демоверсии

  • bpo-45256: Исправлена ошибка, из-за которой в python-gdb.py возникала ошибка AttributeError, когда py-locals использовался без фрейма.

  • gh-100342: Добавьте недостающую проверку NULL на возможный сбой выделения при разборе *args в Argument Clinic.

C API

  • gh-99947: Возбуждение SystemError при импорте теперь будет иметь причиной исходное неожиданное исключение.

  • gh-99240: При разборе аргумента, после деаллокации вновь выделенной памяти, сбрасывайте ее указатель на NULL.

  • gh-98724: Макросы Py_CLEAR, Py_SETREF и Py_XSETREF теперь оценивают свои аргументы только один раз. Если аргумент имеет побочные эффекты, то эти побочные эффекты больше не дублируются. Исправление Виктора Стиннера.

Python 3.12.0 alpha 3

Дата выхода: 2022-12-06

Безопасность

  • gh-100001: python -m http.server больше не позволяет выводить в журнал сервера stderr символы управления терминалом, отправленные в мусорном запросе.

    Это делается путем изменения http.server BaseHTTPRequestHandler .log_message, чтобы заменить управляющие символы на шестнадцатеричный символ \xHH перед печатью.

  • gh-87604: Избегайте публикации списка активных хуков аудита для каждого интерпретатора через модуль gc.

Ядро и встроенные модули

  • gh-99891: Исправление ошибки в токенизаторе, которая могла привести к бесконечной рекурсии при отображении синтаксических предупреждений, возникающих в первой строке исходного текста. Исправление от Пабло Галиндо

  • gh-91054: Добавьте PyCode_AddWatcher() и PyCode_ClearWatcher() API для регистрации обратных вызовов для получения уведомлений о создании и уничтожении объектов кода.

  • gh-99729: Исправление проблемы, из-за которой фреймы могли быть видны коду Python во время их разрушения, что могло привести к повреждению памяти или жестким сбоям в интерпретаторе.

  • gh-99708: Исправлена ошибка, при которой компилятор терпел крах при выполнении выражения if с пустым блоком тела.

  • gh-99578: Исправление ошибки ссылки в _imp.create_builtin() после создания первого подинтерпретатора для модулей builtins и sys. Исправление Виктора Стиннера.

  • gh-99581: Исправлена ошибка, приводившая к переполнению буфера, если токенизатор копировал строку, в которой отсутствует символ новой строки, из файла, длина которого превышает доступный буфер токенизатора. Исправление от Pablo galindo

  • gh-99553: Исправлена ошибка, из-за которой подкласс ExceptionGroup мог обернуть BaseException.

  • gh-99547: Добавьте в os.path функцию для проверки того, является ли путь перекрестком: isjunction. Добавьте аналогичную функцию в pathlib.Path, как is_junction.

  • gh-99370: Исправьте путь к zip для venv, созданного из неустановленного python на POSIX-платформах.

  • gh-99377: Добавьте события аудита для операций создания и очистки потоков.

  • gh-98686: Удалите BINARY_OP_GENERIC и COMPARE_OP_GENERIC «специализации».

  • gh-99298: Удалите оставшиеся пути ошибок для специализаций атрибутов и откажитесь специализировать доступ к атрибутам для типов, для которых еще не было вызвано PyType_Ready().

  • gh-99127: Разрешить некоторые возможности syslog только основному интерпретатору. Исправление от Donghee Na.

  • gh-91053: Оптимизирующим интерпретаторам и JIT-компиляторам может потребоваться аннулировать внутренние метаданные при изменении функций. Это изменение добавляет возможность указать обратный вызов, который будет вызываться каждый раз, когда функция создается, изменяется или уничтожается.

  • gh-90994: Улучшение сообщений об ошибках при синтаксических ошибках в аргументах вызова. В следующих трех случаях: - Именованному аргументу, например foo(a=), не присваивается значение. - Значение присвоено звездообразному аргументу, например foo(*args=[0]). - Значение присваивается аргументу с ключевым словом с двойной звездой, например foo(**kwarg={'a': 0}).

  • bpo-45026: Оптимизирован итератор объектов range. Теперь он стал меньше, что ускоряет итерацию диапазонов, содержащих большие числа. Меньше маринованных огурцов, быстрее распаковка.

  • bpo-31718: Поднимать ValueError вместо SystemError при вызове методов неинициализированных объектов io.IncrementalNewlineDecoder. Исправление от Орена Милмана.

  • bpo-38031: Исправление возможного сбоя утверждения в io.FileIO, когда открыватель возвращал недействительный дескриптор файла.

Библиотека

  • gh-100001: Также escape s в http.server BaseHTTPRequestHandler.log_message, чтобы технически можно было разобрать строку и восстановить, какими были исходные данные. Без этого xHH неясно, является ли это шестнадцатеричной заменой, которую мы вставили, или символы r«x» пришли через оригинальную строку запроса.

  • gh-99957: Добавьте параметр frozen_default к typing.dataclass_transform().

  • gh-79033: Исправьте asyncio.Server.wait_closed(), чтобы он действительно делал то, что обещает документация - ждал завершения всех существующих соединений после закрытия сервера.

  • gh-51524: Исправлена ошибка при вызове trace.CoverageResults с корректным infile.

  • gh-99645: Исправлена ошибка в обработке очистки классов в unittest.TestCase. Теперь addClassCleanup() использует отдельные списки для разных подклассов TestCase, а doClassCleanups() очищает только конкретный класс.

  • gh-99508: Исправьте TypeError в Lib/importlib/_bootstrap_external.py, вызывая _imp.source_hash().

  • gh-66285: Исправьте asyncio, чтобы не разделять цикл событий и сигнал wakeupfd в вилочных процессах. Исправление Кумара Адитьи.

  • gh-97001: Освобождение GIL при вызове API termios, чтобы избежать блокировки потоков.

  • gh-92647: Используйте конечный статус перечисления для определения ветви поиска или создания функционального API.

  • gh-99388: Добавьте параметр loop_factory в asyncio.run(), чтобы можно было указать фабрику циклов событий. Исправление Кумара Адитьи.

  • gh-99341: Исправьте ast.increment_lineno(), чтобы он также охватывал ast.TypeIgnore при изменении номеров строк.

  • gh-99382: Проверка количества аргументов в подстановке в пользовательских дженериках, содержащих TypeVarTuple и один или несколько TypeVar.

  • gh-99379: Исправьте замену ParamSpec на TypeVarTuple в общих псевдонимах.

  • gh-99344: Исправьте подстановку TypeVarTuple и ParamSpec вместе в пользовательских дженериках.

  • gh-99284: Удалите из _use_broken_old_ctypes_structure_semantics_ старый непроверенный и недокументированный хак из ctypes.

  • gh-99201: Исправьте IndexError при инициализации переменных конфигурации на Windows, если HAVE_DYNAMIC_LOADING не установлен.

  • gh-99240: Исправлена ошибка double-free в клинике аргументов str_converter путем извлечения очистки памяти в новую секцию post_parsing.

  • gh-64490: Исправление ошибки refcount, когда аргументы упаковываются в кортеж в Argument Clinic.

  • gh-99029: pathlib.PurePath.relative_to() теперь рассматривает пути к дискам Windows как относительные. Это приводит его поведение в соответствие с другими частями pathlib.

  • gh-98253: Реализация модуля типизации теперь более устойчива к утечкам ссылок в бинарных модулях расширения.

    Ранее утечка ссылок в типизированном модуле расширения на базе API C могла привести к утечке внутренних данных типизированного модуля, что, в свою очередь, могло привести к утечке данных в практически любом другом пакете с типизированными сигнатурами функций. Хотя пакет типизации не является первоначальным источником проблемы, такие нелокальные зависимости усугубляют отладку крупных проектов, поэтому реализация была изменена, чтобы уменьшить вред за счет лучшей изоляции.

  • gh-98458: Исправление бесконечного цикла в unittest, когда поднимается цепочечное исключение с самоссылкой

  • gh-93453: asyncio.get_event_loop() и многие другие функции asyncio, такие как asyncio.ensure_future(), asyncio.shield() или asyncio.gather(), а также метод get_event_loop() из asyncio.BaseDefaultEventLoopPolicy теперь вызывают ошибку RuntimeError, если вызываются, когда нет запущенного цикла событий и не установлен текущий цикл событий. Ранее они неявно создавали и устанавливали новый текущий цикл событий. DeprecationWarning больше не выдается, если нет запущенного цикла событий, но установлен текущий цикл событий.

  • gh-97966: На uname_result восстановлено ожидание, что _fields и _asdict будут включать все шесть свойств, включая processor.

  • gh-98248: Выдавать информативные сообщения об ошибках в struct.pack(), когда его интегральные аргументы не находятся в диапазоне.

  • gh-98108: zipfile.Path теперь pickleable, если его параметры инициализации были pickleable (например, для путей к файловой системе).

  • gh-98098: Созданы пакеты из модулей zipfile и test_zipfile, разделяющие функциональность zipfile.Path.

  • gh-82836: Исправьте свойства is_private в модуле ipaddress. Ранее нечастные сети (0.0.0.0/0) возвращали True из этого метода; теперь они корректно возвращают False.

  • gh-96828: Добавьте опцию OP_ENABLE_KTLS для включения использования TLS ядра (kTLS). Исправление Илии Волочии.

  • gh-88863: Чтобы избежать явных утечек памяти при возникновении asyncio.open_connection(), прервите циклы ссылок, генерируемые локальными экземплярами исключения и будущего (у которого экземпляр исключения является членом var). Исправление от Dong Uk, Kang.

  • gh-91078: TarFile.next() теперь возвращает None при вызове пустого tarfile.

  • bpo-47220: Документируйте необязательный параметр callback в WeakMethod. Исправление от Géry Ogam.

  • bpo-44817: Игнорируйте ошибки WinError 53 (ERROR_BAD_NETPATH), 65 (ERROR_NETWORK_ACCESS_DENIED) и 161 (ERROR_BAD_PATHNAME) при использовании ntpath.realpath().

  • bpo-41260: Переименуйте параметр fmt чисто питоновской реализации datetime.date.strftime() в format.

  • bpo-15999: Все встроенные функции теперь принимают аргументы любого типа, а не только bool и int для булевых параметров.

Документация

  • gh-99931: Используйте sphinxext-opengraph для генерации OpenGraph metadata.

  • gh-89682: Пересмотрена docstring стандартного __contains__, чтобы уточнить, что она возвращает bool.

  • gh-88330: Улучшено описание того, что такое ресурс, в документации importlib.resources.

  • gh-92892: Документируйте, что вызов переменных функций с помощью ctypes требует особой осторожности на macOS/arm64 (и, возможно, на других платформах).

  • bpo-41825: Реорганизована документация по семейству функций os.wait* и улучшена документация по os.waitid() с более подробным объяснением возможных констант аргументов.

Тесты

  • gh-99892: Пропускайте test_normalization() из test_unicodedata, если не удается загрузить файл NormalizationTest.txt с pythontest.net. Исправление Виктора Стиннера.

  • gh-99934: Исправление test_marsh на (32 бит) x86: test_deterministic sets давал сбой.

  • gh-99741: Мы реализовали многофазную инициацию (PEP 489/630/687) для внутреннего (для тестирования) модуля _xxsubinterpreters.

  • gh-99659: Необязательные тесты на большой объем памяти в test_sqlite3 теперь отлавливают правильный тип исключения sqlite.DataError в случае передачи слишком больших строк и/или блобов.

  • gh-99593: Охватите тестами Unicode C API.

  • gh-96002: Добавьте функциональный тест для Argument Clinic.

Построить

  • gh-99086: Исправьте предупреждения компилятора -Wimplicit-int, -Wstrict-prototypes и -Wimplicit-function-declaration в проверках configure.

  • gh-99337: Исправление проблемы компиляции с GCC 12 на macOS.

  • gh-99289: Добавьте переменную COMPILEALL_OPTS в Makefile, чтобы переопределить опции compileall (по умолчанию: -j0) в make install. Также объединены команды compileall в одну команду, создающую .pyc-файлы для всех уровней оптимизации (0, 1, 2) сразу. Исправление Виктора Стиннера.

  • gh-98872: Исправление возможной утечки fd в Programs/_freeze_module.c, появившейся в Python 3.11.

  • gh-88226: Всегда определяйте метки TARGET_* в Python/ceval.c, даже если USE_COMPUTED_GOTOS отключен. Это позволяет устанавливать точки останова на эти метки в (например) gdb.

Windows

macOS

  • gh-87235: На macOS python3 /dev/fd/9 9</path/to/script.py не работает для любого скрипта длиннее пары байт.

  • gh-98940: Исправление ошибки фильтрации файлов Mac/Extras.install.py.

Инструменты/демоверсии

  • gh-64490: Исправления в клинике аргументов varargs

    • Исправьте ошибку выхода за пределы границ в _PyArg_UnpackKeywordsWithVararg().

    • Исправление некорректной проверки, которая позволяла использовать более одного varargs в clinic.py.

    • Исправьте ошибку в вычислении noptargs в сгенерированном коде.

    • Не генерируйте noptargs, если есть аргумент vararg и нет необязательного аргумента.

C API

  • gh-98680: Константы PyBUF_* были отмечены как часть Limited API Python 3.11+. Они были доступны в 3.11.0 с Py_LIMITED_API, определенными для 3.11, и необходимы для использования API буфера.

  • gh-99612: Исправьте PyUnicode_DecodeUTF8Stateful() для данных только в формате ASCII: *consumed не был установлен.

  • gh-47146: Заголовок structmember.h является устаревшим. Его не устаревшее содержимое теперь доступно только при включении Python.h, с добавлением префикса Py_, если он отсутствовал. (Утратившим актуальность содержимым являются T_OBJECT, T_NONE и флаги no-op.) Исправление Петра Викторина, основанное на более ранней работе Александра Белопольского и Маттиаса Брауна.

Python 3.12.0 alpha 2

Дата выхода: 2022-11-14

Безопасность

  • gh-98433: Декодер кодека IDNA, используемый для имен хостов DNS функциями разрешения имен, связанными с socket или asyncio, больше не использует квадратичный алгоритм. Это предотвращает потенциальный отказ в обслуживании процессора в случае декодирования имени хоста чрезмерной длины, содержащего двунаправленные символы. Некоторые протоколы, такие как urllib http 3xx редиректы, потенциально позволяют злоумышленнику предоставить такое имя.

    Отдельные метки в DNS-имени, закодированном в IDNA, теперь будут вызывать ошибку на ранней стадии декодирования IDNA, если их длина превышает 1024 символа юникода, учитывая, что каждая декодированная DNS-метка должна состоять из 63 или менее символов, а все декодированное DNS-имя ограничено 255. С этим новым ограничением столкнется только приложение, представляющее имя хоста или метку, состоящую в основном из RFC 3454 раздела 3.1 «Ничего» символов, которые необходимо удалить. См. также RFC 5894 раздел 6 и RFC 3491.

  • gh-98739: Обновление libexpat до версии 2.5.0

Ядро и встроенные модули

  • gh-81057: В документации четко сказано, что PyImport_Inittab, PyImport_AppendInittab() и PyImport_ExtendInittab() не должны использоваться после вызова Py_Initialize(). Теперь мы обеспечиваем это для этих двух функций. Кроме того, время выполнения теперь использует внутреннюю копию PyImport_Inittab, чтобы защитить ее от модификации.

  • gh-99298: Исправление проблемы, которая потенциально могла привести к некорректной обработке ошибок для некоторых инструкций байткода.

  • gh-99254: Компилятор теперь удаляет все неиспользуемые константы из объектов кода (кроме первой, которая может быть docstring).

  • gh-99205: Исправлена проблема, из-за которой память PyThreadState и PyInterpreterState не освобождалась должным образом.

  • gh-81057: 18 глобальных переменных C, хранящих состояние аллокаторов, были перемещены в _PyRuntimeState. Это сугубо внутреннее изменение, не меняющее поведение.

  • gh-99181: Исправление сбоя в except* с нехешируемыми исключениями.

  • gh-99204: Исправлено вычисление sys._base_executable при нахождении в виртуальной среде POSIX, использующей копии двоичного файла python, когда базовая установка не предоставляет имя исполняемого файла, используемого venv. При вычислении будут использоваться альтернативные имена («python<MAJOR>», «python<MAJOR>.<MINOR>»).

  • gh-96055: Обновите faulthandler, чтобы выдавалось сообщение об ошибке с правильным номером неожиданного сигнала. Исправление от Donghee Na.

  • gh-99153: Исправьте расположение SyntaxError для блока try, имеющего и except, и except*.

  • gh-98686: Объедините логику адаптивного опкода в неускоренный вариант каждой инструкции и объедините логику в EXTENDED_ARG_QUICK с EXTENDED_ARG. Благодаря этим изменениям ускорение, происходящее при создании объекта кода, теперь отвечает только за инициализацию счетчиков разминки и вставку суперинструкций.

  • gh-99103: Исправьте положение сообщений об ошибках специализированных якорей трассировки, когда исходная строка содержит символы Юникода.

  • gh-99139: Улучшено предложение ошибок для исключений NameError для экземпляров. Теперь, если в методе поднимается NameError, а у экземпляра есть атрибут, точно совпадающий с именем в исключении, предложение будет включать self.<NAME> вместо ближайшего совпадения в области видимости метода. Исправление от Pablo Galindo

  • gh-98401: Октальные эскейпы со значением больше 0o377 (например, "\477"), устаревшие в Python 3.11, теперь выдают SyntaxWarning, а не DeprecationWarning. В одной из будущих версий Python они будут выдавать SyntaxError. Исправление Виктора Стиннера.

  • gh-98401: Пара обратный слеш-символ, не являющаяся допустимой управляющей последовательностью, теперь генерирует SyntaxWarning, а не DeprecationWarning. Например, re.compile("\d+\.\d+") теперь выдает SyntaxWarning ("\d" - недопустимая управляющая последовательность), используйте необработанные строки для регулярных выражений: re.compile(r"\d+\.\d+"). В одной из будущих версий Python вместо SyntaxWarning будет выдаваться SyntaxError. Исправление Виктора Стиннера.

  • gh-96793: Обрабатывать StopIteration и StopAsyncIteration, поднятые в генераторе или корутинах в байткоде, а не в обертке кода C.

  • gh-98931: Улучшено сообщение об ошибке SyntaxError, когда пользователь набирает import x from y вместо from y import x. Исправление от Пабло Галиндо

  • gh-98852: Исправьте подписку на псевдонимы типов, содержащие голые общие типы или типы типа TypeVar: например, tuple[A, T][int] и tuple[TypeVar, T][int], где A - общий тип, а T - переменная типа.

  • gh-98925: Снижение глубины рекурсии для marshal на WASI для поддержки (в разработке) wasmtime 2.0.

  • gh-98783: Исправление многочисленных сбоев в режиме отладки при использовании подклассов str вместо самого str.

  • gh-98811: Используйте полное расположение источника, чтобы упростить обнаружение импорта __future__, который находится не в начале файла. Также исправлено смещение в исключении, вызванном в одном случае, которое было смещено на единицу и мешало выделению.

  • gh-96793: Добавьте специализацию FOR_ITER для генераторов. Это избавляет от нескольких уровней диспетчеризации и проверок, чтобы перейти от инструкции FOR_ITER в вызывающей машине к RESUME в генераторе.

  • gh-98762: Исправьте расположение источников подпаттернов match.

  • gh-98586: В Limited API добавлены методы PyObject_Vectorcall() и PyObject_VectorcallMethod(), а также вспомогательная макроконстанта PY_VECTORCALL_ARGUMENTS_OFFSET.

    Наличие этих функций позволяет более эффективно вызывать вектор PEP 590 из бинарных модулей расширения, что позволяет избежать накладных расходов на обработку/разборку аргументов.

  • gh-99257: Исправление проблемы, из-за которой дескрипторы членов (например, для __slots__) могли вести себя некорректно или аварийно завершаться вместо того, чтобы вызывать ошибку TypeError при обращении к экземпляру недопустимого типа.

  • gh-93143: Вместо изменения co_code интерпретатор теперь будет отображать RuntimeWarning и присваивать None всем быстрым локалям, оставшимся несвязанными после переходов или операторов del, выполненных при трассировке.

  • gh-96421: При вызове кода Python из кода C через функцию PyEval_EvalFrameEx() или связанную с ней функцию C-API в стек вызовов вставляется шимфрейм. Это происходит в функции _PyEval_EvalFrameDefault(). Этот дополнительный фрейм должен быть невидим для всех расширений Python и большинства расширений C, но внепроцессные профилировщики и отладчики должны знать о нем. Эти шимфреймы можно обнаружить, проверив frame->owner == FRAME_OWNED_BY_CSTACK.

    Расширения, реализующие собственные интерпретаторы, использующие PEP 523, должны знать об этой рамке shim и изменениях в семантике RETURN_VALUE, YIELD_VALUE и RETURN_GENERATOR, которые теперь очищают эту рамку.

  • gh-98415: Исправление обнаружения MAC-адресов для uuid на некоторых ОС. Исправление от Хаима Сандерса

  • gh-98686: Ускоряет все объекты кода и более агрессивно специализирует адаптивные инструкции байткода.

  • gh-92119: Выводить имя класса исключения вместо его строкового представления при обнаружении ошибок от вызовов ctypes.

  • gh-91058: ImportError, поднятые из неудачного from <module> import <name>, теперь включают предложения для значения <name>, основанные на доступных именах в <module>. Исправление от Pablo Galindo

  • gh-96793: FOR_ITER теперь оставляет итератор в стеке при завершении цикла. Это сделано для того, чтобы помочь специализировать циклы для генераторов.

  • gh-90716: Добавьте модуль _pylong.py. Он включает в себя асимптотически более быстрые алгоритмы, которые можно использовать для операций над целыми числами с большим количеством цифр. Он используется в longobject.c для ускорения некоторых операций.

  • gh-95389: Раскройте ETH_P_ALL и некоторые из ETHERTYPE_* constants в socket. Исправление Ноама Коэна.

  • gh-93696: Разрешите pdb находить исходные тексты замороженных модулей в стандартной библиотеке.

Библиотека

  • gh-99418: Исправление ошибки в urllib.parse.urlparse(), из-за которой схемы URL, начинающиеся с цифры, знака плюс или знака минус, разбирались некорректно.

  • gh-94597: Утратить asyncio.AbstractChildWatcher, чтобы быть удаленным в Python 3.14. Исправление от Kumar Aditya.

  • gh-99305: Улучшить производительность secrets.token_hex().

  • gh-74044: Исправлена ошибка, при которой inspect.signature() сообщал неверные аргументы для декорированных методов.

  • gh-99275: Исправьте SystemError в ctypes, когда исключение не было установлено во время __initsubclass__.

  • gh-99277: Удалите старую версию _SSLProtocolTransport.get_write_buffer_limits в asyncio.sslproto.

  • gh-99248: исправление ошибки отрицательных чисел в verify()

  • gh-99155: Исправьте statistics.NormalDist маринад с помощью протоколов 0 и 1.

  • gh-93464: enum.auto() теперь корректно активируется в сочетании с другими значениями присваивания. Например, ONE = auto(), 'some text' теперь будет оцениваться как (1, 'some text').

  • gh-99134: Обновите поставляемую в комплекте копию pip до версии 22.3.1.

  • gh-92584: Удалите пакет distutils. Он был устаревшим в Python 3.10 благодаря PEP 632 «Deprecate distutils module». Для проектов, которые все еще используют distutils и не могут быть обновлены на что-то другое, можно установить проект setuptools: он по-прежнему предоставляет distutils. Исправление Виктора Стиннера.

  • gh-98999: Теперь _pyio согласуется с _io в повышении ValueError при выполнении методов над закрытыми буферами.

  • gh-83004: Очистите refleak при неудачной инициализации модуля в _zoneinfo

  • gh-83004: Очистка рефлексов при неудачной инициализации модуля в _pickle

  • gh-83004: Очистите refleak при неудачной инициализации модуля в _io.

  • gh-98897: Исправьте утечку памяти в math.dist(), когда обе точки не имеют одинаковой размерности. Исправление Кумара Адитьи.

  • gh-98878: Используйте встроенные элементы, связанные с рамкой, при предложении имени в traceback, чтобы избежать сбоя, если __builtins__ не является dict.

  • gh-98139: В importlib._bootstrap увеличьте пакет пространства имен repr до <module 'x' (namespace) from ['path']>.

  • gh-90352: Исправьте _SelectorDatagramTransport, чтобы он наследовался от DatagramTransport в asyncio. Исправление Кумара Адитьи.

  • gh-98793: Исправление проверки типов аргументов в функциях _overlapped.WSAConnect() и _overlapped.Overlapped.WSASendTo().

  • gh-98744: Предотвращение сбоя в traceback при получении смещения байта для некоторых исходных файлов, содержащих определенные символы юникода.

  • gh-98740: Исправлена внутренняя ошибка в модуле re, которая в очень редких случаях не позволяла скомпилировать регулярное выражение, содержащее conditional expression без ветви «else».

  • gh-98703: Исправьте asyncio.StreamWriter.drain() для вызова обратного вызова protocol.connection_lost только один раз на Windows.

  • gh-98624: Добавьте мьютекс в unittest.mock.NonCallableMock для защиты одновременного доступа к атрибутам mock.

  • gh-98658: Класс array.array теперь поддерживает подзапись, что делает его классом generic type.

  • gh-98284: Улучшенное сообщение TypeError для неопределенных абстрактных методов экземпляра abc.ABC. Имена отсутствующих методов окружены одинарными кавычками, чтобы выделить их.

  • gh-96151: Разрешите BUILTINS быть допустимым именем поля для замороженных классов данных.

  • gh-98086: Убедитесь, что patch.dict() можно применять к асинхронным функциям.

  • gh-72719: Удалите модули asyncore и asynchat, которые были устаревшими в PEP 594.

  • gh-96192: Исправьте обработку bytes path-like objects в os.ismount().

  • gh-94172: ftplib: Удалите атрибут класса FTP_TLS.ssl_version: вместо него используйте параметр context. Исправление Виктора Стиннера

  • gh-94172: Удалите параметры keyfile и certfile из модулей ftplib, imaplib, poplib и smtplib, а также параметры key_file, cert_file и check_hostname из модуля http.client, устаревшие с Python 3.6. Вместо них используйте параметр context (ssl_context в imaplib). Исправление Виктора Стиннера.

  • gh-83638: Добавьте атрибут autocommit к sqlite3.Connection и параметр autocommit к sqlite3.connect() для управления PEP 249-совместимыми transaction handling. Исправление Эрленда Э. Аасланда.

  • gh-92452: Исправлено состояние гонки, из-за которого sysconfig.get_config_var() мог неверно возвращать None в многопоточных программах.

  • gh-91803: Исправление ошибки при использовании метода объектов, замакетированных с помощью unittest.mock.create_autospec(), после того как он был запечатан с помощью функции unittest.mock.seal().

  • bpo-38523: shutil.copytree() теперь рекурсивно применяет аргумент ignore_dangling_symlinks.

  • bpo-40358: Добавьте аргумент walk_up в pathlib.PurePath.relative_to().

  • bpo-36267: Исправьте ошибку IndexError в argparse.ArgumentParser, когда действию store_true дается явный аргумент.

Документация

  • gh-98832: Изменена формулировка docstring для pathlib.Path.iterdir().

  • gh-97966: Обновите документацию по uname, чтобы прояснить особый характер атрибута platform и указать, когда он стал поздним.

Тесты

  • gh-98903: Набор тестов Python теперь завершается с кодом выхода 4, если не было выполнено ни одного теста. Это должно помочь обнаружить опечатки в именах тестов и тестовых методов.

  • gh-98713: Исправлена ошибка в тестах typing, когда тест, полагающийся на детали реализации, специфичные для CPython, не был украшен @cpython_only и не пропускался в других реализациях.

  • gh-87390: Добавлены тесты на распаковку звезд с PEP 646 и некоторые другие разнообразные тесты PEP 646.

  • gh-96853: Добавили явное покрытие Py_Initialize (и, следовательно, Py_InitializeEx) обратно в тесты встраивания (все остальные тесты встраивания перешли на Py_InitializeFromConfig в Python 3.11)

  • bpo-34272: Некоторые тесты C API были перемещены в новую директорию Lib/test/test_capi/.

Построить

  • gh-99086: Исправьте предупреждение компилятора -Wimplicit-int в configure проверьте PTHREAD_SCOPE_SYSTEM.

  • gh-99016: Исправьте сборку с PYTHON_FOR_REGEN=python3.8.

  • gh-97731: Укажите полный путь к исходному расположению make docclean (необходимо для кросс-сборки).

  • gh-98949: Удалите неиспользуемую зависимость сборки от readelf.

  • gh-98989: Используйте python3.11, если доступно, для регенерации и замораживания.

  • gh-98831: Добавьте в Tools/cases_generator новый инструментарий для генерации оператора переключения интерпретатора из списка определений опкодов. Это касается только добавления, изменения или удаления определений команд. Определения команд теперь находятся в Python/bytecodes.c, в виде файла custom DSL (under development). Инструментарий считывает этот файл и пишет Python/generated_cases.c.h, который затем включается в Python/ceval.c, чтобы обеспечить большинство случаев главного переключателя интерпретатора.

  • gh-98817: Удалите PCbuild/lib.pyproj: он ни для чего не используется, является лишь незначительным удобством для пользователей Visual Studio (которые, вероятно, даже не знают о нём), и требует много усилий по обслуживанию, чтобы поддерживать его в актуальном состоянии.

  • gh-98776: Исправьте make regen-test-levenshtein для сборок вне дерева.

  • gh-98707: Не используйте заголовки libmpdec, если --with-system-libmpdec передается в configure. Не используйте заголовки libexpat, если --with-system-expat передается в configure.

Windows

  • gh-98689: Обновите сборки Windows до zlib v1.2.13. v1.2.12 имеет CVE-2022-37434, но уязвимый inflateGetHeader API не используется в Python.

  • gh-98790: Предполагает, что отсутствие каталога DLLs означает, что стандартные модули расширения находятся в каталоге исполняемого файла.

  • gh-98745: Обновите py.exe пусковую установку, чтобы она устанавливала 3.11 по умолчанию и 3.12 по запросу.

  • gh-98692: Исправление Python Launcher для Windows, игнорирующего нераспознанные строки шебанга вместо того, чтобы рассматривать их как локальные пути

  • gh-94328: Обновление программы установки Windows для использования SQLite 3.39.4.

macOS

  • gh-94328: Обновление программы установки macOS до версии SQLite 3.39.4.

C API

  • gh-98724: Макросы Py_CLEAR, Py_SETREF и Py_XSETREF теперь оценивают свой аргумент только один раз. Если аргумент имеет побочные эффекты, то эти побочные эффекты больше не дублируются. Исправление Виктора Стиннера.

  • gh-98978: Исправьте use-after-free в вызовах функций Py_SetPythonHome(NULL), Py_SetProgramName(NULL) и _Py_SetProgramFullPath(NULL). О проблеме сообщил Бенедикт Рейнартц. Исправление подготовил Виктор Стиннер.

  • gh-98410: Добавьте getbufferproc и releasebufferproc в стабильный API.

  • gh-98610: Некоторые настраиваемые возможности субинтерпретаторов изменились. Теперь они всегда разрешают подпроцессы (subprocess), тогда как раньше подпроцессы могли быть опционально запрещены для подинтерпретатора. Вместо этого теперь можно запретить os.exec(). Запрет потоков демонов теперь поддерживается. Запрет всех потоков по-прежнему разрешен, но никогда не выполняется по умолчанию. Обратите внимание, что дополнительные ограничения доступны только через _Py_NewInterpreterFromConfig(), который не является публичным API. Они не влияют ни на основной интерпретатор, ни на Py_NewInterpreter().

  • gh-98608: Был добавлен _PyInterpreterConfig, а _Py_NewInterpreter() был переименован в _Py_NewInterpreterFromConfig(). Аргумент «isolated_subinterpreters» теперь является гранулированной конфигурацией, которая отражает предыдущее поведение. Обратите внимание, что это все «приватный» API.

  • gh-96853: Py_InitializeEx теперь корректно вызывает PyConfig_Clear после инициализации интерпретатора (пропуск не привел к утечке памяти только потому, что ни одно из динамически выделяемых полей конфига не заполняется функцией-оберткой)

  • gh-91248: Добавьте функции PyFrame_GetVar() и PyFrame_GetVarString(), чтобы получить переменную кадра по ее имени. Исправление Виктора Стиннера.

Python 3.12.0 alpha 1

Дата выхода: 2022-10-25

Безопасность

  • gh-97616: Исправлено умножение списка на целое число (list *= int): обнаружено целочисленное переполнение, когда новая выделенная длина близка к максимальному размеру. О проблеме сообщил Джордан Лимор. Исправление подготовил Виктор Стиннер.

  • gh-97514: В Linux модуль multiprocessing возвращается к использованию сокетов домена unix с поддержкой файловой системы для связи с процессом forkserver вместо абстрактного пространства имен сокетов Linux. Затронут только код, который решил использовать «forkserver» start method.

    Абстрактные сокеты не имеют прав доступа и могли позволить любому пользователю системы в том же network namespace (а зачастую и всей системе) внедрить код в многопроцессорный процесс forkserver. Это было потенциальным повышением привилегий. Разрешения на сокеты, основанные на файловой системе, ограничивают эту возможность пользователем процесса forkserver, как это было по умолчанию в Python 3.8 и более ранних версиях.

    Это предотвращает появление Linux CVE-2022-42919.

  • gh-87389: http.server: Устранение уязвимости открытой переадресации в HTTP-сервере, когда путь URI начинается с //. Уязвимость обнаружена и предложено первоначальное исправление Хамзой Авваном.

  • gh-79096: LWPCookieJar и MozillaCookieJar создают файлы с файловым режимом 600 вместо 644 (Microsoft Windows не затронута)

  • gh-92888: Исправьте использование memoryview после free при обращении к резервному буферу в некоторых случаях.

  • gh-68966: Устаревший модуль mailcap теперь отказывается вводить небезопасный текст (имена файлов, типы MIME, параметры) в команды оболочки. Вместо использования такого текста он будет предупреждать и действовать так, как если бы совпадение не было найдено (или для тестовых команд - как если бы тест не удался).

Ядро и встроенные модули

  • gh-98374: Подавление ошибки ImportError при некорректном запросе для команды help(). Исправление от Donghee Na.

  • gh-98461: Исправлено расположение источника в байткоде для списков, множеств и диктов, а также генераторных выражений.

  • gh-98354: Добавлена проверка юникода для атрибута name аргумента spec, передаваемого в функцию _imp.create_builtin().

  • gh-98398: Исправьте расположение источника байткода „assert“.

  • gh-98390: Исправляет расположение подвыражений булевых выражений, уменьшая их область видимости до области видимости подвыражения.

  • gh-98254: Модули из стандартной библиотеки теперь потенциально могут быть предложены в качестве части сообщений об ошибках, выводимых интерпретатором, когда NameError поднимается на верхний уровень. Исправление от Pablo Galindo

  • gh-97997: Добавляет смещение бегущего столбца в состояние токенизатора, чтобы избежать вычисления информации о столбце AST с помощью арифметики указателей.

  • gh-97973: Модифицируйте токенизатор, чтобы он возвращал всю необходимую информацию, которая нужна парсеру для установки информации о местоположении в узлах AST, чтобы парсеру не приходилось вычислять их, выполняя арифметику с указателями.

  • gh-96078: os.sched_yield() теперь освобождают GIL при вызове sched_yield(2). Исправление от Donghee Na.

  • gh-97955: Перенесите zoneinfo в Клинику аргументов.

  • gh-97912: Компилятор теперь избегает квадратичного поведения при поиске инструкций, которые должны использовать опкод LOAD_FAST_CHECK.

  • gh-97002: Исправление проблемы, когда несколько объектов фрейма могли быть подкреплены одним и тем же фреймом интерпретатора, что могло привести к повреждению памяти и жестким сбоям в работе интерпретатора.

  • gh-97943: Исправление: PyFunction_GetAnnotations() должен возвращать заимствованную ссылку. Она возвращала новую ссылку.

  • gh-97922: Сборщик мусора теперь работает только с механизмом eval breaker цикла оценки байткода Python, а не с выделением объектов. GC также может запускаться при вызове PyErr_CheckSignals(), так что расширения на C, которые должны работать долгое время без выполнения кода Python, также имеют возможность периодически запускать GC.

  • gh-65961: Если __package__ отличается от __spec__.parent, поднимите DeprecationWarning вместо ImportWarning.

    Также удалите importlib.util.set_package(), который был запланирован к удалению.

  • gh-97850: Давно устарел, module_repr() теперь должен быть полностью уничтожен.

  • gh-86298: В случаях, когда warnings.warn_explicit() обращается к загрузчику модуля, выдается сообщение DeprecationWarning, если m.__loader__ отличается от m.__spec__.loader.

  • gh-97779: Убедитесь, что все объекты кадров Python поддерживаются «полными» кадрами.

  • gh-91052: Добавьте API для подписки на события модификации выбранных словарей.

  • gh-97752: Исправление возможного повреждения данных или сбоев при обращении к члену f_back вновь созданных фреймов генератора или coroutine.

  • gh-97591: Исправлена отсутствующая пара incref/decref в Exception.__setstate__(). Исправление от Ofey Chan.

  • gh-97670: Удалите функцию sys.getdxp() и скрипт Tools/scripts/analyze_dxp.py. DXP означает «пары динамического выполнения». Они были связаны с макросами DYNAMIC_EXECUTION_PROFILE и DXPAIRS, которые были удалены в Python 3.11. Теперь Python можно собрать с помощью ./configure --enable-pystats для сбора статистики по опкодам Python. Исправление от Виктора Стиннера.

  • gh-94526: Исправьте конфигурацию путей Python, используемую для инициализации sys.path при запуске Python. Пути больше не кодируются в UTF-8/strict, чтобы избежать ошибок кодировки, если они содержат суррогатные символы (байтовые пути декодируются с помощью обработчика ошибок surrogateescape). Исправление Виктора Стиннера.

  • gh-96670: Парсер теперь поднимает SyntaxError при разборе исходного кода, содержащего нулевые байты. Исправление от Pablo Galindo

  • gh-96975: Исправление сбоя, возникающего при вызове PyEval_GetFrame(), когда самый верхний фрейм Python находится в частично инициализированном состоянии.

  • gh-96848: Исправление разбора командной строки: отбрасывать опцию -X int_max_str_digits без значения (недействительную), когда переменная окружения PYTHONINTMAXSTRDIGITS установлена на допустимый предел. Исправление Виктора Стиннера.

  • gh-95921: Исправление слишком широкой информации о позиции источника для цепочечных сравнений, используемых в качестве условий ветвления.

  • gh-96821: Исправьте неопределенное поведение в audioop.c.

  • gh-96821: Исправьте неопределенное поведение в _testcapimodule.c.

  • gh-95778: При появлении ValueError, если целое число больше предела, в сообщении об ошибке упоминается функция sys.set_int_max_str_digits(). Исправление Виктора Стиннера.

  • gh-96387: При выходе из Python иногда поток, удерживающий GIL, может вечно ждать поток (обычно это поток демона), который запросил сброс GIL, в то время как этот поток уже вышел. Чтобы устранить это состояние гонки, поток, запросивший сброс GIL, теперь сбрасывает свой запрос перед выходом. Проблема обнаружена и проанализирована Mingliang ZHAO. Исправление подготовил Виктор Стиннер.

  • gh-96864: Исправление возможного сбоя утверждения, фатальной ошибки или SystemError, если событие трассировки строк вызывает исключение при включенной трассировке опкодов.

  • gh-95778: Функция PyLong_FromString была рефакторизована, чтобы сделать ее более удобной для обслуживания и расширения.

  • gh-96678: Исправление неопределенного поведения арифметики нулевого указателя в коде на языке C.

  • gh-96754: Убедитесь, что все создаваемые объекты фреймов созданы из корректных фреймов интерпретатора. Предотвращает возможность появления недействительных фреймов в бэктрейсах и обработчиках сигналов.

  • gh-90997: Улучшение производительности чтения и записи кэша встроенного байткода на некоторых платформах.

  • gh-96751: Удалите мертвый код из опкода CALL_FUNCTION_EX.

  • gh-90751: memoryview теперь поддерживает полуплоскости. Исправление от Donghee Na и Antoine Pitrou.

  • gh-96678: Исправьте случай неопределенного поведения в ceval.c

  • gh-64373: Преобразуйте _functools в аргумент clinic.

  • gh-96641: Не выставляйте KeyWrapper в _functools.

  • gh-96636: Убедитесь, что трассировка, sys.setrace(), включается немедленно. В предварительных версиях 3.11 некоторые события трассировки могли быть потеряны при включении трассировки в методе или прерывании __del__.

  • gh-96572: Исправление использования после free в режиме сборки trace refs. Исправление от Kumar Aditya.

  • gh-96611: При загрузке файла с недопустимым UTF-8 внутри многострочной строки выдается корректная ошибка SyntaxError.

  • gh-96612: Убедитесь, что неполные кадры не отображаются в трассировках tracemalloc.

  • gh-90230: Исправление предупреждений компилятора и ошибок в тестах при сборке с --enable-pystats.

  • gh-96587: Корректно поднимает SyntaxError в группах исключений (PEP 654) на версиях python до 3.11

  • gh-96569: Устраните два случая неопределенного поведения, добавив проверку на NULL.

  • gh-96582: Исправление возможного разыменования указателя NULL в _PyThread_CurrentFrames. Исправление Кумара Адитьи.

  • gh-91079: Отделите проверку рекурсии в Python от проверки рекурсии в C, что уменьшает вероятность переполнения стека в C и позволяет безопасно увеличивать предел рекурсии.

  • gh-93911: Исправление проблемы, из-за которой LOAD_ATTR не мог правильно специализироваться при доступе к свойствам.

  • gh-96348: Выдавать предупреждение о депривации, когда throw(), throw() или athrow() вызываются с более чем одним аргументом.

  • gh-95196: Отключение некорректного пикирования дескрипторов методов класса, реализованных на языке C.

  • gh-96364: Исправьте текстовые подписи list.__getitem__ и dict.__getitem__.

  • gh-96352: Исправление отсутствующих в AttributeError атрибутов name и obj в object.__getattribute__(). Исправление от Филиппа Георги.

  • gh-93554: Измените опкоды переходов таким образом, чтобы все условные переходы были переходами вперед. Переходы назад преобразуются ассемблером в условный переход вперед, целью которого является выпадающий блок (и с обратным условием), за которым следует безусловный переход назад. Например:

    POP_JUMP_IF_TRUE BACKWARD_TARGET становится POP_JUMP_IF_FALSE NEXT_BLOCK; JUMP BACKWARD_TARGET.

    Были удалены все опкоды направленных условных переходов: POP_JUMP_FORWARD_IF_TRUE, POP_JUMP_BACKWARD_IF_TRUE, POP_JUMP_FORWARD_IF_FALSE, POP_JUMP_BACKWARD_IF_FALSE, POP_JUMP_FORWARD_IF_NONE, POP_JUMP_BACKWARD_IF_NONE, POP_JUMP_FORWARD_IF_NOT_NONE, POP_JUMP_BACKWARD_IF_NOT_NONE.

    Соответствующие опкоды без направления больше не являются псевдоинструкциями и реализуют прямые условные переходы.

  • gh-96268: При загрузке файла с недопустимым UTF-8 теперь сообщается о прерванном символе в правильном месте.

  • gh-96237: Внутреннее поле _PyInterpreterFrame.f_func переименовывается в _PyInterpreterFrame.f_funcobj и может быть любым объектом. Поля f_globals и f_builtin могут содержать ненужные значения.

    Безопаснее всего рассматривать структуру _PyInterpreterFrame как непрозрачную.

  • gh-96187: Исправлена ошибка, из-за которой _PyCode_GetExtra возвращала мусор для отрицательных индексов. Исправление от Пабло Галиндо

  • gh-96143: Добавьте новую -X perf опцию командной строки Python, а также sys.activate_stack_trampoline() и sys.deactivate_stack_trampoline() функции в модуле sys, которые позволяют установить/отключить интерпретатор таким образом, чтобы профилировщик Linux perf мог обнаружить вызовы Python. Новая функция sys.is_stack_trampoline_active() позволяет запрашивать состояние батута perf. Разработка Пабло Галиндо. Патч Пабло Галиндо и Кристиана Хаймса при участии Грегори П. Смита [Google] и Марка Шеннона.

  • gh-96071: Исправление тупиковой ситуации в PyGILState_Ensure() при выделении нового состояния потока. Исправление Кумара Адитьи.

  • gh-96046: PyType_Ready() теперь инициализирует ht_cached_keys и выполняет дополнительные проверки, чтобы убедиться, что объекты типов правильно сконфигурированы. Это позволяет избежать сбоев в сторонних пакетах, которые не используют обычный API для создания новых типов.

  • gh-96005: В WASI ENOTCAPABLE теперь отображается на PermissionError. Модули errno отображают новый номер ошибки. getpath.py теперь игнорирует PermissionError, когда не может открыть файлы-земли pybuilddir.txt и pyenv.cfg.

  • gh-93678: Добавлена тестовая оболочка для прямого модульного тестирования этапа оптимизации компилятора. Функция _testinternalcapi.optimize_cfg() запускает оптимизатор на последовательности инструкций. Класс CfgOptimizationTestCase в test.support содержит утилиты для вызова оптимизатора и проверки результатов.

  • gh-95245: Уменьшает размер «простого» объекта Python с 8 до 6 слов, перемещая указатель weakreflist в предзаголовок непосредственно перед указателем dict/values объекта.

  • gh-90997: Компилируйте виртуальные блоки try/except для обработки исключений, возникающих во время вызовов close() или throw() через приостановленный кадр.

  • gh-95977: Оптимизирован вызов __get__() с помощью vectorcall. Исправление Кумара Адитьи.

  • gh-91210: Улучшите сообщение об ошибке, когда параметр без значения по умолчанию следует за параметром со значением по умолчанию, и показывайте то же самое сообщение, даже если последовательность без значения по умолчанию/по умолчанию предшествует параметрам только с позиционированием.

  • gh-95922: Исправлена ошибка, при которой функция eliminate_empty_basic_blocks компилятора игнорировала последний блок единицы кода.

  • gh-95818: Пропускать неполные кадры в PyThreadState_GetFrame().

  • gh-95876: Исправьте строку формата в _PyPegen_raise_error_known_location, которая могла привести к повреждению памяти на некоторых 64-битных системах. Функция строила кортеж с i (int) вместо n (Py_ssize_t) для аргументов Py_ssize_t.

  • gh-95605: Исправьте вводящее в заблуждение содержимое сообщения об ошибке при преобразовании строки со всеми пробелами в float.

  • gh-95150: Обновление хеширования и равенства объектов кода для учета всех таблиц отладки и обработки исключений. Это исправляет проблему, из-за которой некоторые неидентичные объекты кода могли быть «дедуплицированы» во время компиляции.

  • gh-91146: Уменьшите размер выделения list из str.split() и str.rsplit(). Исправление от Donghee Na и Inada Naoki.

  • gh-87092: Создайте в компиляторе абстракцию „jump target label“, чтобы этап codegen компилятора не работал напрямую с базовыми блоками. Это подготовит код к изменениям в базовом механизме генерации CFG.

  • gh-95355: _PyPegen_Parser_New теперь правильно обнаруживает ошибки выделения памяти для токенов. Исправление от Honglin Zhu.

  • gh-90081: Запуск Python-кода в функции трассировщика/профайлера на полной скорости. Исправляет замедление в ранних версиях 3.11.

  • gh-95324: Выдавать предупреждение в режиме отладки, если объект не вызывает PyObject_GC_UnTrack() перед деаллокацией. Исправление от Пабло Галиндо.

  • gh-95245: Объедините управляемые указатели dict и values в один указатель с меткой, чтобы сэкономить одно слово в предзаголовке.

  • gh-93678: Добавьте структуру cfg_builder и отрефакторьте соответствующий код, чтобы cfg можно было построить без экземпляра структуры компилятора.

  • gh-95185: Предотвращены сбои в конструкторе AST при компиляции некоторых абсурдно длинных выражений типа "+0"*1000000. Вместо этого теперь поднимается значение RecursionError. Исправление от Pablo Galindo

  • gh-93351: Позиции узлов ast.AST теперь проверяются при передаче в compile() и другие связанные функции. Если обнаружены недопустимые позиции, будет выдано сообщение ValueError.

  • gh-94438: Исправление проблемы, из-за которой при вычислении допустимых целей перехода для присваиваний атрибуту f_lineno фреймовых объектов игнорировались расширенные аргументы опкодов и некоторые условные всплытия. В некоторых случаях это могло привести к несогласованному внутреннему состоянию, что приводило к жесткому аварийному завершению работы интерпретатора.

  • gh-95060: Недокументированная функция PyCode_Addr2Location теперь корректно возвращается, если аргумент addrq меньше нуля.

  • gh-95113: Замените все инструкции EXTENDED_ARG_QUICK базовыми инструкциями EXTENDED_ARG в неадаптивном коде. Потребители неадаптивного байткода должны уметь работать с расширенными аргументами так же, как они работали в CPython 3.10 и старше.

  • gh-91409: Исправление некорректной информации о местоположении источника, вызванной некоторыми оптимизациями в компиляторе байткода.

  • gh-95023: Реализуйте os.setns() и os.unshare() для Linux. Исправление Ноама Коэна.

  • gh-94036: Исправление некорректной информации о местоположении источника для некоторых многострочных обращений к атрибутам и вызовов методов.

  • gh-94938: Исправление обнаружения ошибок в некоторых встроенных функциях, когда ключевое слово аргумента name является экземпляром подкласса str с перегруженными __eq__ и __hash__. Ранее это могло вызывать SystemError или другое нежелательное поведение.

  • gh-94996: ast.parse() больше не будет разбирать определения функций с параметрами только позиционного типа, если передано feature_version меньше, чем (3, 8). Исправление от Shantanu Jain.

  • gh-94739: Позволяет переходить внутри, вне и между обработчиками исключений в отладчике.

  • gh-94949: ast.parse() больше не будет разбирать контекстные менеджеры со скобками, если передано feature_version меньше, чем (3, 9). Исправление от Shantanu Jain.

  • gh-94947: ast.parse() больше не будет разбирать выражения присваивания, если передано feature_version меньше, чем (3, 8). Исправление от Shantanu Jain.

  • gh-91256: Гарантирует, что имя программы будет известно для текста справки при запуске интерпретатора.

  • gh-94869: Исправление смещения столбцов для некоторых выражений в многострочных узлах f-строк ast. Исправление от Пабло Галиндо.

  • gh-94893: Исправление проблемы, при которой манипуляции с фреймовыми объектами могли повреждать кэши встроенного байткода.

  • gh-94822: Исправление проблемы, когда поиск дескрипторов метаклассов мог игнорироваться, если атрибут с таким же названием существовал и в самом классе.

  • gh-91153: Исправлена проблема, из-за которой назначение элемента bytearray могло аварийно завершаться, если его размер изменялся методом __index__() нового значения.

  • gh-90699: Исправление ошибки подсчета ссылок в bool.__repr__(). Исправление сделано Кумаром Адитьей.

  • gh-94694: Исправление проблемы, из-за которой код с многострочным поиском методов мог содержать недостоверную или неправильную информацию о смещении столбцов. В некоторых случаях (при компиляции собранного вручную AST) это могло привести к аварийному завершению работы интерпретатора.

  • gh-93252: Исправление проблемы, из-за которой внутренние кадры не успевали отработать неудачные вызовы функций Python, что могло привести к утечкам памяти или жестким сбоям интерпретатора.

  • gh-94215: Исправление проблемы, при которой исключения, вызванные событиями трассировки строк, приводили к тому, что фреймы оставались в недопустимом состоянии, что могло привести к аварийному завершению работы интерпретатора.

  • gh-92228: Отключите оптимизацию компилятора inline-small-exit-blocks для блоков выхода, связанных со строками исходного кода. Это исправляет ошибку, когда отладчик не мог определить, где заканчивается обработчик исключений и начинается следующий блок кода.

  • gh-94485: Номер строки инструкции RESUME модуля устанавливается в 0, как указано в PEP 626.

  • gh-94438: Учет инструкций, которые могут выталкивать NULL в стек при установке номера строки в кадре. Предотвращает некоторые (маловероятные) сбои.

  • gh-91719: Перезагружает opcode при поднятии unknown opcode error в главном цикле интерпретатора, чтобы компиляторы C могли самостоятельно генерировать код диспетчеризации.

  • gh-94329: Скомпилируйте и запустите код с распаковкой очень больших последовательностей (1000 элементов). Такой код не удавалось скомпилировать. Теперь он компилируется и выполняется правильно.

  • gh-94360: Исправлено падение токенизатора при чтении кодированных файлов с синтаксическими ошибками из stdin с текстом в кодировке не utf-8. Исправление от Pablo Galindo

  • gh-88116: Исправление проблемы при чтении номеров строк из объектов кода, если кодированные номера строк близки к INT_MIN. Исправление от Pablo Galindo

  • gh-94262: Не создавайте объекты фреймов для неполных фреймов. Предотвращает создание генераторов и замыканий от наблюдения за расширениями Python и C, восстанавливая поведение 3.10 и более ранних версий.

  • gh-94192: Исправлена ошибка для словарных литералов с недопустимым выражением в качестве значения.

  • gh-87995: Экземпляры types.MappingProxyType теперь хэшируются, если базовое отображение является хэшируемым.

  • gh-93883: Пересмотрите стратегию отображения улучшенных мест ошибок при трассировке. Индикаторы отображаются только в том случае, если местоположение не занимает всю строку.

  • gh-94163: Добавьте инструкции BINARY_SLICE и STORE_SLICE для более эффективной обработки и лучшей специализации операций нарезки, когда нарезка явно указана в исходном коде.

  • gh-94021: Исправьте предупреждение о недоступном коде в Python/specialize.c.

  • gh-93911: Специализировать LOAD_ATTR для предметов с пользовательскими __getattribute__.

  • gh-93955: Улучшение производительности поиска атрибутов у объектов с пользовательскими __getattribute__ и __getattr__. Исправление от Кена Джина.

  • gh-93911: Специализировать LOAD_ATTR для атрибутов property().

  • gh-93678: Переработайте код оптимизации компилятора так, чтобы ему больше не требовались передаваемые struct assembler и struct compiler. Вместо этого каждая функция берет CFG и другие данные, которые ей действительно нужны. Это позволит тестировать этот код напрямую.

  • gh-93841: При сборке с -enable-pystats, sys._stats_on(), sys._stats_off(), sys._stats_clear() и sys._stats_dump() были добавлены функции, позволяющие собирать статистику для частей программ.

  • gh-93516: Хранит смещение первой отслеживаемой инструкции в объекте кода, чтобы избежать необходимости вычислять его для каждой инструкции при трассировке.

  • gh-93516: Лениво создайте таблицу, сопоставляющую смещения байткода с номерами строк, чтобы ускорить вычисление номеров строк при трассировке.

  • gh-89828: types.GenericAlias больше не передает атрибут __class__. Например, isinstance(list[int], type) больше не возвращает True.

  • gh-93678: Рефакторинг компилятора, чтобы уменьшить количество шаблонов и повторений.

  • gh-93671: Исправление некоторых случаев экспоненциального бэктрейса, возникающих при использовании глубоко вложенных шаблонов последовательностей в операторах соответствия. Исправление от Pablo Galindo

  • gh-93662: Убедитесь, что смещение конечного столбца корректно в многострочных вызовах методов. Ранее конечный столбец мог предшествовать смещению столбца.

  • gh-93461: importlib.invalidate_caches() теперь отбрасывает записи из sys.path_importer_cache с относительным путем в качестве имени. Это решает проблему кэширования, когда процесс меняет текущий рабочий каталог.

    FileFinder больше не вставляет точку в путь, например, /egg/./spam теперь /egg/spam.

  • gh-93621: Измените порядок выполнения инструкций байткода для with и async with, чтобы уменьшить количество записей в таблице исключений.

  • gh-93533: Уменьшите размер инлайн-кэша для LOAD_METHOD на 2 байта.

  • gh-93444: Удалены лишние поля из структуры basicblock компилятора: b_nofallthrough, b_exit, b_return. Их можно легко вычислить из опкода последней инструкции блока.

  • gh-93429: Инструкция LOAD_METHOD была удалена. Она была объединена обратно в LOAD_ATTR.

  • gh-93418: Исправлена ошибка, когда в f-строке после выражения стоял знак равенства „=“, но не было скобки в конце. Например, f«{i=»».

  • gh-93382: Кэшируйте результат функции PyCode_GetCode(), чтобы восстановить O(1) поиск атрибута co_code.

  • gh-93359: Убедитесь, что пользовательские узлы ast без явных конечных позиций могут быть скомпилированы. Исправление от Пабло Галиндо.

  • gh-93356: Код для обработчиков исключений выдается в конце байткода кодовой единицы. Это позволяет избежать одного прыжка, если исключение не было вызвано.

  • gh-93354: Использовать экспоненциальный бэк-офф для счетчиков специализаций в интерпретаторе. Позволяет значительно сократить количество неудачных специализаций и избежать замедления работы тех частей программы, которые не подходят для специализации.

  • gh-93283: Улучшено сообщение об ошибке при неправильном синтаксисе символа преобразования в выражениях f-строк.

  • gh-93345: Исправление сбоя при замене TypeVar во вложенном родовом псевдониме после TypeVarTuple.

  • gh-93223: Когда инструкция байткода переходит к инструкции безусловного перехода, первая инструкция часто может быть оптимизирована для прямого обращения к цели безусловного перехода. По причинам трассировки раньше это происходило только в том случае, если обе инструкции имели одинаковый номер строки. Теперь это также происходит, если безусловный переход является искусственным, т. е. не имеет связанного с ним номера строки.

  • gh-84694: Опция конфигурации --experimental-isolated-subinterpreters и макрос EXPERIMENTAL_ISOLATED_SUBINTERPRETERS были удалены.

  • gh-91924: Исправьте возможность отладки __lltrace__, если кодировка stdout не UTF-8. Исправление от Виктора Стиннера.

  • gh-93040: Обертывает неиспользуемые параметры в Objects/obmalloc.c с Py_UNUSED.

  • gh-93143: Избегайте проверок NULL на наличие неинициализированных локальных переменных, определяя во время компиляции, какие переменные должны быть инициализированы.

  • gh-93061: Переходы назад после циклов async for больше не получают сомнительные номера строк.

  • gh-93065: Исправьте реализацию HAMT для обработки итерации над глубокими деревьями.

    Ошибка была обнаружена и исправлена Эли Либманом. Более подробную информацию см. в разделе MagicStack/immutables#84.

  • gh-93012: Добавлена новая функция PyType_FromMetaclass(), которая обобщает существующую PyType_FromModuleAndSpec(), используя дополнительный аргумент метакласса. Это полезно для инструментов связывания языков, где можно перехватить операции, связанные с типом, такие как подклассификация или статический доступ к атрибутам, указав метакласс с пользовательскими слотами.

    Важно отметить, что PyType_FromMetaclass() доступен в Limited API, что открывает путь к переносу большего количества инструментов связывания на Stable ABI.

  • gh-93021: Исправьте методы __text_signature__ для __get__(), реализованные на C. Исправление от Jelle Zijlstra.

  • gh-89914: Операнд инструкции YIELD_VALUE устанавливается в глубину стека. Это делается для облегчения обработки фреймов на yield и может помочь отладчикам.

  • gh-92955: Исправьте утечку памяти в итераторах линий и позиций объекта кода, поскольку они не были завершены при выходе. Исправление Кумара Адитьи.

  • gh-92930: Исправлен сбой в _pickle.c при мутировании коллекций во время __reduce__ или persistent_id.

  • gh-90690: Инструкция PRECALL была удалена. Она давала лишь небольшое преимущество при специализации и не нужна в подавляющем большинстве случаев.

  • gh-92914: Всегда округляйте выделенный размер для списков до ближайшего четного числа.

  • gh-92858: Улучшено сообщение об ошибке для некоторых наборов с синтаксической ошибкой перед „:“

  • gh-90473: Уменьшение стандартного предела рекурсии в WASI для решения проблемы ограниченного размера стека вызовов.

  • gh-92804: Исправьте утечку памяти в итераторе memoryview, поскольку он не финализировался при выходе. Исправление от Kumar Aditya.

  • gh-92777: Специализируйте LOAD_METHOD для объектов с ленивыми словарями. Исправление от Кена Джина.

  • gh-92658: Добавляет поддержку подключения и привязки к сокетам Hyper-V на хостах и гостях Windows Hyper-V.

  • gh-92236: Устраняет ложное событие «LINE» при запуске генератора или coroutine, видимые функции трассировки, реализованные на C.

  • gh-91102: _warnings.warn_explicit() переносится в Клинику аргументов.

  • gh-92619: Заставляет компилятор дублировать блок выхода только в том случае, если ни одна из его инструкций не имеет lineno (ранее проверялась только первая инструкция в блоке, что приводило к ненужному дублированию блоков).

  • gh-88750: Устаревшая переменная окружения debug build only PYTHONTHREADDEBUG больше ничего не делает.

  • gh-92261: Исправьте зависание при попытке итерации над typing.Union.

  • gh-91432: Специализация опкода FOR_ITER с использованием механизма PEP 659

  • gh-91399: Удалена дублирующая запись „{0, 0, 0, 0, 0, 0, 0}“ в „Objects/unicodetype_db.h“.

  • gh-91578: Обновляет сообщение об ошибке для абстрактного класса.

  • bpo-47091: Улучшите производительность повторения list и tuple, используя memcpy для копирования данных и выполняя приращение ссылок за один шаг.

  • bpo-46142: Сделайте вывод --help короче, переместив часть информации в новые опции командной строки --help-env и --help-xoptions. Также добавьте опцию --help-all для вывода полного использования.

  • bpo-42316: Документируйте некоторые места, где выражение присваивания нуждается в круглых скобках.

Библиотека

  • gh-89237: Исправьте зависание на Windows в subprocess.wait_closed() в asyncio с ProactorEventLoop. Исправление от Kumar Aditya.

  • gh-97928: tkinter.Text.count() теперь вызывает исключение для опций, начинающихся с «-», вместо того, чтобы молча игнорировать их.

  • gh-98393: Модуль os больше не принимает байтовые пути, такие как типы bytearray и memoryview: для байтовых строк принимается только точный тип bytes. Исправление Виктора Стиннера.

  • gh-98363: Добавлена функция itertools.batched() для пакетной обработки данных в списках заданной длины, причем последний список может быть короче остальных.

  • gh-98331: Обновите поставляемые в комплекте копии pip и setuptools до версий 22.3 и 65.5.0 соответственно.

  • gh-98307: Метод createSocket() был добавлен в SysLogHandler.

  • gh-96035: Исправление ошибки в urllib.parse.urlparse(), из-за которой некоторые номера портов, содержащие пробелы, символы подчеркивания, знаки плюс и минус или цифры, не являющиеся символами ASCII, принимались неверно.

  • gh-98257: Сделайте функции sys.setprofile() и sys.settrace() реентерабельными. Они больше не могут выходить из строя с помощью: RuntimeError("Cannot install a trace function while another trace function is being installed"). Исправление от Виктора Стиннера.

  • gh-98251: Разрешить venv передавать переменные PYTHON* в ensurepip и pip, если они не влияют на разрешение пути

  • gh-94597: Устаревшие методы asyncio.AbstractEventLoopPolicy.get_child_watcher() и asyncio.AbstractEventLoopPolicy.set_child_watcher() будут удалены в Python 3.14. Исправление от Kumar Aditya.

  • gh-98178: В macOS исправлено падение syslog.syslog() в многопоточных приложениях. На macOS функция libc syslog() не является потокобезопасной, поэтому syslog.syslog() больше не освобождает GIL для ее вызова. Исправление Виктора Стиннера.

  • gh-44098: Освобождение GIL при создании объектов mmap.mmap на Unix.

  • gh-87730: Последовательное обертывание сетевых ошибок в поддержке urllib FTP, чтобы тестовый набор не проваливался, когда сеть доступна, но публичный интернет недоступен.

  • gh-94597: Классы дочерних наблюдателей MultiLoopChildWatcher, FastChildWatcher и SafeChildWatcher являются устаревшими и будут удалены в Python 3.14. Исправление Кумара Адитьи.

  • gh-98023: Измените значение дочернего наблюдателя по умолчанию на PidfdChildWatcher в системах Linux, которые его поддерживают. Исправление от Кумара Адитьи.

  • gh-90985: Ранее в версии 3.11 мы обесценили asyncio.Task.cancel("message"). Мы поняли, что были слишком строги, и отменили его.

  • gh-65961: Не полагайтесь только на __cached__ в модулях; код также будет поддерживать __spec__.cached.

  • gh-97646: Замените устаревший application/javascript на text/javascript в mimetypes. См. RFC 9239. Исправление Ноама Коэна.

  • gh-97930: Примените изменения из importlib_resources 5.8 и 5.9: Traversable.joinpath предоставляет конкретную реализацию. as_file теперь поддерживает каталоги ресурсов.

  • gh-97850: Удалите устаревшие importlib.util.set_loader() и importlib.util.module_for_loader() из importlib.util.

  • gh-97837: Измените предупреждение deprecate в unittest с

    It is deprecated to return a value!=None

    на

    It is deprecated to return a value that is not None from a test case

  • gh-97825: Исправляет AttributeError, когда subprocess.check_output() используется с аргументом input=None и используется один из аргументов encoding или errors.

  • gh-97008: Предложения по написанию NameError и AttributeError, предоставленные с gh-82711, теперь также выдаются модулем чистого Python traceback. Тесты для этих предложений теперь проверяют обе реализации, чтобы убедиться в их эквивалентности. Исправление Карла Фридриха Больц-Терейка и Лукаша Ланги.

  • gh-97799: dataclass теперь использует inspect.get_annotations() для изучения аннотаций на объектах класса.

  • gh-97781: Удалены устаревшие интерфейсы в importlib.metadata (точки входа, доступные как словарь, неявное построение словаря из последовательности объектов EntryPoint, мутабельность результата EntryPoints, доступ к точке входа по индексу). В entry_points теперь есть более простой и понятный API (возвращение EntryPoints).

  • gh-96827: Избегайте ложных возвратов из asyncio, когда очистка исполнителя по умолчанию откладывается до закрытия цикла событий (например, в результате прерывания клавиатуры).

  • gh-95534: gzip.GzipFile.read() читает на 10 % быстрее.

  • gh-97592: Избежать сбоя в C-версии asyncio.Future.remove_done_callback() при передаче дурного аргумента.

  • gh-97639: Снимите чек tokenize.NL с tabnanny.

  • gh-97545: Заставить семафор работать быстрее.

  • gh-73588: Исправлена генерация имени по умолчанию для tkinter.Checkbutton. Ранее флажки в разных родительских виджетах могли иметь одинаковое короткое имя и иметь одинаковое состояние, если не были указаны аргументы «name» и «variable». Теперь они глобально уникальны.

  • gh-96865: исправить Флаг для использования границы CONFORM

    Это восстанавливает прежнее поведение флагов, позволяющее объединять флаги с непоследовательными значениями; например

    class Skip(Flag): 2 = 2 8 = 8

    Skip.TWO | Skip.EIGHT -> <Skip.TWO|EIGHT: 10>

  • gh-97005: Обновление libexpat до версии 2.4.9

  • gh-85760: Исправление состояния гонки в asyncio, когда process_exited() вызывался раньше pipe_data_received(), что приводило к несогласованному выводу. Исправление сделано Кумаром Адитьей.

  • gh-96704: Передайте правильное значение contextvars.Context, когда обработчик исключений asyncio вызывается от имени задачи или обработчика обратного вызова. Это добавляет новый метод Task, get_context, а также новый метод Handle с тем же именем. Если этот метод не найден в объекте задачи (возможно, потому что это сторонняя библиотека, которая еще не предоставляет такой метод), используется контекст, преобладающий на момент вызова обработчика исключений.

  • gh-96819: Исправлена проверка в multiprocessing.resource_tracker, гарантирующая, что длина записи в трубу не превышает PIPE_BUF.

  • gh-95865: Сократите использование памяти urllib.parse.quote_from_bytes() при больших значениях.

    Внесено Деннисом Суини.

  • gh-96741: Исправлена аннотация типа для атрибута dataclass pstats.FunctionProfile.ncalls на str.

  • gh-96734: Обновление базы данных unicodedata до версии Unicode 15.0.0.

  • gh-96735: Исправьте неопределенное поведение в struct.unpack().

  • gh-46412: Улучшение производительности bool(db) для больших баз данных ndb/gdb. Раньше для этого вызывался len(db), который перебирал все ключи - ответ (пустой или нет) был известен после первого ключа.

  • gh-96652: Исправьте реализацию фаултхандлера faulthandler.register(signal, chain=True), если функция sigaction() недоступна: не вызывайте предыдущий обработчик сигнала, если он NULL. Исправление Виктора Стиннера.

  • gh-68163: Правильное преобразование numbers.Rational в float.

  • gh-96538: Ускорьте работу функций bisect.bisect(), используя преимущества стабильности типов.

  • gh-96465: Дробные хэши теперь кэшируются.

  • gh-96079: В typing исправьте отсутствующее поле name и неправильное __module__ в _AnnotatedAlias.

  • gh-96415: Удалите types._cell_factory из пространства имен модуля.

  • gh-95987: Исправьте repr из Any подклассов.

  • gh-96388: Работа над отсутствующими функциями сокетов в socket в __repr__.

  • gh-96385: Исправьте TypeVarTuple.__typing_prepare_subst__. TypeError не поднимался при использовании более одного TypeVarTuple, как и [*T, *V] в подстановках псевдонимов типов.

  • gh-96142: Добавьте match_args, kw_only, slots и weakref_slot к _DataclassParams.

  • gh-96073: В inspect исправьте излишнюю замену «typing.» в аннотациях форматирования.

  • gh-89258: В logging.Logger добавлен метод getChildren() для получения ближайших дочерних логгеров логгера.

  • gh-96346: Используйте двойное кэширование для скомпилированных шаблонов RE.

  • gh-96349: Исправлена незначительная регрессия производительности в threading.Event.__init__()

  • gh-90467: Исправьте asyncio.streams.StreamReaderProtocol, чтобы сохранить сильную ссылку на созданную задачу, чтобы она не собиралась в мусор

  • gh-96172: Исправление ошибки в unicodedata: east_asian_width возвращала неверное значение для неназначенных символов; и для еще неназначенных, но зарезервированных символов.

  • gh-96159: Исправление регрессии производительности в логировании TimedRotatingFileHandler. Проверяет наличие специальных файлов только по истечении времени поворота.

  • gh-96175: Исправьте неиспользуемый параметр localName в классе Attr в xml.dom.minidom.

  • gh-96145: Добавьте AttrDict в модуль JSON для использования с object_hook.

  • gh-96052: Исправлена обработка предупреждений компилятора (SyntaxWarning и DeprecationWarning) в codeop.compile_command() при проверке на неполный ввод. Ранее он выдавал предупреждения и вызывал ошибку SyntaxError. Теперь он всегда возвращает None для неполного ввода, не выдавая никаких предупреждений.

  • gh-96125: Исправление некорректного состояния, приводящего к ошибке sys.thread_info.name на платформах pthread.

  • gh-96019: Исправлена ошибка в скрипте makeunicodedata.py, приводящая к экономии около 13 килобайт места в модуле unicodedata, в частности, в данных о разложении символов.

  • gh-95463: Удалите несовместимое изменение из bpo-28080, которое вызывало регрессию, игнорирующую utf8 в ZipInfo.flag_bits. Исправление от Пабло Галиндо.

  • gh-69142: Добавьте %:z код формата strftime (генерирует tzoffset с двоеточиями в качестве разделителя), см. strftime() и strptime() Поведение.

  • gh-95899: Исправьте asyncio.Runner, чтобы он вызывал asyncio.set_event_loop() только один раз, чтобы избежать многократного вызова attach_loop() на дочерних наблюдателях. Исправление Кумара Адитьи.

  • gh-95736: Исправьте unittest.IsolatedAsyncioTestCase, чтобы установить цикл событий перед вызовом функций настройки. Исправление от Kumar Aditya.

  • gh-95865: Ускорьте urllib.parse.quote_from_bytes(), заменив списочное понимание на map().

  • gh-95861: Добавьте поддержку вычисления коэффициента корреляции Спирмена в существующую функцию statistics.correlation().

  • gh-95804: Исправьте обработчик выключения logging, чтобы он уважал MemoryHandler.flushOnClose.

  • gh-95704: Когда задача ловит asyncio.CancelledError и вызывает другую ошибку, эта ошибка, как правило, не должна молча подавляться.

  • gh-95149: Перечисление HTTPStatus предлагает несколько свойств для указания категории статуса HTTP, например HTTPStatus.OK.is_success.

  • gh-95609: Обновление поставляемого pip до версии 22.2.2.

  • gh-95289: Исправление asyncio.TaskGroup для распространения исключения, когда asyncio.CancelledError был заменен на другое исключение менеджером контекста. Исправление Кумара Адитьи и Гвидо ван Россума.

  • gh-94909: Исправлено некорректное объединение относительных путей Windows с дисками в инициализаторе pathlib.PurePath.

  • gh-95385: Быстрее json.dumps(), если сортировка ключей не запрашивается (по умолчанию).

  • gh-83901: Улучшите сообщение об ошибке Signature.bind при отсутствии аргументов, относящихся только к ключевым словам.

  • gh-95339: Обновление поставляемого pip до версии 22.2.1.

  • gh-95045: Исправление сбоя GC при деаллоцировании _lsprof.Profiler путем снятия с него трекинга перед вызовом обратных вызовов. Исправление от Kumar Aditya.

  • gh-95231: Изящно откажитесь, если при загрузке методов crypt будет поднята ошибка EPERM или ENOSYS. Это может произойти при попытке загрузить MD5 на ядре Linux с включенным FIPS.

  • gh-95097: Исправьте asyncio.run() для реализаций asyncio.Task без метода uncancel(). Исправление от Kumar Aditya.

  • gh-95087: Исправление IndexError при разборе недействительной даты в модуле email.

  • gh-95199: Обновление поставляемых setuptools до версии 63.2.0.

  • gh-95194: Обновление поставляемого pip до версии 22.2.

  • gh-93899: Исправлена проверка наличия флагов os.EFD_CLOEXEC, os.EFD_NONBLOCK и os.EFD_SEMAPHORE на старых версиях ядра, где эти флаги отсутствуют. Исправление Кумара Адитьи.

  • gh-95166: Исправьте concurrent.futures.Executor.map(), чтобы отменить текущее ожидание при ошибке - например, TimeoutError или KeyboardInterrupt.

  • gh-95132: Исправление регрессии sqlite3, при которой *args и **kwds неверно передавались из connect() в фабрику Connection. Регрессия была внесена в 3.11a1 с PR 24421 (gh-85128). Исправление Эрленда Э. Аасланда.

  • gh-93157: Исправьте, что модуль fileinput не поддерживал опцию errors, когда inplace был истинным.

  • gh-91212: Исправлено мерцание окна черепахи при выключении трассировки. Исправление от Shin-myoung-serp.

  • gh-95077: Добавить предупреждение об устаревании для доступа к enum member.member (например, Color.RED.BLUE). Удалить EnumMeta.__getattr__.

  • gh-95109: Убедитесь, что тайм-ауты, запланированные с помощью asyncio.Timeout, которые уже истекли, будут доставлены своевременно.

  • gh-95105: wsgiref.types.InputStream.__iter__() должно возвращать Iterator[bytes], а не Iterable[bytes]. Исправление от Shantanu Jain.

  • gh-95066: Заменено утверждение на исключение в ast.parse(), когда feature_version имеет недопустимую мажорную версию. Исправление от Shantanu Jain.

  • gh-77617: Добавить sqlite3 command-line interface. Исправление Эрленда Аасланда.

  • gh-95005: Замените _PyAccu на _PyUnicodeWriter в кодировщике JSON и StringIO и удалите реализацию _PyAccu.

  • gh-90085: Удалите -c/--clock и -t/--time. Опции CLI из timeit. Эти опции были устаревшими с Python 3.3, а в Python 3.7 их функциональность была удалена. Исправление от Shantanu Jain.

  • gh-94857: Исправьте refleak в _io.TextIOWrapper.reconfigure. Исправление от Kumar Aditya.

  • gh-94821: Исправьте привязку unix-сокета к пустому адресу в Linux, чтобы использовать доступный адрес из абстрактного пространства имен, а не «0».

  • gh-94736: Исправление сбоя при деаллокации экземпляра подкласса _multiprocessing.SemLock. Исправление Кумара Адитьи.

  • gh-81620: Добавить random.binomialvariate().

  • gh-74116: Разрешите asyncio.StreamWriter.drain() ожидать одновременно нескольким задачам. Исправление Кумара Адитьи.

  • gh-87822: При вызове с capture_locals=True функции модуля traceback проглатывают исключения, возникающие при вызове repr() на локальных переменных фреймов. Это делается для того, чтобы приоритет отдавался исходному исключению, а не ошибкам рендеринга. Вместо отсутствующего значения выводится признак сбоя. (Исправление Симона-Мартина Шредера).

  • gh-88050: Исправьте перенос подпроцесса asyncio, чтобы убивать процесс, когда он заблокирован, и избежать RuntimeError, когда цикл закрыт. Исправление Кумара Адитьи.

  • gh-94637: SSLContext.set_default_verify_paths() теперь освобождает GIL вокруг вызова SSL_CTX_set_default_verify_paths. Вызов функции выполняет работу, связанную с вводом-выводом и интенсивной работой процессора.

  • gh-94309: Утратить псевдонимы typing.Hashable и typing.Sized.

  • gh-92546: Недокументированный бенчмарк python -m pprint перенесен в набор pprint пакета pyperformance. Исправление Олега Иарыгина.

  • gh-94607: Исправление подклассификации сложных дженериков с переменными типа в typing. Ранее выдавалось сообщение об ошибке Some type variables ... are not listed in Generic[...]. typing больше не заполняет __parameters__ данными __parameters__ класса Python.

  • gh-94619: Удалите давно устаревший module_repr() из importlib.

  • gh-93910: Возможность доступа к другим значениям перечисления в перечислении (например, Color.RED.BLUE) была восстановлена, чтобы исправить регресс производительности.

  • gh-93896: Исправьте asyncio.run() и unittest.IsolatedAsyncioTestCase, чтобы они всегда выполняли цикл события set, как это было в Python 3.10 и более ранних версиях. Исправление Кумара Адитьи.

  • gh-94343: Разрешить установку атрибутов reprlib.Repr при инициализации объекта

  • gh-94382: Перенос статических типов модуля _multiprocessing в типы кучи. Исправление Кумара Адитьи.

  • gh-78724: Исправление сбоя в struct.Struct, когда он не был полностью инициализирован, путем инициализации в __new__(). Исправление от Kumar Aditya.

  • gh-94510: Ре-энтри коллы на sys.setprofile() и sys.settrace() теперь повышают RuntimeError. Исправление от Пабло Галиндо.

  • gh-92336: Исправлена ошибка, из-за которой linecache.getline() не срабатывал в плохих файлах с UnicodeDecodeError или SyntaxError. Теперь она возвращает пустую строку, как указано в документации.

  • gh-94398: После того как группа задач asyncio.TaskGroup начала завершать работу (т. е. хотя бы одна задача завершилась неудачей, и группа задач начала отменять оставшиеся задачи), добавление новых задач в группу задач должно быть невозможным.

  • gh-94383: xml.etree: Удалите метод ElementTree.Element.copy() из чисто питоновской реализации, устаревший в Python 3.10, вместо него используйте функцию copy.copy(). В реализации xml.etree на C нет метода copy(), есть только метод __copy__(). Исправление Виктора Стиннера.

  • gh-94379: zipimport: Удалите методы find_loader() и find_module(), устаревшие в Python 3.10: вместо них используйте метод find_spec(). Обоснование смотрите в PEP 451. Исправление Виктора Стиннера.

  • gh-94352: shlex.split(): Передача None для аргумента s теперь вызывает исключение, а не чтение sys.stdin. Эта возможность была устаревшей в Python 3.9. Исправление Виктора Стиннера.

  • gh-94318: Удаление пробелов в конце текста pydoc.

  • gh-89988: Исправьте утечку памяти в pickle.Pickler при просмотре dispatch_table. Исправление от Kumar Aditya.

  • gh-90016: Утратить актуальность sqlite3 default adapters and converters. Исправление Эрленда Э. Аасланда.

  • gh-94254: Исправлены типы модуля struct на неизменяемые. Исправление Кумара Адитьи.

  • gh-93259: Теперь поднимает ValueError, когда None или пустая строка передаются Distribution.from_name (и другим вызывающим устройствам).

  • gh-74696: shutil.make_archive() теперь передает аргумент root_dir пользовательским архиваторам, которые его поддерживают.

  • gh-94216: Модуль dis теперь содержит опкоды для псевдоинструкций (те, которые используются компилятором во время генерации кода, но затем удаляются или заменяются реальными опкодами перед выдачей окончательного байткода).

  • gh-93096: Удалена недокументированная python -m codecs. Вместо него используйте python -m unittest test.test_codecs.EncodedFileTest.

  • gh-94207: Сделано _struct.Struct GC-трекинг, чтобы исправить утечку ссылок в модуле _struct.

  • gh-93096: Удален недокументированный аргумент -t из python -m base64. Вместо него используйте python -m unittest test.test_base64.LegacyBase64TestCase.test_encodebytes.

  • gh-94226: Удалите функцию locale.format(), устаревшую в Python 3.7: вместо нее используйте locale.format_string(). Исправление Виктора Стиннера.

  • gh-94199: Удалите функцию ssl.match_hostname(). Функция ssl.match_hostname() была устаревшей в Python 3.7. OpenSSL выполняет сопоставление имен хостов начиная с Python 3.7, Python больше не использует функцию ssl.match_hostname(). Исправление Виктора Стиннера.

  • gh-94214: Документируйте объект context, используемый в классе venv.EnvBuilder, и добавьте к нему путь к библиотеке нового окружения.

  • gh-94199: Уберите функцию ssl.wrap_socket(), устаревшую в Python 3.7: вместо этого создайте объект ssl.SSLContext и вызовите его метод ssl.SSLContext.wrap_socket. Любой пакет, который все еще использует ssl.wrap_socket(), сломан и небезопасен. Функция не отправляет расширение SNI TLS и не проверяет имя хоста сервера. Код подвержен CWE-295 Неправильной проверке сертификатов. Исправление от Виктора Стиннера.

  • gh-94199: Удалите функцию ssl.RAND_pseudo_bytes(), устаревшую в Python 3.6: вместо нее используйте os.urandom() или ssl.RAND_bytes(). Исправление Виктора Стиннера.

  • gh-94199: hashlib: Удалите чисто питоновскую реализацию hashlib.pbkdf2_hmac(), устаревшую в Python 3.10. Для Python 3.10 и новее требуется OpenSSL 1.1.1 (PEP 644): эта версия OpenSSL обеспечивает реализацию pbkdf2_hmac() на C, которая работает быстрее. Исправление Виктора Стиннера.

  • gh-94196: gzip: Удалите атрибут filename из gzip.GzipFile, устаревший с Python 2.6, вместо него используйте атрибут name. В режиме записи атрибут filename добавлял расширение файла '.gz', если оно отсутствовало. Исправление Виктора Стиннера.

  • gh-94182: запустить asyncio.PidfdChildWatcher на работающем цикле; это позволяет циклам событий запускать подпроцессы, если в главном потоке не запущен цикл событий по умолчанию

  • gh-94169: Удалите io.OpenWrapper и _pyio.OpenWrapper, устаревшие в Python 3.10: вместо них используйте open(). Функция open() (io.open()) является встроенной функцией. Начиная с Python 3.10, _pyio.open() также является статическим методом. Исправление Виктора Стиннера.

  • gh-91742: Исправление падения pdb после перехода, вызванного разыменованием нулевого указателя. Автор исправления - Кумар Адитья.

  • gh-94101: Ручное инстанцирование объектов ssl.SSLSession больше не допускается, так как это приводило к неправильной конфигурации экземпляров, что при обращении к ним с атрибутами приводило к аварийному завершению работы интерпретатора.

  • gh-84753: inspect.iscoroutinefunction(), inspect.isgeneratorfunction() и inspect.isasyncgenfunction() теперь корректно возвращают True для утино-типизированных функционально-подобных объектов, таких как экземпляры unittest.mock.AsyncMock.

    Это делает inspect.iscoroutinefunction() совместимым с поведением asyncio.iscoroutinefunction(). Исправление от Mehdi ABAAKOUK.

  • gh-94028: Исправление регрессии в sqlite3, когда объекты операторов не очищались и не сбрасывались после использования в курсорных итерах. Регрессия была введена в PR 27884 в Python 3.11a1. Исправление Эрленда Э. Аасланда.

  • gh-93973: Добавьте ключевое слово-аргумент all_errors к asyncio.create_connection, чтобы несколько ошибок подключения могли быть вызваны как ExceptionGroup.

  • gh-93963: Официально устаревшие классы из importlib.abc перенесены в importlib.resources.abc.

  • gh-93858: Предотвращение ошибки при активации venv во вложенных экземплярах рыбы.

  • gh-93820: Выбирайте enum.Flag по имени.

  • gh-93847: Исправьте повтор перечисления общих псевдонимов.

  • gh-91404: Верните утечку памяти в re, когда матч завершается по сигналу или ошибке выделения памяти, так как реализованное исправление привело к значительному снижению производительности.

  • gh-83499: Исправьте двойное закрытие описания файла в tempfile.

  • gh-93820: Исправлена регрессия, когда copy.copy()-указание enum.Flag имело несколько членов флага.

  • gh-79512: Исправлены имена и значение __module__ классов weakref ReferenceType, ProxyType, CallableProxyType. Это делает их pickleable.

  • gh-91389: Исправлена проблема, из-за которой утилиты dis могли сообщать недостающую или неверную информацию о позиции при наличии записей CACHE.

  • gh-93626: Установите для __future__.annotations значение None mandatoryRelease, чтобы указать, что в настоящее время это «TBD».

  • gh-90473: Emscripten и WASI не имеют домашнего каталога и не могут предоставить PEP 370 каталог сайта пользователя.

  • gh-90494: copy.copy() и copy.deepcopy() теперь всегда выдают ошибку TypeError, если __reduce__() возвращает кортеж с длиной 6, вместо того чтобы молча игнорировать 6-й элемент или выдавать неверный результат.

  • gh-90549: Исправление ошибки многопроцессорной обработки, когда глобальный именованный ресурс (например, семафор) мог утекать при порождении дочернего процесса (в отличие от форка).

  • gh-93521: Исправлена ситуация, когда классы данных пытались добавить __weakref__ в __slots__ для класса данных, указавшего weakref_slot=True, когда он уже был определен в одной из своих баз. Это приводило к появлению TypeError при создании нового класса.

  • gh-79579: sqlite3 теперь корректно определяет DML-запросы с ведущими комментариями. Исправление Эрленда Э. Аасланда.

  • gh-93421: Обновление sqlite3.Cursor.rowcount после завершения выполнения оператора DML. Это исправляет подсчет строк для SQL-запросов типа UPDATE ... RETURNING. Исправление Эрленда Э. Аасланда.

  • gh-93475: Раскрыть константы FICLONE и FICLONERANGE в fcntl. Патч от Illia Volochii.

  • gh-93370: Утратить version и version_info.

  • gh-91810: Подавить запись декларации XML в открытых файлах в ElementTree.write() с encoding='unicode' и xml_declaration=None.

  • gh-91162: Поддержка разбиения распакованного кортежа произвольной длины по параметрам TypeVar и TypeVarTuple. Например:

    • A[T, *Ts][*tuple[int, ...]] -> A[int, *tuple[int, ...]]

    • A[*Ts, T][*tuple[int, ...]] -> A[*tuple[int, ...], int]

  • gh-93353: Исправьте менеджер контекста importlib.resources.as_file() для удаления временного файла, если он был уничтожен поздно во время финализации Python: сохраните локальную ссылку на функцию os.remove(). Исправление Виктора Стиннера.

  • gh-83658: Заставьте multiprocessing.Pool вызывать исключение, если maxtasksperchild не является None или положительным int.

  • gh-93312: Добавьте флаг os.PIDFD_NONBLOCK для открытия дескриптора файла для процесса с os.pidfd_open() в неблокирующем режиме. Исправление Кумара Адитьи.

  • gh-88123: Реализуйте Enum.__contains__, возвращающий True или False, чтобы заменить устаревшее поведение, которое иногда вызывало TypeError.

  • gh-93297: Сделать так, чтобы группы задач asyncio не допускали GCed дочерних задач

  • gh-85308: Изменен argparse.ArgumentParser для использования filesystem encoding and error handler вместо текстовой кодировки по умолчанию для чтения аргументов из файла (например, опция fromfile_prefix_chars). Это изменение влияет на Windows; файл аргументов должен быть закодирован в UTF-8 вместо ANSI Codepage.

  • gh-93156: Доступ к последовательности pathlib.PurePath.parents абсолютного пути с использованием отрицательных значений индексов давал некорректные результаты.

  • gh-93162: Добавьте возможность для logging.config.dictConfig() использовать QueueHandler и QueueListener в качестве пары, а также добавьте logging.getHandlerByName() и logging.getHandlerNames(). API для доступа к обработчикам по имени.

  • gh-93243: Модуль smtpd был удален в соответствии с расписанием в PEP 594.

  • gh-92886: Замените утверждения assert на raise AssertionError() в BaseHandler, чтобы проверенное поведение сохранялось при оптимизации (-O).

  • gh-90155: Исправьте поломку asyncio.Semaphore при отмене приобретения.

  • gh-90817: Функция locale.resetlocale() устарела и будет удалена в Python 3.13. Вместо нее используйте locale.setlocale(locale.LC_ALL, ""). Исправление Виктора Стиннера.

  • gh-91513: Добавлен атрибут taskName в модуль logging для использования с заданиями asyncio.

  • gh-74696: shutil.make_archive() больше не изменяет временно текущий рабочий каталог при создании стандартных .zip или tar-архивов.

  • gh-92728: Функция re.template() и соответствующие флаги re.TEMPLATE и re.T восстановлены после их удаления в версии 3.11.0b1, но теперь они устарели, поэтому могут быть удалены из Python 3.13.

  • gh-93033: Поиск в некоторых строках (зависит от платформы, т.е. [U+0xFFFF, U+0x0100] в Windows или [U+0xFFFFFF, U+0x00010000] в Linux 64-bit) теперь работает в 10 раз быстрее.

  • gh-89973: Исправьте re.error, поднятое в fnmatch, если шаблон содержит диапазон символов, верхняя граница которого меньше нижней (например, [c-a]). Теперь такие диапазоны интерпретируются как пустые.

  • gh-93044: Больше не преобразуйте аргумент базы данных sqlite3.connect() в байты перед передачей его фабрике.

  • gh-93010: В особом случае почтовый пакет пытался добавить в список дефектов несуществующий InvalidHeaderError. Должно было быть InvalidHeaderDefect.

  • gh-92986: Исправьте ast.unparse(), когда ImportFrom.level будет None.

  • gh-92932: Теперь dis() и get_instructions() обрабатывают значения операндов для инструкций с префиксом EXTENDED_ARG_QUICK. Исправление Сэма Гросса и Донгхи На.

  • gh-92675: Исправьте venv.ensure_directories(), чтобы он принимал аргументы pathlib.Path в дополнение к путям str. Исправление Дэвида Фостера.

  • gh-87901: Удален аргумент encoding из os.popen(), который был добавлен в 3.11b1.

  • gh-91922: Исправьте функцию sqlite.connect() и конструктор sqlite.Connection на локали, отличные отUTF-8. Также теперь они поддерживают байтовые пути, не декодируемые в текущей кодировке FS.

  • gh-92869: Добавили c_time_t к ctypes, который имеет тот же размер, что и тип time_t в C.

  • gh-92839: Исправлено падение, возникающее при вызове bisect.insort() или bisect.insort_left() с аргументом key, не равным None.

  • gh-90473: subprocess теперь не срабатывает раньше времени на платформах Emscripten и WASI, чтобы решить проблему отсутствия os.pipe() на WASI.

  • gh-89325: Удалено множество старых устаревших функций unittest: TestCase псевдонимы методов, недокументированный и сломанный TestCase метод assertDictContainsSubset, недокументированный TestLoader.loadTestsFromModule параметр use_load_tests, а также подчеркнутый псевдоним класса TextTestResult.

  • gh-92734: Позволяет многоэлементным репризам, испускаемым reprlib, быть красиво напечатанными с использованием настраиваемого отступа.

  • gh-92671: Исправлено ast.unparse() для пустых кортежей в целевом контексте присваивания.

  • gh-91581: utcfromtimestamp() больше не пытается разрешить fold в чистой реализации Python, поскольку сложение никогда не равно 1 в UTC. Помимо того, что это немного быстрее в общем случае, это также предотвращает некоторые ошибки, когда временная метка близка к datetime.min. Исправление от Paul Ganssle.

  • gh-86388: Удалена функциональность randrange(), устаревшая с Python 3.10. Раньше randrange(10.0) без потерь преобразовывался в randrange(10). Теперь она вызывает ошибку типа TypeError. Кроме того, исключение, возникающее для неинтегральных значений, таких как randrange(10.5) или randrange(„10“), было изменено с ValueError на TypeError.

  • gh-90385: Добавьте pathlib.Path.walk() в качестве альтернативы os.walk().

  • gh-92550: Исправьте pathlib.Path.rglob() для пустого шаблона.

  • gh-92591: Разрешить фильтрам logging возвращать экземпляр logging.LogRecord, чтобы фильтры, подключенные к logging.Handler, могли обогащать записи без побочных эффектов для других обработчиков.

  • gh-92445: Исправлена ошибка в argparse, когда nargs="*" вместо возврата пустого списка при 0 аргументов выдавал ошибку, если выбор был также определен в parser.add_argument.

  • gh-92547: Удалите недокументированные sqlite3 функции, устаревшие в Python 3.10:

    • sqlite3.enable_shared_cache()

    • sqlite3.OptimizedUnicode

    Патч Эрленда Э. Аасланда.

  • gh-92530: Исправление проблемы, возникавшей после прерывания threading.Condition.notify().

  • gh-92531: Функция statistics.median_grouped() теперь всегда возвращает float. Раньше она не преобразовывала тип входных данных, если речь шла о последовательностях длины один.

  • gh-84131: Устаревший метод pathlib.Path link_to был удален. Вместо него используйте метод hardlink_to() из версии 3.10, поскольку его семантика соответствует семантике symlink_to().

  • gh-89336: Удалены API модулей configparser: псевдоним класса SafeConfigParser, свойство и параметр ParsingError.filename и метод ConfigParser.readfp, которые были устаревшими с Python 3.2.

  • gh-92391: Добавьте __class_getitem__() к csv.DictReader и csv.DictWriter, позволяя параметризовать их во время выполнения. Исправление Марка Мюллера.

  • gh-91968: Добавьте константы SO_RTABLE и SO_USER_COOKIE в socket.

  • gh-91810: ElementTree метод write() и функция tostring() теперь используют кодировку текстового файла («UTF-8», если она недоступна) вместо кодировки локали в объявлении XML, когда указано encoding="unicode".

  • gh-81790: os.path.splitdrive() теперь понимает пути к устройствам DOS с UNC-ссылками (начало \\?\UNC\). Внесено Барни Гейлом.

  • gh-91760: Применяются более строгие правила для числовых ссылок на группы и имен групп в регулярных выражениях. Теперь в качестве числовой ссылки принимается только последовательность ASCII-цифр. Имя группы в байтовых шаблонах и строках замены теперь может содержать только буквы и цифры ASCII и знак подчеркивания.

  • gh-90622: Рабочие процессы для concurrent.futures.ProcessPoolExecutor больше не порождаются по требованию (функция, добавленная в 3.9), когда метод запуска многопроцессорного контекста равен "fork", так как это может привести к тупиковым ситуациям в дочерних процессах из-за того, что во время работы потоков произойдет форк.

  • gh-91577: Переместите импорты в методах SharedMemory на уровень модуля, чтобы они могли выполняться на поздних этапах финализации python.

  • gh-91581: Устраните необработанный случай ошибки в реализации на C при вызове datetime.fromtimestamp без указания часового пояса (т. е. при получении локального времени из временной метки эпохи). Это не должно иметь никакого эффекта для пользователя, кроме как дать, возможно, более точное сообщение об ошибке при вызове с временными метками, которые попадают на 10000-01-01 по местному времени. Исправление Пола Гансла.

  • gh-91539: Улучшение производительности urllib.request.getproxies_environment при наличии большого количества переменных окружения

  • gh-91524: Ускоряет подстановку регулярных выражений (функции re.sub() и re.subn() и соответствующие методы re.Pattern) для подстановки строк, содержащих групповые ссылки, в 2–3 раза.

  • gh-91447: Исправьте findtext в модуле xml, чтобы он выдавал пустую строку только в том случае, если атрибут text имеет значение None.

  • gh-91456: Отменяем текущее поведение auto() по умолчанию: В 3.13 по умолчанию auto() будет всегда возвращать наибольшее значение члена, увеличенное на 1, и вызывать ошибку, если используются несовместимые типы значений.

  • bpo-47231: Исправлена проблема с непоследовательными слешами в каталогах длинных имен tarfile.

  • bpo-39064: zipfile.ZipFile теперь поднимает zipfile.BadZipFile вместо ValueError при чтении поврежденного zip-файла, в котором смещение центрального каталога отрицательно.

  • bpo-41287: Исправьте обработку аргумента doc в подклассах property().

  • gh-90005: ctypes зависимость libffi теперь определяется с помощью pkg-config.

  • bpo-32547: Конструкторы для DictWriter и DictReader теперь коэрцитируют аргумент fieldnames в list, если он является итератором.

  • bpo-35540: Исправление сбоя dataclasses.asdict() при наличии collections.defaultdict в атрибутах.

  • bpo-47063: Добавьте параметр index_pages для поддержки использования нестандартных имен страниц индекса.

  • bpo-47025: Прекратите поддержку bytes на sys.path.

  • bpo-46951: Упорядочивает содержимое архивов zipapp, чтобы сделать сборки более воспроизводимыми.

  • bpo-42777: Реализуйте pathlib.Path.is_mount() для путей Windows.

  • bpo-46755: В QueueHandler очистите stack_info от LogRecord, чтобы трассировка стека не была записана дважды.

  • bpo-45393: Исправьте форматирование для await x и not x в таблице старшинства операторов при использовании системы help().

  • bpo-46642: Улучшено сообщение об ошибке при попытке подклассифицировать экземпляр typing.TypeVar, typing.ParamSpec, typing.TypeVarTuple и т. д. Основано на исправлении Грегори Борегара.

  • bpo-46364: Ограничьте использование сокетов вместо труб для stdin подпроцессов, созданных asyncio, только для платформы AIX.

  • bpo-28249: Установите doctest.DocTest.lineno в None, если у объекта нет __doc__.

  • bpo-46197: Исправьте изоляцию окружения ensurepip для подпроцесса, запущенного pip.

  • bpo-45924: Исправление asyncio неправильного возврата трассировки, когда исключение future’s поднималось несколько раз. Исправление Кумара Адитьи.

  • bpo-45046: Добавьте поддержку менеджеров контекста в unittest: методы enterContext() и enterClassContext() класса TestCase, метод enterAsyncContext() класса IsolatedAsyncioTestCase и функцию unittest.enterModuleContext().

  • bpo-44173: Включить быстрый поиск несжатого незашифрованного zipfile.ZipExtFile

  • bpo-42627: Исправление некорректного разбора настроек прокси в реестре Windows

  • bpo-42047: Добавьте threading.get_native_id() поддержку DragonFly BSD. Исправление от Дэвида Карлье.

  • bpo-14243: В функции tempfile.NamedTemporaryFile появился новый необязательный параметр delete_on_close.

  • bpo-41246: Дайте ту же функцию обратного вызова, когда операция перекрытия выполняется для функций recv, recv_into, recvfrom, sendto, send и sendfile внутри IocpProactor.

  • bpo-39264: Исправлено collections.UserDict.get(), чтобы не вызывать __missing__(), когда значение не найдено. Это соответствует поведению dict. Исправление от Bar Harel.

  • bpo-38693: importlib теперь внутренне использует f-строки вместо str.format.

  • bpo-38267: Добавьте параметр timeout к asyncio.loop.shutdown_default_executor(). Значение по умолчанию - None, что означает, что исполнителю будет предоставлено неограниченное количество времени. При вызове из asyncio.Runner или asyncio.run() таймаут по умолчанию равен 5 минутам.

  • bpo-34828: sqlite3.Connection.iterdump() теперь работает с базами данных, использующими AUTOINCREMENT в одной или нескольких таблицах.

  • bpo-32990: Поддержка чтения волновых файлов с форматом WAVE_FORMAT_EXTENSIBLE в модуле wave.

  • bpo-26253: Разрешить настраиваемый уровень сжатия для потоков tarfile в tarfile.open().

Документация

  • gh-85525: Удалить лишний ряд

  • gh-86404: Устаревшие инструменты make suspicious и rstlint.py теперь удалены. Они были заменены на sphinx-lint.

  • gh-97741: Исправьте ! в синтаксисе целевых ссылок домена c помощью патча conf.py, чтобы отключение разрешения целевых ссылок работало как положено.

  • gh-96432: Дробные литералы теперь поддерживают пробелы вокруг прямой косой черты, Fraction('2 / 3').

  • gh-96098: Улучшение открываемости высокоуровневого модуля concurrent.futures путем предоставления более четких ссылок из низкоуровневых модулей threading и multiprocessing.

  • gh-95957: Что нового В версии 3.11 появились инструкции по предоставлению флагов компилятора и компоновщика для Tcl/Tk и OpenSSL на RHEL 7 и CentOS 7.

  • gh-95588: Уточнены противоречивые рекомендации, данные в документации к ast, о том, что ast.literal_eval() «безопасен» для использования на недоверенных входных данных, и в то же время предупреждение о том, что он может привести к краху процесса. Последнее утверждение верно и считается неисправимым без большого объема работы, не подходящей для исправления ошибок. Поэтому мы сохраняем предупреждение и больше не утверждаем, что literal_eval безопасен.

  • gh-91207: Исправление неработающей таблицы стилей в документах Windows CHM htmlhelp и добавление предупреждения о том, что они устарели. Внесено C.A.M. Герлахом.

  • gh-95454: Заменены неправильно написанные значения true/false в документации. Исправление Роберта О’Ши

  • gh-95451: Обновление документации по библиотеке с availability information на платформах WebAssembly wasm32-emscripten и wasm32-wasi.

  • gh-95415: Используйте согласованный синтаксис для определения доступности платформы. Теперь директива поддерживает тело содержимого и выдает предупреждение, если встречает неизвестную платформу.

  • gh-94321: Документируйте тип протокола в стиле PEP 246 sqlite3.PrepareProtocol.

  • gh-86128: Документируйте ограничение в ThreadPoolExecutor, когда его обработчик выхода выполняется раньше всех обработчиков в atexit.

  • gh-61162: Уточните поведение sqlite3, когда Как использовать менеджер контекста соединения.

  • gh-87260: Приведите спецификации аргументов sqlite3 в соответствие с реальной реализацией.

  • gh-86986: Минимальная версия Sphinx, необходимая для создания документации, теперь составляет 3.2.

  • gh-88831: Дополнена документация по asyncio.create_task(). Уточнена необходимость сохранять сильные ссылки на задачи и добавлен фрагмент кода, показывающий, как это сделать.

  • gh-86438: Уточните, что -W и PYTHONWARNINGS в warnings сопоставляются буквально и без учета регистра, а не как регулярные выражения.

  • gh-93031: Обновите вывод введения учебника, чтобы использовать 3.10+ SyntaxError invalid range.

  • gh-92240: Добавлены даты выхода «Что нового в Python 3.X» для 3.0, 3.1, 3.2, 3.8 и 3.10

  • bpo-47161: Документ показывает, что pathlib.PurePath не сворачивает начальные двойные слэши, поскольку они обозначают пути UNC.

  • bpo-40838: Документ о том, что inspect.getdoc(), inspect.getmodule() и inspect.getsourcefile() могут вернуть None.

  • bpo-43689: В документации к Differ теперь упоминаются и другие пробельные символы, что усложняет понимание вывода diff.

  • bpo-38056: Переработайте документацию Обработчики ошибок в codecs.

  • bpo-13553: Документ tkinter.Tk args.

Тесты

  • gh-95027: В Windows при запуске тестового пакета Python с опцией -jN в качестве кодировки временного файла stdout теперь используется кодовая страница ANSI, а не UTF-8, что может привести к ошибкам декодирования. Исправление Виктора Стиннера.

  • gh-96624: Исправлен сбой повторных запусков test.test_unittest, вызванный побочными эффектами в test_dotted_but_module_not_loaded.

  • gh-95243: Устранение состояния гонки, присущего использованию find_unused_port() в testSockName(), путем попытки найти неиспользуемый порт несколько раз, прежде чем произойдет сбой. Исправление Росса Бартона.

  • gh-95573: Lib/test/test_asyncio/test_ssl.py выявил ошибку в ядре macOS, когда интенсивная одновременная нагрузка на неблокирующие сокеты иногда приводит к выдаче сообщения errno.ENOBUFS («Нет свободного места в буфере»). FB11063974 подано в Apple, а тем временем в качестве обходного пути размер буфера, используемого в тестах на macOS, уменьшен, чтобы избежать периодических сбоев. Исправление от Fantix King.

  • gh-95280: Исправление проблемы с test_ssl test_get_ciphers в системах, требующих шифров с идеальной прямой секретностью (PFS).

  • gh-95212: Сделайте многопроцессорный тестовый пример test_shared_memory_recreate параллельно безопасным.

  • gh-95218: Переместите тесты для importlib.resources в test_importlib.resources.

  • gh-93963: Обновлены тесты, чтобы использовать предпочтительное местоположение для importlib.resources. Азбука.

  • gh-94675: Добавьте регрессионный тест на экспоненциальное замедление re при использовании rjsmin.

  • gh-91330: Добавлены дополнительные тесты для dataclasses, чтобы охватить поведение с полями на основе дескрипторов данных.

  • gh-94208: test_ssl теперь проверяет поддерживаемые версии и протоколы TLS в большем количестве тестов.

  • gh-94315: Тесты теперь проверяют возможность переопределения ЦАП вместо того, чтобы полагаться на os.geteuid().

  • gh-54781: Переименуйте test_tk в test_tkinter и переименуйте test_ttk_guionly в test_ttk. Исправление Виктора Стиннера.

  • gh-93839: Переместите Lib/ctypes/test/ в Lib/test/test_ctypes/. Исправление Виктора Стиннера.

  • gh-93951: В test_bdb.StateTestCase.test_skip избегайте включения вспомогательных импортеров.

  • gh-93957: Обеспечьте более приятный отчет об ошибках от подпроцессов в test_venv.EnsurePipTest.test_with_pip.

  • gh-93884: Добавьте тестовые случаи для PyNumber_ToBase(), которые принимают в качестве параметра большое число или неинтовый объект.

  • gh-93852: test_asyncio, test_logging, test_socket и test_socketserver теперь создают домены AF_UNIX в текущем каталоге и больше не выдают ошибку OSError("AF_UNIX path too long"), если временный каталог (переменная окружения TMPDIR) слишком длинный. Исправление Виктора Стиннера.

  • gh-93353: regrtest теперь проверяет, не сливает ли тест временные файлы или каталоги, если он запущен с опцией -jN. Исправление Виктора Стиннера.

  • gh-84461: run_tests.py теперь корректно обрабатывает кросс-компилируемые env-вары и передает HOSTRUNNER в регрессионные тесты.

  • gh-93616: test_modulefinder теперь создает временный каталог в ModuleFinderTest.setUp() вместо области видимости модуля.

  • gh-93575: Исправление проблемы с test_unicode test_raiseMemError. Теперь в тестовом примере используется test.support.calcobjsize для вычисления размера PyUnicode-структур. sys.getsizeof() может возвращать другой размер, если строка имеет память UTF-8.

  • gh-90473: У WASI нет системного вызова chmod(2). os.chmod() теперь является фиктивной функцией на WASI. Пропустите все тесты, зависящие от работы os.chmod().

  • gh-90473: Пропускайте тесты на WASI, требующие симлинков с абсолютными путями.

  • gh-57539: Увеличьте покрытие календарных тестов для calendar.LocaleTextCalendar.formatweekday().

  • gh-90473: Пропускать проверку симлинков в WASI. wasmtime использует openat2(2) с флагом RESOLVE_BENEATH, который предотвращает симлинки с абсолютными путями.

  • gh-89858: Исправление test_embed для сборок без дерева. Исправление от Kumar Aditya.

  • gh-92886: Исправление тестов, которые не работают при запуске с оптимизацией (-O) в test_imaplib.py.

  • gh-92886: Исправление тестов, которые не работают при запуске с оптимизацией (-O) в test_zipimport.py

  • gh-92886: Исправление тестов, которые не работают при запуске с оптимизацией (-O) в test_py_compile.py

  • gh-92886: Исправление тестов, которые не работают при запуске с оптимизацией (-O) в test_sys_settrace.py.

  • gh-92886: Исправление тестов, которые не работают при запуске с оптимизацией (-O) в _test_multiprocessing.py

  • gh-92670: Пропустите тест test_shutil.TestCopy.test_copyfile_nonexistent_dir на AIX, так как тест использует косую черту, чтобы заставить ОС рассматривать путь как каталог, но на AIX косая черта не имеет эффекта и рассматривается как файл.

  • gh-92514: Удалите неиспользуемые test.support.BasicTestRunner. Исправление от Jelle Zijlstra.

  • bpo-47016: Создание рабочего процесса GitHub Actions для проверки поставляемых pip и setuptools. Исправление Илии Волочии и Адама Тернера.

Построить

  • gh-96761: Исправьте процесс сборки компилятора clang для _bootstrap_python, если применяется оптимизация LTO. Исправление от Маттиаса Гёргенса и Донгхи На.

  • gh-96883: Сборки wasm32-emscripten для браузеров теперь включают concurrent.futures для asyncio и unittest.mock.

  • gh-85936: CPython теперь использует опцию ThinLTO в качестве политики по умолчанию, если компилятор Clang принимает этот флаг. Исправление от Donghee Na.

  • gh-96729: Убедитесь, что выпуски Windows, созданные с помощью Tools\msi\buildrelease.bat, могут обновляться до официальных выпусков Python и обратно.

  • gh-96269: Цели общих модулей теперь зависят от новой переменной MODULE_DEPS, которая включает в себя EXPORTSYMS. Это исправляет проблему с порядком сборки на неподдерживаемой платформе AIX.

  • gh-84461: Платформа wasm32-emscripten больше не собирает модуль resource, getresuid(), getresgid() и их сеттеры. Эти API являются заглушками и не являются функциональными.

  • gh-95973: Добавьте новую опцию конфигурации --with-dsymutil, чтобы связать отладочную информацию в macOS. Исправление от Пабло Галиндо.

  • gh-90536: Используйте оптимизатор BOLT post-link для повышения производительности, особенно в средних и крупных приложениях.

  • gh-93744: Уберите опцию сборки configure --with-cxx-main: она не работала в течение многих лет. Удалите переменную MAINCC из configure и Makefile. Исправление Виктора Стиннера.

  • gh-94801: Исправление регрессии в скрипте configure, из-за которой некоторые проверки заголовков игнорировали пользовательские CPPFLAGS. Регрессия была внесена в gh-94802.

  • gh-95145: сборки wasm32-wasi больше не зависят от заглушек pthread от WASIX. Теперь у Python есть свой собственный заглушенный pthread API.

  • gh-95174: Python теперь обнаруживает отсутствие функции dup в WASI и обходит некоторые отсутствующие константы errno, select и socket.

  • gh-95174: Python теперь пропускает недостающие socket функции и методы на WASI. WASI может создавать сокеты только из существующих fd / accept и не имеет netdb.

  • gh-95085: Платформы wasm32-unknown-emscripten и wasm32-unknown-wasi были переведены в категорию PEP 11 с поддержкой платформы третьего уровня.

  • gh-94847: Исправлена проблема сборки модуля _decimal на GCC при компиляции с LTO и pydebug. Отладочные сборки больше не заставляют инлайнить функции.

  • gh-94841: Исправление возможного снижения производительности PyObject_Free(), скомпилированного с MSVC версии 1932.

  • gh-94801: configure теперь использует пользовательские флаги ZLIB_CFLAGS и ZLIB_LIBS при поиске заголовков и библиотек.

  • gh-94773: deepfreeze.py теперь поддерживает объекты кода с фростенсетами, содержащими несовместимые несортируемые типы.

  • gh-94682: Сборка и тестирование с OpenSSL 1.1.1q

  • gh-90005: Зависимости модулей readline и curses теперь обнаруживаются в скрипте configure с pkg-config. Только ncurses / ncursesw определяются автоматически. Старая библиотека curses не конфигурируется автоматически. Обходной путь для отсутствующей библиотеки termcap или tinfo был удален.

  • gh-90005: Исправьте сборку расширения _ctypes без pkg-config.

  • gh-90005: _dbm зависимости модулей теперь определяются configure.

  • gh-94404: makesetup теперь обходит проблему с sed на macOS и использует корректные CFLAGS для объектных файлов, которые оказываются в общем расширении. CFLAGS модуля используются перед PY_STDMODULE_CFLAGS, чтобы избежать столкновений с системными заголовками.

  • gh-93939: Модули расширения C теперь собираются с помощью configure и make вместо distutils и setup.py.

  • gh-93939: Скрипты 2to3, idle и pydoc теперь генерируются и устанавливаются Makefile, а не setup.py.

  • gh-94280: Обновлен скрипт pegen regeneration под Windows, чтобы найти и использовать Python 3.9 или выше. До этого регенерация pegen уже требовала 3.9 или выше, но скрипт мог использовать более низкие версии Python.

  • gh-93584: Устранение состояния гонки в Makefile при установке сборки PGO. Все цели test и install теперь зависят от цели all.

  • gh-93491: configure теперь обнаруживает и сообщает об уровнях поддержки PEP 11.

  • gh-69093: Исправьте правило Modules/Setup.stdlib.in для расширения _sqlite3.

  • gh-93207: va_start() с двумя параметрами, как и va_start(args, format),, теперь требуется для сборки Python. va_start() больше не вызывается с одним параметром. Исправление Кумара Адитьи.

  • gh-93202: Теперь Python всегда использует форматы %zu и %zd printf для форматирования чисел size_t или Py_ssize_t. Сборка Python 3.12 требует компилятора C11, поэтому эти форматы printf теперь всегда поддерживаются. Исправление подготовлено Виктором Стиннером.

  • gh-90473: Отключите pymalloc и увеличьте размер стека на wasm32-wasi.

  • bpo-34449: Убрать недопустимый ключ компилятора -fPIC для HP aCC на HP-UX. Исправление от Михаила Осипова.

Windows

  • gh-98360: Исправляет multiprocessing, порождающий дочерние процессы в Windows из виртуальной среды, чтобы дочерние процессы, которые также используют multiprocessing для порождения большего числа дочерних процессов, распознавали, что они находятся в виртуальной среде.

  • gh-98414: Исправлена работа py.exe пусковой установки с опцией -V:<company>/, когда предпочтения по умолчанию были заданы в переменных окружения или конфигурационных файлах.

  • gh-97728: Исправление возможных сбоев, вызванных использованием неинициализированных переменных при передаче недопустимых аргументов в os.system() под Windows и в Windows-специфичных модулях (например, winreg).

  • gh-90989: Сделали Python Launcher для Windows установку для каждого пользователя по умолчанию (если только установка для всех пользователей уже не существует), а также уточнили некоторые тексты в программе установки.

  • gh-97649: Каталог Tools больше не установлен в Windows

  • gh-96965: Обновление libffi до версии 3.4.3

  • gh-96577: Исправляет потенциальный выход за пределы буфера в msilib.

  • gh-96559: Исправление того, что программа запуска Windows не использовала совместимую интерпретацию стандартных тегов, найденных в файлах конфигурации, когда команде не передавался ни один тег.

  • gh-94781: Исправление pcbuild.proj для очистки предыдущих экземпляров выходных файлов в каталогах Python\deepfreeze и Python\frozen_modules под Windows. Исправление от Чарли Чжао.

  • gh-89545: Обновляет код platform, получающий версию Windows, чтобы использовать собственные запросы Windows Management Instrumentation (WMI) для определения версии, типа и архитектуры ОС.

  • gh-95733: Сделайте некоторые требования пакета Windows Store необязательными для установки на более ранние обновления Windows.

  • gh-95656: Включить enable_load_extension() sqlite3 API.

  • gh-95587: Исправлены некоторые проблемы, из-за которых программа установки Windows неправильно определяла некоторые особенности существующей установки при обновлении.

  • gh-94399: Восстанавливает поведение Python Launcher для Windows для строк /usr/bin/env shebang, которые теперь будут искать PATH для исполняемого файла, соответствующего заданной команде. Если таковой не найден, используется обычный процесс поиска.

  • gh-95445: Исправлено неудачное удаление каталога HTML-документов при деинсталляции с помощью Windows msi.

  • gh-95359: Исправлена работа Python Launcher для Windows с командами py.ini (он неправильно ожидал префикс py_ в ключах) и сбои при чтении конфигурационного файла для каждого пользователя.

  • gh-95285: Исправление Python Launcher для Windows обработки командных строк, в которых передается только короткое имя исполняемого файла.

  • gh-90844: Разрешить корректный запуск виртуальных сред при наличии пробелов в пути.

  • gh-94772: Исправление некорректной обработки строк shebang в программе запуска py.exe

  • gh-94018: zipfile теперь будет удалять пробелы в конце пути при извлечении файлов в Windows.

  • gh-93824: Перетаскивание файлов на файлы Python в проводнике Windows было включено для Windows ARM64.

  • gh-43414: os.get_terminal_size() теперь пытается прочитать размер из любого предоставленного дескриптора, а не только поддерживает файловые дескрипторы 0, 1 и 2.

  • gh-92817: Гарантирует, что py.exe будет отдавать предпочтение активной виртуальной среде, а не меткам по умолчанию, заданным с помощью переменных окружения или через файл py.ini.

  • gh-92984: Явное отключение инкрементальной линковки для сборок, не относящихся к отладке

  • gh-92841: asyncio больше не бросает RuntimeError: Event loop is closed при выходе из интерпретатора после асинхронной работы с сокетом. Исправление Олега Ярыгина.

  • bpo-46907: Обновление программы установки Windows для использования SQLite 3.38.4.

  • gh-91061: Примите os.PathLike в качестве аргумента для winsound.PlaySound

  • bpo-42658: Поддерживайте нечувствительное к регистру сравнение путей в Windows, используя LCMapStringEx вместо str.lower() в ntpath.normcase(). Добавьте LCMapStringEx в модуль _winapi.

  • bpo-38704: Предотвращение установки на неподдерживаемые версии Windows.

macOS

  • gh-97897: В macOS 13 SDK включена поддержка системных вызовов mkfifoat и mknodat. Использование опции dir_fd с os.mkfifo() или os.mknod() может привести к ошибке сегфайта, если cpython собран с помощью macOS 13 SDK, но запущен на более ранней версии macOS. Чтобы предотвратить это, добавьте поддержку обнаружения этих системных вызовов во время выполнения («weaklinking»), как это сделано для других более новых системных вызовов в macOS.

IDLE

  • gh-97527: Исправление ошибки в предыдущем исправлении, из-за которой IDLE не запускался при запуске с 3.10.8, 3.12.0a1 и, по крайней мере, Microsoft Python 3.10.2288.0, установленным без пакета Lib/test. На 3.11.0 это никак не повлияло.

  • gh-65802: Обработка расширений в диалоговых окнах Save As.

  • gh-95191: Включать подсказки при сохранении Shell (интерактивный ввод и вывод).

  • gh-95511: Исправлена ошибка копирования лишней строки в контекстном меню Shell при выделении целых строк.

  • gh-95471: В меню «Правка» переместите Select All и добавьте новый разделитель.

  • gh-95411: Включите использование браузера модулей IDLE с файлами .pyw.

  • gh-89610: Добавьте .pyi в качестве распознаваемого расширения для IDLE на macOS. Это позволит открывать файлы-заглушки двойным щелчком на них в Finder.

Инструменты/демоверсии

  • gh-68686: Удалите скрипты ptags и eptags.

  • gh-97681: Удалите каталог Tools/demo/, содержавший старые демо-скрипты. Копию можно найти в каталоге old-demos project. Исправление от Виктора Стиннера.

  • gh-97669: Удалите устаревшие примеры скриптов из каталога Tools/scripts/. Копию можно найти в каталоге old-demos project. Исправление от Виктора Стиннера.

  • gh-95853: Скрипт wasm_build.py теперь предварительно собирает порты Emscripten, проверяет наличие неработающих версий EMSDK и предупреждает о параметрах pkg-config env.

  • gh-95853: Новый инструмент Tools/wasm/wasm_builder.py автоматизирует этапы конфигурирования, компиляции и тестирования для сборки CPython на платформах WebAssembly.

  • gh-95731: Исправлена работа с докстрингами модулей в Tools/i18n/pygettext.py.

  • gh-93939: Добавьте скрипт Tools/scripts/check_modules.py для проверки и валидации встроенных и общих модулей расширения. Этот скрипт также работает с Modules/Setup и со временем заменит setup.py.

  • gh-94538: Исправление вывода клиники аргументов в пользовательские места назначения файлов. Исправление Эрленда Э. Аасланда.

  • gh-94430: Разрешить параметры с именами module и self с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-86087: Скрипт Tools/scripts/parseentities.py, использовавшийся для разбора сущностей HTML4, был удален.

C API

  • gh-98393: Разрешить параметры с именами PyUnicode_FSDecoder() и bytearray с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91051: Разрешить параметры с именами PyType_Watch() и PyType_Modified() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-95756: Ленивое создание и кэширование атрибутов co_ для повышения производительности геттеров кода.

  • gh-96512: Конфигурация для integer string conversion length limitation теперь находится в структуре PyConfig C API.

  • gh-95589: Разрешить параметры с именами tp_dictoffset и tp_weaklistoffset с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-95781: Разрешить параметры с именами PyUnicode_FromFormat() и PyUnicode_FromFormatV() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-92678: Восстановление поведения 3.10 для множественного наследования классов расширения C, которые хранят свой словарь в конце структуры.

  • gh-92678: Поддерживайте расширения C, использующие управляемые словари, установив флаг Py_TPFLAGS_MANAGED_DICT.

  • gh-93274: Разрешить параметры с именами Py_TPFLAGS_HAVE_VECTORCALL и PyVectorcall_NARGS() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-95504: Разрешить параметры с именами PyUnicode_FromFormat() и PyUnicode_FromFormatV() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-93012: Разрешить параметры с именами Py_TPFLAGS_HAVE_VECTORCALL и __call__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-95388: Создание immutable types с мутабельными основаниями устарело и планируется к отключению в Python 3.14.

  • gh-92678: Разрешить параметры с именами _PyObject_VisitManagedDict и _PyObject_ClearManagedDict с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-94936: Разрешить параметры с именами PyCode_GetVarnames() и PyCode_GetCellvars() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-94930: Разрешить параметры с именами SystemError и PyArg_ParseTupleAndKeywords() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-94731: Разрешить параметры с именами -Wold-style-cast и -Wzero-as-null-pointer-constant с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-93937: Разрешить параметры с именами #include <Python.h> и #include <frameobject.h> с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Патч Виктора Стиннера.

  • gh-91321: Исправление совместимости Python C API с C++ старше C++11. Исправление от Виктора Стиннера.

  • gh-91731: Избегайте определения static_assert при компиляции с C++ 11, где это ключевое слово и его переопределение может привести к неопределенному поведению. Исправление от Pablo Galindo

  • gh-89546: Разрешить параметры с именами PyType_FromMetaclass() и PyType_From* с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-93503: Разрешить параметры с именами PyEval_SetProfileAllThreads() и PyEval_SetTraceAllThreads() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-93442: Добавьте перегрузки C++ для _Py_CAST_impl() для обработки 0/NULL. Это позволит расширениям C++, передающим 0 или NULL макросам, использующим _Py_CAST(), продолжать компилироваться.

  • gh-93466: Идентификаторы слотов в PyType_Spec не могут повторяться. Документация была обновлена, чтобы упомянуть об этом. В некоторых случаях, когда слоты повторяются, PyType_FromSpec и связанные с ней функции теперь будут вызывать исключение.

  • gh-92898: Исправление предупреждений компилятора C++ при приведении аргументов функции к PyObject*. Исправление Сержа Гельтона.

  • gh-93103: Разрешить параметры с именами Py_IgnoreEnvironmentFlag и Py_InitializeFromConfig() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-77782: Разрешить параметры с именами Py_IgnoreEnvironmentFlag и Py_InitializeFromConfig() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-92913: Разрешить параметры с именами PyConfig.module_search_paths и PyConfig.module_search_paths_set с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-92781: Избегайте смешивания деклараций и кода в C API, чтобы исправить предупреждение компилятора: «ISO C90 запрещает смешивать декларации и код» [-Werror=declaration-after-statement]. Исправление Виктора Стиннера.

  • gh-92651: Разрешить параметры с именами token.h и token.h с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-92536: Удалите устаревшие API Unicode, основанные на Py_UNICODE*.

  • gh-85858: Разрешить параметры с именами PyUnicode_InternImmortal() и SSTATE_INTERNED_IMMORTAL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-92193: Разрешить параметры с именами PyFunction_SetVectorcall() и PyFunctionObject с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Внимание: расширения, использующие этот API, должны сохранять поведение неизмененной функции!

  • gh-59121: Исправлено утверждение, из-за которого PyRun_InteractiveOne не предоставлял трассировки при разборе из предоставленного FD.

  • bpo-45383: PyType_FromSpec() API теперь будет находить и использовать метакласс на основе предоставленных баз. При конфликте метаклассов будет выдана ошибка.

Python 3.11.0 beta 1

Дата выхода: 2022-05-06

Безопасность

  • gh-57684: Разрешить параметры с именами -P и PYTHONSAFEPATH с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • gh-89519: Цепочка дескрипторов classmethod (введенная в bpo-19072) устарела. Его больше нельзя использовать для обертывания других дескрипторов, таких как property(). Основной дизайн этой функции был ошибочным, и она вызвала ряд последующих проблем.

  • gh-92345: Разрешить параметры с именами pymain_run_python() и readline с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43857: Улучшение сообщения AttributeError при удалении отсутствующего атрибута. Исправление от Géry Ogam.

  • gh-92245: Убедитесь, что PEP 523 соблюдается во всех случаях. В версии 3.11a7 специализация могла помешать вызовам Python-to-Python соблюдать PEP 523.

  • gh-92203: Разрешить параметры с именами exec() и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91173: Отключение замороженных модулей в отладочных сборках. Исправление от Kumar Aditya.

  • gh-92114: Разрешить параметры с именами __class_getitem__ и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-92112: Исправление сбоя, вызванного злым пользовательским mro() в метаклассе.

  • gh-92063: Инструкция PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS теперь гарантирует, что методы будут вызываться только на объектах правильного типа.

  • gh-92031: Разрешить параметры с именами Py_FINALIZE() и _PyCode_Quicken с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-92036: Исправление сбоя в субинтерпретаторах, связанного со сборщиком мусора. При удалении субинтерпретатора необходимо отследить все объекты, отслеживаемые его GC. Чтобы предотвратить падение функций деаллокатора, ожидающих объекты, отслеживаемые GC, специально передавайте сильную ссылку на эти объекты, чтобы они никогда не удалялись и их функции деаллокатора не вызывались. Исправление Виктора Стиннера.

  • gh-92032: Разрешить параметры с именами match и case с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-87999: Предупреждение, выдаваемое парсером Python для числового литерала, за которым сразу следует ключевое слово, было изменено с предупреждения об устаревании на предупреждение о синтаксисе.

  • gh-91869: Исправление проблемы, когда специализированные опкоды с расширенными аргументами могли выдавать некорректный вывод трассировки или приводить к сбоям в утверждениях.

  • gh-91603: Ускорение инстанцирования types.UnionType. Основано на патче, предоставленном Юрием Карабасом.

  • gh-89373: Если Python собран в режиме отладки, то теперь Python гарантирует, что функции деаллокатора оставят текущее исключение без изменений. Исправление Виктора Стиннера.

  • gh-91632: Исправьте незначительную утечку памяти при выходе: освободите память типа generic_alias_iterator. Исправление от Donghee Na.

  • gh-81548: Разрешить параметры с именами 0o377 и DeprecationWarning с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43950: Используйте одну компактную таблицу для начала, конца строк и смещения столбцов. Сокращает потребление памяти для информации о местоположении в два раза

  • gh-91102: Используйте клинику аргументов для EncodingMap. Патч от Олега Иарыгина.

  • gh-91636: Исправлен сбой в краевом случае сбора мусора, когда функция PyFunction_Type.tp_clear могла оставить объект функции python в несогласованном состоянии.

  • gh-91603: Разрешить параметры с именами isinstance() и issubclass() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91625: Исправлена ошибка, при которой адаптивные опкоды игнорировали все предшествующие EXTENDED_ARGs при сбое специализации.

  • gh-78607: Разрешить параметры с именами __lltrace__ и __ltrace__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91576: Ускорение итерации строк ascii на 50%. Исправление Кумара Адитьи.

  • gh-89279: Улучшение производительности интерпретатора под Windows за счет инлайнинга нескольких специфических макросов.

  • gh-91502: Разрешить параметры с именами _PyFrame_IsEntryFrame() и PyFrameObject с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91266: Разрешить параметры с именами bytearray и strip с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91479: Разрешить параметры с именами __note__ и BaseException с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-46055: Ускоряет сдвиг вправо отрицательных целых чисел, удаляя ненужное создание временных элементов. Оригинальный патч Xinhang Xu, переработанный Марком Дикинсоном.

  • gh-91462: Сделать вывод функции низкоуровневой трассировки интерпретатора (lltrace) более читабельным, отображая имена опкодов (а не просто цифры) и выводя содержимое стека перед каждым опкодом.

  • gh-89455: Исправлено неинициализированное значение bool в пути кода печати трассировки, которое появлялось при работе начальных групп исключений bpo-45292.

  • gh-91421: Исправление потенциального целочисленного переполнения в _Py_DecodeUTF8Ex.

  • gh-91428: Разрешить параметры с именами static const char *const _PyOpcode_OpName[256] = {...}; и opcode.h с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47120: Разрешить параметры с именами POP_JUMP_IF_TRUE и POP_JUMP_IF_FALSE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45317: Добавьте внутреннюю документацию, объясняющую дизайн нового (для 3.11) стека фреймов.

  • bpo-47197: Разрешить параметры с именами void и ctypes.CFUNCTYPE(None, ctypes.c_int) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47120: Разрешить параметры с именами JUMP_IF_TRUE_OR_POP и JUMP_IF_FALSE_OR_POP с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47177: Разрешить параметры с именами f_lasti и _PyInterpreterFrame с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46961: Целочисленные операции mod/remainder, включая трехаргументную форму pow(), теперь последовательно возвращают ints из глобального малого целочисленного кэша, когда это применимо.

  • bpo-46962: Классы и функции, которые безоговорочно объявляли свои документообороты, игнорируя флаг компиляции --without-doc-strings, больше не делают этого.

    ctypes.UnionType: Разрешить параметры с именами pickle.PickleBuffer и testcapi.RecursingInfinitelyError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Затронутыми функциями являются 24 метода в ctypes.

    Патч от Олега Иарыгина.

  • bpo-46942: Используйте Argument Clinic для конструктора types.MethodType. Исправление Олега Иарыгина.

  • bpo-46764: Исправление обертывания связанных методов с помощью @classmethod

  • bpo-43464: Оптимизируйте set.intersection() для аргументов, не являющихся наборами.

  • bpo-46721: Оптимизируйте set.issuperset() для аргумента без набора.

  • bpo-46509: Разрешить параметры с именами Py_DECREF() и float с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46045: Не используйте семафоры POSIX в NetBSD

  • bpo-36819: Исправление сбоев во встроенных кодировщиках с обработчиками ошибок, возвращающими позицию, меньшую или равную начальной позиции некодируемых символов.

  • bpo-34093: Разрешить параметры с именами marshal.dumps() и FLAG_REF с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26579: Разрешить параметры с именами object.__getstate__ и __getstate__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Копирование и пикирование экземпляров подклассов встроенных типов bytearray, set, frozenset, collections.OrderedDict, collections.deque, weakref.WeakSet и datetime.tzinfo теперь копирует и пикирует атрибуты экземпляров, реализованные в виде слотов.

Библиотека

  • gh-87901: Добавьте параметр encoding в os.popen().

  • gh-90997: Устранение проблемы, при которой утилиты dis могли интерпретировать заполненные записи встроенного кэша как действительные инструкции.

  • gh-92332: Deprecate typing.Text (удаление класса в настоящее время не планируется). Исправление от Алекса Уэйгуда.

  • Отмените превращение вложенных классов в определениях перечислений в члены - в 3.13 они будут обычными классами; добавьте функции member и nonmember, чтобы можно было контролировать результаты сейчас.

  • gh-92356: Исправлено снижение производительности при вызове функции ctypes.

  • gh-90997: Разрешить параметры с именами show_caches=True и dis с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-92301: Разрешить параметры с именами close_range() и subprocess с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-67248: Сортировка различных тем в Cmd.do_help()

  • gh-92210: Порт socket.__init__ в Argument Clinic. Исправление от Cinder.

  • gh-80010: Разрешить параметры с именами datetime.datetime.fromisoformat() и datetime.date.fromisoformat() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-92118: Исправлена регрессия 3.11 в contextmanager(), которая приводила к распространению исключений с некорректной трассировкой.

  • gh-90887: Разрешить параметры с именами COPYFILE_STAT и COPYFILE_ACL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91215: Разрешить параметры с именами @dataclass и False с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-85984: Новая функция os.login_tty() для Unix.

  • gh-92128: Разрешить параметры с именами __class_getitem__() и logging.LoggerAdapter с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-92049: Запретить травить константы re._constants.SUCCESS и т. д. Ранее маринование не приводило к сбою, но результат нельзя было распикировать.

  • gh-92062: Разрешить параметры с именами inspect.Parameter и ValueError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-87390: Разрешить параметры с именами __unpacked__ и types.GenericAlias с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-88089: Добавьте поддержку общих typing.NamedTuple.

  • gh-91996: Новый перечислитель http.HTTPMethod для удобного представления всех доступных методов HTTP-запросов

  • gh-91984: Изменены тестовые строки в test_argparse.py, чтобы они не содержали пробелов перед концом строки.

  • gh-91952: Разрешить параметры с именами encoding="locale" и TextIOWrapper.reconfigure() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91954: Разрешить параметры с именами subprocess.getoutput() и subprocess.getstatusoutput() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47029: Разрешить параметры с именами multiprocessing.Queue и BrokenPipeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91928: Разрешить параметры с именами datetime.UTC и datetime.timezone.utc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Патч от Кабира Кватры.

  • gh-68966: Разрешить параметры с именами mailcap и PEP 594 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91401: Разрешить параметры с именами subprocess и vfork() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-64783: Разрешить параметры с именами signal.NSIG и signal.SIGRTMIN с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91910: Разрешить параметры с именами multiprocessing и asyncio с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91860: Разрешить параметры с именами typing.dataclass_transform() и PEP 681 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91832: Разрешить параметры с именами required и argparse.Action с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91827: Разрешить параметры с именами tkinter и info_patchlevel() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-84461: Разрешить параметры с именами --enable-wasm-pthreads и Emscripten/node с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91821: Разрешить параметры с именами test_from_tuple и test_decimal.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91217: Утратить модуль xdrlib.

  • gh-91217: Утратить модуль uu.

  • gh-91760: Для числовых ссылок на группы и имен групп в регулярных выражениях будут применяться более строгие правила. Пока что для групповых ссылок и групповых имен выдается предупреждение об устаревании, которое будет устранено в будущих версиях Python.

  • gh-84461: Добавьте предварительный sys._emscripten_info именованный кортеж с информацией о времени сборки и времени выполнения платформы Emscripten.

  • gh-90623: Разрешить параметры с именами signal.raise_signal() и os.kill() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91734: Исправление поддержки звука OSS на Solaris.

  • gh-90633: Включите переданное значение в исключение, выбрасываемое typing.assert_never(). Исправление от Jelle Zijlstra.

  • gh-91700: Разрешить параметры с именами (?(group)...) и re.error с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91231: Добавьте в конструктор multiprocessing.BaseManager необязательный ключевой параметр shutdown_timeout. Убивает процесс, если terminate() занимает больше времени, чем таймаут. Исправление Виктора Стиннера.

  • gh-91621: Разрешить параметры с именами typing.get_type_hints() и collections.abc.Callable с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-90568: Разрешить параметры с именами \N и regular expression с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91670: Разрешить параметры с именами SO и sysconfig с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91217: Утрачиваем модуль telnetlib.

  • gh-91217: Утратить модуль sunau.

  • gh-91217: Утрачиваем модуль spwd.

  • gh-91217: Утрачиваем модуль sndhdr, а также встраиваем необходимую функциональность для email.mime.MIMEAudio.

  • gh-91616: Разрешить параметры с именами re и fullmatch() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91217: Утратить модуль „pipes“.

  • gh-91217: Утратить модуль ossaudiodev.

  • bpo-47256: Модуль re, ограничивающий максимальную группу захвата до 1 073 741 823 в 64-битной сборке, что увеличивает глубину обратного пути.

  • gh-91217: Утратить модуль nis.

  • gh-91595: Исправьте сравнение символа и целого числа внутри Tools.gdb.libpython.write_repr(). Исправление от Yu Liu.

  • gh-74166: Разрешить параметры с именами create_connection() и ExceptionGroup с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91487: Оптимизация скорости Asyncio UDP, более чем в 100 раз быстрее при передаче большого файла.

  • gh-91575: Обновите нечувствительное к регистру соответствие в модуле re до последней версии Unicode.

  • gh-90622: Разрешить параметры с именами concurrent.futures.process.ProcessPoolExecutor и max_tasks_per_child с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-89022: Разрешить параметры с именами sqlite3 и SQLITE_MISUSE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91526: Разрешить параметры с именами os.device_encoding(file.fileno()) и TextIOWrapper с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-88116: Разрешить параметры с именами inspect и PEP 657 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-69093: Добавьте поддержку индексирования и нарезки в sqlite3.Blob. Исправление Авива Паливоды и Эрленда Э. Аасланда.

  • gh-69093: Разрешить параметры с именами context manager и sqlite3.Blob с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91217: Deprecate nntplib.

  • gh-91217: Утратить msilib.

  • gh-91404: Повышение производительности сопоставления re за счет использования вычисляемых гото (или «потокового кода») на поддерживаемых платформах и удаления дорогостоящих перенаправлений указателей.

  • gh-91217: Утратить модуль imghdr.

  • gh-91217: Утратить модуль crypt.

  • gh-91276: Освободите место для более длинных опкодов в выводе dis.

  • bpo-47000: Разрешить параметры с именами TextIOWrapper и encoding="locale" с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91230: Разрешить параметры с именами warnings.catch_warnings() и warnings.simplefilter() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91217: Утратить модуль chunk.

  • Добавьте параметр TCP_CONNECTION_INFO (доступен на macOS) к socket.

  • bpo-47260: Исправление os.closerange(), потенциально не позволяющего работать в песочнице Linux seccomp.

  • bpo-47087: Разрешить параметры с именами typing.Required и typing.NotRequired с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47061: Утратить cgi и cgitb.

  • bpo-47061: Deprecate audioop.

  • bpo-47000: Разрешить параметры с именами locale.getencoding() и locale.getpreferredencoding(False) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42012: Добавьте wsgiref.types, содержащий специфические для WSGI типы для статической проверки типов.

  • bpo-47227: Подавление цепочки выражений для большего числа ошибок разбора re.

  • bpo-47211: Разрешить параметры с именами re.template() и re.TEMPLATE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47135: decimal.localcontext() теперь принимает атрибуты контекста через аргументы ключевых слов

  • bpo-43323: Исправление ошибок в модуле email, если сама кодовая сетка содержит недекодируемые/некодируемые символы.

  • bpo-46841: Разборка ускоренного кода.

  • bpo-46681: Передайте уровень сжатия gzip.compress() в zlib.

  • bpo-45100: Разрешить параметры с именами typing.get_overloads() и typing.clear_overloads() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44807: Разрешить параметры с именами typing.Protocol и __init__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46787: Исправьте утечку памяти исключения concurrent.futures.ProcessPoolExecutor.

  • bpo-46720: Добавьте поддержку объектов, похожих на пути, в multiprocessing.set_executable(), чтобы Windows была на одном уровне с Unix-подобными системами. Исправление от Géry Ogam.

  • bpo-46696: Разрешить параметры с именами SO_INCOMING_CPU и socket с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46053: Исправление поддержки звука OSS в NetBSD.

  • bpo-45639: Разрешить параметры с именами image/avif и image/webp с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46285: Разрешить параметры с именами -p и --protocol с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44791: Примите многоточие в качестве последнего аргумента typing.Concatenate.

  • bpo-46547: Удалите переменные, просачивающиеся в пространство имен класса pydoc.Helper.

  • bpo-46415: Исправьте ipaddress.ip_{address,interface,network}, вызывающий TypeError вместо ValueError, если в качестве параметра адреса передан некорректный кортеж.

  • bpo-46075: Разрешить параметры с именами CookieJar и DefaultCookiePolicy с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45995: Добавьте опцию «z» в спецификацию форматирования строк, которая приводит отрицательные нулевые значения с плавающей точкой к положительным нулям после округления до точности формата. Внесено Джоном Белмонте.

  • bpo-26175: Разрешить параметры с именами io.BufferedIOBase и io.TextIOBase с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45138: Разрешить параметры с именами sqlite3 и bpo-40318 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44863: Разрешить параметры с именами TypedDict и Generic с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44587: Исправьте BooleanOptionalAction, чтобы он не добавлял автоматически строку по умолчанию. Если строка по умолчанию необходима, используйте форматер для ее добавления.

  • bpo-43827: Разрешить параметры с именами ABCMeta.__new__ и __init_subclass__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43218: Предотвращает создание venv, путь которого содержит разделитель PATH. Это может повлиять на использование скрипта activate. Исправление Дастина Родригеса.

  • bpo-38435: Разрешить параметры с именами process_group и subprocess.Popen с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42066: Разрешить параметры с именами CookieJar.__iter__() и CookieJar с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40617: Разрешить параметры с именами create_window_function() и sqlite3.Connection с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40676: Разрешить параметры с именами csv и csv.field_size_limit() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39716: Разрешить параметры с именами ArgumentError и argparse.ArgumentParser с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36073: Разрешить параметры с именами ProgrammingError и sqlite3 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34975: Разрешить параметры с именами start_tls() и StreamWriter с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-22276: Разрешить параметры с именами Path и glob() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24905: Разрешить параметры с именами blobopen() и sqlite3.Connection с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • gh-91888: Добавьте в документацию новую роль gh для ссылки на проблемы GitHub.

  • gh-91783: Документируйте вопросы безопасности, связанные с использованием функции shutil.unpack_archive()

  • gh-91547: Удалите страницу «Недокументированные модули».

  • gh-91298: В importlib.resources.abc доработана документация по протоколу Traversable, применены изменения из importlib_resources 5.7.1.

  • bpo-44347: Уточните значение dirs_exist_ok, kwarg из shutil.copytree().

  • bpo-36329: Удалите „make -C Doc serve“ в пользу „make -C Doc htmlview“.

  • bpo-47189: Добавьте запись «Что нового в Python 3.11» для проекта Faster CPython. Документация от Кена Джина и Кумара Адитьи.

  • bpo-38668: Разрешить параметры с именами os.path и PEP 383 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47115: В документации теперь указано, какие члены C-структур являются частью Limited API/Stable ABI.

  • bpo-46962: Разрешить параметры с именами PyDoc_STR и PEP 7’s Documentation Strings paragraph с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26792: Разрешить параметры с именами runpy.run_module() и runpy.run_path() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Тесты

  • gh-92169: Используйте warnings_helper.import_deprecated() для равномерного импорта устаревших модулей в тестах. Исправление от Хьюго ван Кеменаде.

  • gh-84461: Разрешить параметры с именами sys.executable и --python с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91904: Исправлена инициализация PYTHONREGRTEST_UNICODE_GUARD, которая не позволяла запускать регрессионные тесты на локали, отличной отUTF-8.

  • gh-91752: Добавлена @requires_zlib в test.test_tools.test_freeze.TestFreeze.

  • gh-91607: Исправление test_concurrent_futures для проверки правильного контекста метода запуска многопроцессорной обработки в нескольких случаях, когда логика тестирования путала это.

  • bpo-40280: Тесты на многопоточность теперь пропускаются на объектах WASM без поддержки pthread.

  • bpo-47109: Разрешить параметры с именами ctypes.macholib.dyld и ctypes.macholib.dylib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29890: Разрешить параметры с именами ipaddress.IPv4Interface и ipaddress.IPv6Interface с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Построить

  • gh-89452: gdbm-compat теперь предпочтительнее, чем ndbm, если оба доступны в системе. Это позволяет обойтись без проблемного ndbm.h в macOS.

  • gh-91731: Разрешить параметры с именами -std=c11 и -std=c99 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47152: Добавьте скрипт и сделайте цель для генерации sre_constants.h.

  • bpo-47103: Сборки Windows PGInstrument теперь копируют необходимую DLL в выходной каталог, что упрощает запуск профильного этапа сборки PGO.

Windows

  • bpo-46907: Обновление программы установки Windows для использования SQLite 3.38.3.

  • bpo-47239: Исправлен вывод –list и –list-paths для Python Launcher для Windows при использовании в активной виртуальной среде.

  • bpo-46907: Обновление программы установки Windows для использования SQLite 3.38.2.

  • bpo-46785: Разрешить параметры с именами os.stat() и FindFirstFileW() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40859: Обновление сборки Windows для использования xz-5.2.5

macOS

  • bpo-46907: Обновите программу установки macOS до версии SQLite 3.38.4.

Инструменты/демоверсии

  • gh-91583: Исправление регрессии в коде, генерируемом Argument Clinic для функций с параметром defining_class.

  • gh-91575: Разрешить параметры с именами Tools/scripts/generate_re_casefix.py и regen-re с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91551: Удалите древний редактор цветов Pynche. Он переехал на https://gitlab.com/warsaw/pynche.

C API

  • gh-88279: Разрешить параметры с именами PySys_SetArgv() и PySys_SetArgvEx() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-92154: Разрешить параметры с именами PyCode_GetCode() и getattr(code_object, 'co_code') с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-92173: Разрешить параметры с именами closure и PyEval_EvalCodeEx() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91320: Разрешить параметры с именами g++ -Wold-style-cast и reinterpret_cast<> с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-80527: Разрешить параметры с именами PEP 623 и PyUnicode_AS_DATA() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91768: Разрешить параметры с именами Py_REFCNT() и Py_TYPE() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • gh-91020: Разрешить параметры с именами PyBytes_Type.tp_alloc и PyBytesObject.ob_shash с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40421: Разрешить параметры с именами PyFrame_GetLasti и f_lasti с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35134: Разрешить параметры с именами Include/code.h и <Python.h> с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47169: PyOS_CheckStack() теперь экспортируется в Stable ABI под Windows.

  • bpo-47169: PyThread_get_thread_native_id() исключается из стабильного ABI на платформах, где он не существует (например, Solaris).

  • bpo-46343: Разрешить параметры с именами PyErr_GetHandledException() и PyErr_SetHandledException() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Они включены в стабильную версию ABI.

Python 3.11.0 alpha 7

Дата выхода: 2022-04-05

Ядро и встроенные модули

  • bpo-47212: Разрешить параметры с именами IndentationError и SyntaxError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47186: Разрешить параметры с именами JUMP_IF_NOT_EG_MATCH и CHECK_EG_MATCH с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47176: Сборки Emscripten не могут обрабатывать сигналы обычным способом из-за ограничений платформы. Теперь сигналы может обрабатывать Python. Для использования установите Module.Py_EmscriptenSignalBuffer в качестве однобайтового SharedArrayBuffer и установите Py_EMSCRIPTEN_SIGNAL_HANDLING в 1. Запись числа в SharedArrayBuffer приведет к тому, что соответствующий сигнал будет поднят в потоке Python.

  • bpo-47186: Разрешить параметры с именами JUMP_IF_NOT_EXC_MATCH и CHECK_EXC_MATCH с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47120: Разрешить параметры с именами JUMP_NO_INTERRUPT и JUMP_BACKWARD_NO_INTERRUPT с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46841: Избегайте лишних выделений при сравнении объектов кода.

  • bpo-47182: Исправление сбоя при использовании именованного символа юникода типа "\N{digit nine}" после того, как основной интерпретатор был инициализирован во второй раз.

  • bpo-47162: WebAssembly не может справиться с плохими приведениями указателей функций (разное количество или типы аргументов). Теперь Python может использовать батуты вызовов для смягчения этой проблемы. Определите PY_CALL_TRAMPOLINE, чтобы включить батуты вызовов.

  • bpo-46775: Некоторые коды системных ошибок Windows (>= 10000) теперь отображаются в правильные errno и могут вызывать подкласс OSError. Исправление от Donghee Na.

  • bpo-47129: Улучшение сообщений об ошибках при синтаксических ошибках f-строк, связанных с пустыми выражениями.

  • bpo-47117: Исправление сбоя при невозможности декодирования символов в интерактивном режиме, если буферы токенизатора неинициализированы. Исправление от Pablo Galindo.

  • bpo-47127: Ускорение вызовов функций c с аргументами в виде ключевых слов на 25% с помощью специализации. Исправление Кумара Адитьи.

  • bpo-47120: Разрешить параметры с именами JUMP_ABSOLUTE и JUMP_BACKWARD с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42197: Разрешить параметры с именами PyFrame_FastToLocalsWithError() и PyFrame_LocalsToFast() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47070: Разрешить параметры с именами array_inplace_repeat и memcpy с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47053: Уменьшите деоптимизацию в специализированном опкоде BINARY_OP_INPLACE_ADD_UNICODE.

  • bpo-47045: Разрешить параметры с именами f_state и owner с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46968: Проверьте наличие заголовка «sys/auxv.h» в faulthandler, чтобы избежать проблем с компиляцией в системах, где этот заголовок не существует. Исправление от Pablo Galindo

  • bpo-46329: Разрешить параметры с именами LOAD_GLOBAL и NULL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46841: Quicken bytecode in-place, сохраняя его как часть соответствующего PyCodeObject.

  • bpo-47012: Разрешить параметры с именами bytes и bytearray с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47009: Улучшена производительность list.append() и списков за счет оптимизации для общего случая, когда не требуется изменение размера. Исправление Денниса Суини.

  • bpo-47005: Разрешить параметры с именами bytearray_repeat и bytearray_irepeat с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46829: Разрешить параметры с именами asyncio.Future.cancel() и asyncio.Task.cancel() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46993: Разрешить параметры с именами bytearray и list с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39829: Разрешить параметры с именами __len__() и list_extend с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46944: Ускорение выброса исключений в генераторе с соглашением о вызове METH_FASTCALL. Исправление Кумара Адитьи.

  • bpo-46841: Модифицируйте STORE_SUBSCR, чтобы использовать запись в инлайн-кэше (а не ее oparg) в качестве адаптивного счетчика.

  • bpo-46841: Разрешить параметры с именами PRECALL и CALL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46881: Статически выделите и инициализируйте символы latin1.

  • bpo-46838: Улучшение синтаксических ошибок для некорректных определений функций. Исправление от Пабло Галиндо

  • bpo-43721: Разрешить параметры с именами getter и setter с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43224: Внесите изменения в грамматику, необходимые для PEP 646.

Библиотека

  • bpo-47208: Разрешить продавцам переопределять CTYPES_MAX_ARGCOUNT.

  • bpo-23689: Модуль re: исправлена утечка памяти при завершении матча по сигналу или сбое выделения памяти. Исправление от Ma Lin.

  • bpo-47167: Разрешить переопределение будущей проверки соответствия в asyncio.Task.

  • bpo-47151: Когда подпроцесс пытается использовать vfork, он теперь возвращается к fork, если vfork возвращает ошибку. Это позволяет использовать его в ситуациях, когда vfork не разрешен ядром ОС.

  • bpo-47152: Разрешить параметры с именами re и sre_compile с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-4833: Добавить ZipFile.mkdir()

  • bpo-27929: Разрешить параметры с именами asyncio.loop.sock_connect() и socket.AF_INET с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-14265: Добавляет полное имя теста в вывод unittest

  • bpo-47061: Утратить модуль aifc.

  • bpo-39622: Обработка Ctrl+C в программах asyncio для прерывания основной задачи.

  • bpo-47101: hashlib.algorithms_available теперь перечисляет только алгоритмы, которые предоставляются активированными криптопровайдерами в OpenSSL 3.0. Устаревшие алгоритмы не перечисляются, если только устаревший провайдер не был загружен в контекст OSSL по умолчанию.

  • bpo-47099: Разрешить параметры с именами URLError и urllib.request.URLopener с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47099: Разрешить параметры с именами Exception.with_traceback() и sys.exc_info() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47095: Разрешить параметры с именами hashlib и _blake2 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47098: Разрешить параметры с именами hashlib и _sha3 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47088: Разрешить параметры с именами typing.LiteralString и PEP 675 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42885: Разрешить параметры с именами re.search() и re.split() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23691: Защищает итератор re.finditer() от повторного входа.

  • bpo-47067: Разрешить параметры с именами GenericAlias и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28080: Разрешить параметры с именами zipfile.ZipFile и --metadata-encoding с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47000: Сделать io.text_encoding() возвращающим «utf-8», если включен режим UTF-8.

  • bpo-42369: Разрешить параметры с именами zipfile._SharedFile.tell() и ZipFile с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38256: Исправьте binascii.crc32(), когда она скомпилирована для использования zlib’c crc32, чтобы она корректно работала с входными данными длиной 4+GiB, а не возвращала неверный результат. До этого обходной путь заключался в том, чтобы всегда передавать функции данные с шагом меньше 4 Гб или просто вызывать функцию модуля zlib.

    binascii.crc32(): Разрешить параметры с именами zlib.crc32() и hashlib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Это также повышает производительность на Windows, поскольку теперь используется реализация zlib crc32 для binascii.crc32(), что ускоряет работу в 2-3 раза.

    То, что в stdlib есть API crc32 в двух модулях, - известная историческая странность. Это приближает нас к единой реализации, стоящей за ними.

  • bpo-47066: Глобальные инлайн-флаги (например, (?i)) теперь можно использовать только в начале регулярных выражений. Использование их не в начале выражения было отменено начиная с Python 3.6.

  • bpo-39394: Предупреждение о встроенных флагах не в начале регулярного выражения теперь содержит позицию флага.

  • bpo-433030: Разрешить параметры с именами (?>...) и *+ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47062: Внедрите контекстный менеджер asyncio.Runner.

  • bpo-46382: Разрешить параметры с именами dataclass() и slots=True с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47057: Используйте соглашение FASTCALL для FutureIter.throw()

  • bpo-47061: Утратить различные модули, перечисленные в PEP 594:

    aifc, asynchat, asyncore, audioop, cgi, cgitb, chunk, crypt, imghdr, msilib, nntplib, nis, ossaudiodev, pipes, smtpd, sndhdr, spwd, sunau, telnetlib, uu, xdrlib

  • bpo-34790: Удалите передачу объектов coroutine в asyncio.wait().

  • bpo-47039: Нормализуйте repr() объектов asyncio future и task.

  • bpo-2604: Исправлена ошибка, из-за которой доктесты, использующие глобалы, не выполнялись при многократном запуске.

  • bpo-45150: Добавьте помощник hashlib.file_digest() для эффективного хэширования файлового объекта.

  • bpo-34861: Сделали cumtime ключом сортировки по умолчанию для cProfile

  • bpo-45997: Исправить asyncio.Semaphore повторное получение порядка FIFO.

  • bpo-47022: Разрешить параметры с именами asynchat и asyncore с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43253: Исправление сбоя при закрытии транспортов, когда базовый хэндл сокета уже недействителен в цикле событий Proactor.

  • bpo-40280: Разрешить параметры с именами select.select() и NULL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47004: Применяются исправления из importlib_metadata 4.11.3, включая исправление для EntryPoint.extras, который возвращал объекты соответствия, а не строки extras.

  • bpo-46998: Разрешить подклассификацию typing.Any. Исправление от Shantanu Jain.

  • bpo-46995: Исправьте отсутствие asyncio.Task.set_name() для сторонних реализаций задач, планируя сделать его обязательным в Python 3.13.

  • bpo-46994: Разрешить параметры с именами asyncio.create_task() и asyncio.loop.create_task() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46981: Разрешить параметры с именами typing.get_args(typing.Tuple[()]) и () с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46968: Добавить os.sysconf_names['SC_MINSIGSTKSZ'].

  • bpo-46985: Обновление колеса pip в комплекте с ensurepip (pip 22.0.4)

  • bpo-46968: Разрешить параметры с именами faulthandler и getauxval(AT_MINSIGSTKSZ) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46917: Значение math.nan теперь всегда доступно. Исправление Виктора Стиннера.

  • bpo-46955: Разрешить параметры с именами asyncio.base_events.Server и asyncio.Server с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23325: Разрешить параметры с именами signal и SIG_IGN с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46932: Обновление libexpat до версии 2.4.7

  • bpo-46933: Разрешить параметры с именами pwd и os.path.expanduser() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40059: Разрешить параметры с именами PEP 680 и tomllib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-464471: Разрешить параметры с именами asyncio.timeout() и asyncio.timeout_at() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46805: Разрешить параметры с именами sock_sendto() и sock_recvfrom() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46644: Разрешить параметры с именами typing.Annotated и typing.ParamSpecArgs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46581: Разрешить параметры с именами ParamSpec и GenericAlias с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45413: Разрешить параметры с именами sysconfig installation schemes и venv с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43224: Реализуйте поддержку PEP 646 в typing.py.

  • bpo-43224: Разрешить распаковку объектов types.GenericAlias, например *tuple[int, str].

  • bpo-46557: Предупреждения, перехваченные модулем журнализации, теперь записываются в журнал без строки формата, чтобы системы, группирующие журналы по аргументу msg, не группировали перехваченные предупреждения вместе.

  • bpo-41370: Разрешить параметры с именами typing.get_type_hints() и PEP 585 generic aliases с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46607: Разрешить параметры с именами DeprecationWarning и LegacyInterpolation с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26120: pydoc теперь исключает импорт __future__ из элементов данных модуля.

  • bpo-46480: Добавить typing.assert_type(). Исправление от Jelle Zijlstra.

  • bpo-46421: Разрешить параметры с именами python -m unittest и ValueError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46245: Добавьте необязательный параметр dir_fd в shutil.rmtree().

  • bpo-22859: unittest.TestProgram.usageExit() помечен как устаревший и будет удален в Python 3.13.

  • bpo-46170: Улучшите сообщение об ошибке при попытке подклассифицировать экземпляр typing.NewType.

  • bpo-40296: Исправление поддержки общих псевдонимов в pydoc.

  • bpo-20392: Исправление несоответствия с расширениями файлов в верхнем регистре в MimeTypes.guess_type(). Исправление от Kumar Aditya.

  • bpo-46030: Разрешить параметры с именами LOCAL_CREDS и LOCAL_CREDS_PERSISTENT с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44439: Разрешить параметры с именами .write() и ZipFile с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45171: Разрешить параметры с именами stacklevel и logging с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24959: Исправлена ошибка, из-за которой в unittest иногда выпадали кадры из трассировки исключений, возникающих в тестах.

  • bpo-44859: Разрешить параметры с именами PEP 249 и sqlite3 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • InterfaceError: Разрешить параметры с именами ProgrammingError и SQLITE_MISUSE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • Не перезаписывайте BufferError на ValueError при неудачном преобразовании в BLOB.

    • ProgrammingError: Разрешить параметры с именами Warning и execute() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • Вызывайте ProgrammingError вместо ValueError, если SQL-запрос содержит нулевые символы.

  • bpo-44493: Добавьте недостающий завершенный NUL в длину sockaddr_un

    Это было потенциально наблюдаемо при использовании неабстрактных датаграммных сокетов AF_UNIX с процессами, написанными на другом языке программирования.

  • bpo-41930: Разрешить параметры с именами serialize() и deserialize() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33178: Разрешить параметры с именами ctypes.BigEndianUnion и ctypes.LittleEndianUnion с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43352: Добавьте объект Barrier в примитивы синхронизации либа asyncio, чтобы быть согласованным с Barrier из либов threading и multiprocessing.

  • bpo-35859: В модуле re исправлено несколько ошибок, связанных с группой захвата. В редких случаях группа захвата получала неверную строку. Исправление от Ma Lin.

Документация

  • bpo-45099: Внутренний asyncio документа. API.

  • bpo-47126: Обновите URL-адреса PEP до новой канонической формы PEP 676.

  • bpo-47040: Разрешить параметры с именами binascii.crc32() и zlib.adler32() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46033: Уточните выполнение утверждения for в его doc.

  • bpo-45790: Разрешить параметры с именами Определение типов расширений: Учебник и ob_base с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42340: Документируйте, что в некоторых обстоятельствах KeyboardInterrupt может привести к тому, что код перейдет в противоречивое состояние. Предоставлен пример обходного пути, чтобы избежать этого, если необходимо.

  • bpo-41233: Разрешить параметры с именами Doc/library/exceptions.rst и Doc/library/errno.rst с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Тесты

  • bpo-47205: Разрешить параметры с именами sched_getaffinity() и sched_setaffinity() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46126: Восстановите «описания» при внутреннем запуске тестов.

  • bpo-47104: Разрешить параметры с именами asyncio.to_thread() и unittest.IsolatedAsyncioTestCase с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40280: Набор тестов теперь проходит на платформе Emscripten. Все тесты, основанные на вилках, сокетах и подпроцессах, пропущены.

  • bpo-47037: Пропустите проверку функции strftime("%4Y") в Windows. Это может привести к ошибке утверждения в отладочных сборках.

  • bpo-46587: Пропускайте тесты, если платформа strftime не поддерживает непортируемые расширения glibc.

  • bpo-47015: Разрешить параметры с именами os.sendfile() и asyncore с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Построить

  • bpo-40280: Разрешить параметры с именами --enable-wasm-dynamic-linking и dlopen с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46023: makesetup теперь обнаруживает и пропускает все дублирующиеся определения модулей. Побеждает первая запись.

  • bpo-40280: Разрешить параметры с именами wasm32-emscripten и wasm32-wasi с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47032: Обеспечивает корректное завершение сборок установки Windows с ненулевым кодом выхода, если часть сборки завершилась неудачно.

  • bpo-47024: Обновите OpenSSL до версии 1.1.1n для установщиков macOS и всех сборок Windows.

  • bpo-46996: Пакет tkinter теперь требует Tcl/Tk версии 8.5.12 или новее.

  • bpo-46973: Разрешить параметры с именами regen-configure и quay.io/tiran/cpython_autoconf:269 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46917: Сборка Python теперь требует поддержки чисел с плавающей точкой IEEE 754. Исправление Виктора Стиннера.

  • bpo-45774: Разрешить параметры с именами configure и sqlite3 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Windows

  • bpo-47194: Разрешить параметры с именами zlib и CVE-2018-25032 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47171: Разрешает установку py.exe пусковой установки на Windows ARM64.

  • bpo-46566: Разрешить параметры с именами Python Launcher для Windows и -V:company/tag с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-47086: Программа установки для Windows теперь включает документацию в виде свободных HTML-файлов, а не в виде одного скомпилированного .chm файла.

  • bpo-46907: Обновление программы установки Windows для использования SQLite 3.38.1.

  • bpo-44549: Разрешить параметры с именами CVE-2016-3189 и CVE-2019-12900 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46948: Предотвратите CVE-2022-26488, убедившись, что опция Add to PATH в программе установки Windows использует правильный путь при восстановлении.

macOS

  • bpo-46890: Разрешить параметры с именами sys._base_executable и venv с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46907: Обновление программы установки macOS до версии SQLite 3.38.1.

Инструменты/демоверсии

  • bpo-40280: Замените ограниченную оболочку Emscripten на browser-ui REPL Кэти Белл из проекта python-wasm.

C API

  • bpo-40421: Разрешить параметры с именами PyFrame_GetBuiltins и PyFrame_GetGenerator с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46850: Разрешить параметры с именами _PyFrameEvalFunction и _PyInterpreterState_GetEvalFrameFunc() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46850: Разрешить параметры с именами _PyEval_EvalFrameDefault() и _PyInterpreterFrame с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46850: Разрешить параметры с именами _PyEval_CallTracing() и sys.call_tracing() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46850: Разрешить параметры с именами _PyEval_GetCoroutineOriginTrackingDepth() и sys.get_coroutine_origin_tracking_depth() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46850: Удалите следующие частные недокументированные функции из C API:

    • _PyEval_GetAsyncGenFirstiter()

    • _PyEval_GetAsyncGenFinalizer()

    • _PyEval_SetAsyncGenFirstiter()

    • _PyEval_SetAsyncGenFinalizer()

    Вместо этого вызывайте публичные функции sys.get_asyncgen_hooks() и sys.set_asyncgen_hooks(). Исправление Виктора Стиннера.

  • bpo-46987: Разрешить параметры с именами _PySys_GetObjectId() и _PySys_SetObjectId() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46906: Разрешить параметры с именами PyFloat_Pack2() и PyFloat_Pack4() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.11.0 alpha 6

Дата выхода: 2022-03-07

Ядро и встроенные модули

  • bpo-46940: Избегайте переопределения информации метаданных AttributeError для вложенных вызовов доступа к атрибутам. Исправление от Pablo Galindo.

  • bpo-46927: Включите имя типа в сообщение об ошибке при подстановке негенерических типов.

  • bpo-46921: Поддержка vectorcall для super(). Исправление от Кена Джина.

  • bpo-46841: Исправлена некорректная обработка записей инлайн-кэша при специализации BINARY_OP.

  • bpo-46841: Используйте oparg для упрощения построения полезных сообщений об ошибках в GET_AWAITABLE.

  • bpo-46903: Убедитесь, что подклассы str могут быть использованы в качестве имен атрибутов для экземпляров с виртуальными словарями. Исправляет регрессию в 3.11alpha

  • bpo-46841: Разрешить параметры с именами COMPARE_OP и EXTENDED_ARG с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46891: Разрешить параметры с именами types.ModuleType и __slots__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46841: Разрешить параметры с именами LOAD_ATTR и LOAD_METHOD с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46841: Используйте инлайн-кэш для BINARY_SUBSCR.

  • bpo-46841: Используйте встроенное кэширование для COMPARE_OP.

  • bpo-46864: Утратить PyBytesObject.ob_shash. Он будет удален в Python 3.13.

  • bpo-46841: Используйте встроенное кэширование для UNPACK_SEQUENCE.

  • bpo-46845: Уменьшает размер диктанта, удаляя хэш-значение из хэш-таблицы, если все вставленные ключи имеют юникод. Например, sys.getsizeof(dict.fromkeys("abcdefg")) становится 272 байтами с 352 байтами на 64-битной платформе.

  • bpo-46841: Используйте инлайн-кэш для LOAD_GLOBAL.

  • bpo-46852: Разрешить параметры с именами float.__set_format__() и float.__setformat__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46852: Разрешить параметры с именами float.__set_format__() и float.__setformat__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40116: Исправление ошибки, из-за которой dict.update(other) мог не соблюдать порядок итерации other, когда other является ключом, разделяющим dict.

  • bpo-46712: Совместное использование глобальных строковых идентификаторов в модулях глубокой заморозки.

  • bpo-46430: Исправление утечки памяти в интернированных строках модулей глубокой заморозки.

  • bpo-46841: Разрешить параметры с именами BINARY_OP и CACHE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45107: Специализируйте LOAD_METHOD для экземпляров с dict.

  • bpo-44337: Разрешить параметры с именами LOAD_ATTR и STORE_ATTR с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46729: Добавьте количество вложенных исключений в BaseException.__str__().

  • bpo-45885: Не снимайте адаптацию COMPARE_OP при сборе статистики специализации.

  • bpo-46329: Исправьте сбор статистики специализации для инструкций PRECALL.

  • bpo-46794: Повысьте версию libexpat до 2.4.6

  • bpo-46823: Реализуйте специализированный комбинированный опкод LOAD_FAST__LOAD_ATTR_INSTANCE_VALUE. Исправление Денниса Суини.

  • bpo-46820: Исправление разбора числового литерала сразу (без пробелов), за которым следуют ключевые слова «not in», как в 1not in x. Теперь парсер выдает только предупреждение, а не синтаксическую ошибку.

  • bpo-46329: Разрешить параметры с именами KW_NAMES и PRECALL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46808: Удалите макрос NEXT_BLOCK из compile.c и сделайте так, чтобы компилятор автоматически генерировал неявные блоки, когда они нужны.

  • bpo-46329: Разрешить параметры с именами PUSH_NULL и PRECALL_FUNCTION с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Семантика не меняется.

  • bpo-46762: Исправление ошибки утверждения в отладочных сборках, когда „<“, „>“ или „=“ является последним символом в f-строке, в которой отсутствует закрывающая правая скобка.

  • bpo-46730: Сообщение об ошибке AttributeError, вызванной получением, установкой или удалением свойства без соответствующей функции, теперь упоминает, что атрибут на самом деле является свойством, а также указывает тип класса, к которому он принадлежит.

  • bpo-46724: Разрешить параметры с именами JUMP_ABSOLUTE и JUMP_FORWARD с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46732: Исправьте строку документации для метода __bool__(). Исправление от Jelle Zijlstra.

  • bpo-46072: Добавьте более подробную статистику отказов специализации для BINARY_OP.

  • bpo-46707: Избежать потенциального экспоненциального отката при возникновении некоторых синтаксических ошибок с большим количеством скобок. Исправление от Pablo Galindo.

  • bpo-46323: ctypes теперь выделяет память в стеке, а не в куче для передачи аргументов при вызове функции обратного вызова в Python. Исправление от Donghee Na.

  • bpo-45923: Добавьте ускоренную форму RESUME, которая пропускает проверки ускорения.

  • bpo-46702: Разрешить параметры с именами UNPACK_SEQUENCE и tuple с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46072: Разрешить параметры с именами --enable-pystats и DYNAMIC_EXECUTION_PROFILE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46675: Разрешить более 16 элементов в разделенной дикте перед ее объединением. Теперь ограничение составляет 254.

  • bpo-40479: Разрешить параметры с именами va_end() и Modules/_hashopenssl.c с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46323: Используйте PyObject_Vectorcall() при вызове функции обратного вызова ctypes. Исправление от Donghee Na.

  • bpo-46615: При итерации над множествами внутри setobject.c получайте сильные ссылки на результирующие элементы из множества. Это предотвращает сбои в угловых случаях различных операций над множествами, когда множество мутирует.

  • bpo-45828: Компилятор байткода теперь пытается применить манипуляции со стеком во время компиляции (когда это возможно).

  • bpo-30496: Разрешить параметры с именами PyLong_FromLong() и PyLong_FromLongLong() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-25707: Исправлена утечка файлов в xml.etree.ElementTree.iterparse(), когда итератор не был исчерпан. Исправление от Джейкоба Уоллса.

  • bpo-46877: Разрешить параметры с именами unittest.doModuleCleanups() и unittest с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46848: Разрешить параметры с именами find() и rfind() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46736: SimpleHTTPRequestHandler теперь использует грамматику HTML5. Исправление от Donghee Na.

  • bpo-44886: Унаследовать asyncio proactor datagram transport от asyncio.DatagramTransport.

  • bpo-46827: Поддержка UDP-сокета в asyncio.loop.sock_connect() для циклов событий на основе селектора. Исправление Томаса Грейнджера.

  • bpo-46811: Сделайте набор тестов поддерживающим Expat >=2.4.5

  • bpo-46252: Разрешить параметры с именами TypeError и ssl.SSLSocket с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46784: Исправление коллизий символов libexpat с пользовательскими динамически загруженными или статически слинкованными libexpat во встроенном Python.

  • bpo-46786: Разрешить параметры с именами embed и source с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39327: shutil.rmtree() теперь может работать с общими папками VirtualBox при запуске из гостевой операционной системы.

  • bpo-45390: Передача сообщения asyncio.CancelledError от внутренней задачи внешнему ожидателю.

  • bpo-46756: Разрешить параметры с именами urllib.request.HTTPPasswordMgr.find_user_password() и urllib.request.HTTPPasswordMgrWithPriorAuth.is_authenticated() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46737: Разрешить параметры с именами random.gauss() и random.normalvariate() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46752: Добавляет группы задач в asyncio (структурированный параллелизм, вдохновленный питомниками Trio). Это также вносит изменения в отмену задач, когда отмененная задача не может быть отменена снова, пока не вызовет .uncancel().

  • bpo-46724: Исправьте поведение dis при отрицательных смещениях перехода.

  • bpo-46333: Разрешить параметры с именами __repr__() и typing.ForwardRef с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46643: Разрешить параметры с именами typing.get_type_hints() и ParamSpecArgs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45863: Когда модуль tarfile создает архив в формате pax, он помещает целочисленное представление временных меток в заголовок ustar (если это возможно) для удобства старых разархиваторов, в дополнение к существующим временным меткам полной точности в расширенном заголовке pax.

  • bpo-46066: Откажитесь от синтаксиса, основанного на kwargs, для определений typing.TypedDict. Он имел запутанную семантику при указании совокупности и в значительной степени не использовался. Исправление от Jingchen Ye.

  • bpo-46676: Сделать typing.ParamSpec args и kwargs равными самим себе. Исправление от Gregory Beauregard.

  • bpo-46323: Разрешить параметры с именами ctypes.CFUNCTYPE() и ctypes.WINFUNCTYPE() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46672: Разрешить параметры с именами NameError и asyncio.gather() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46659: Разрешить параметры с именами calendar.LocaleTextCalendar и calendar.LocaleHTMLCalendar с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46659: Разрешить параметры с именами locale.getdefaultlocale() и locale.setlocale() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46655: Разрешить параметры с именами typing.get_type_hints() и TypeAlias с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45948: Разрешить параметры с именами xml.etree.ElementTree и xml.etree.ElementTree.XMLParser с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46626: Разрешить параметры с именами IP_BIND_ADDRESS_NO_PORT и socket с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46521: Исправлена ошибка в модуле codeop, из-за которой некорректный код, содержащий строковые кавычки, неправильно идентифицировался как корректный.

  • bpo-46571: Улучшить typing.no_type_check().

    Теперь он не изменяет внешние классы и функции. Также теперь мы корректно помечаем методы класса как не подлежащие проверке типа.

  • bpo-46400: expat: Обновление libexpat с 2.4.1 до 2.4.4

  • bpo-46556: Откажитесь от недокументированной поддержки использования объекта pathlib.Path в качестве менеджера контекста.

  • bpo-46534: Разрешить параметры с именами PEP 673 и typing.Self с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46522: Сделайте различные модули __getattr__ Ошибки атрибутов более точно соответствуют типичным ошибкам атрибутов

  • bpo-46475: Разрешить параметры с именами typing.Never и typing.assert_never() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46333: Разрешить параметры с именами __eq__() и __hash__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46246: Разрешить параметры с именами __slots__ и importlib.metadata.DeprecatedList с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46232: Модуль ssl теперь корректно обрабатывает сертификаты с битовыми строками в DN.

  • bpo-46195: Разрешить параметры с именами typing.get_type_hints() и Optional с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31369: Разрешить параметры с именами RegexFlag и re.__all__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45898: Разрешить параметры с именами ctypes и ffi_type_* с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44953: Разрешить параметры с именами operator.itemgetter и operator.attrgetter с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44289: Разрешить параметры с именами is_tarfile() и tarfile.TarFile.open() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44011: Реализуйте поддержку SSL/TLS в asyncio, позаимствовав реализацию из библиотеки uvloop.

  • bpo-41086: Разрешить параметры с именами configparser.ConfigParser и TypeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29418: Разрешить параметры с именами inspect.ismethodwrapper() и inspect.isroutine() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-14156: argparse.FileType теперь поддерживает аргумент „-“ в бинарном режиме, возвращая атрибут .buffer из sys.stdin/sys.stdout в зависимости от ситуации. Режимы, включающие „x“ и „a“, обрабатываются эквивалентно „w“, когда аргументом является „-“. Исправление предоставлено Джошем Розенбергом

Документация

  • bpo-42238: Разрешить параметры с именами Doc/tools/rstlint.py и sphinx-lint с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Тесты

  • bpo-46913: Исправьте test_faulthandler.test_sigfpe(), если Python собран с санитаром неопределенного поведения (UBSAN): отключите UBSAN на функции faulthandler_sigfpe(). Исправление от Виктора Стиннера.

  • bpo-46760: Удаление смещений байткода от ожидаемых значений в модуле test.test_dis. Уменьшает препятствия для модификации виртуальной машины или компилятора.

  • bpo-46708: Предотвращение предупреждения об изменении политики циклов событий asyncio по умолчанию после выполнения test_asyncio.

  • bpo-46678: Разрешить параметры с именами make_legacy_pyc и Lib/test/support/import_helper.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46623: Пропустите test_pair() и test_speech128() из test_zlib на s390x, поскольку они не работают, если zlib использует аппаратный ускоритель s390x. Исправление Виктора Стиннера.

Построить

  • bpo-46860: Уважайте --with-suffix при сборке на файловых системах, не чувствительных к регистру.

  • bpo-46656: Для сборки Python теперь требуется компилятор C11. Дополнительные функции C11 не требуются. Исправление Виктора Стиннера.

  • bpo-46656: Сборка Python теперь требует поддержки Not-a-Number (NaN) с плавающей точкой: удалите макрос Py_NO_NAN. Исправление Виктора Стиннера.

  • bpo-46640: Разрешить параметры с именами <math.h> и NAN с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46608: Разрешить параметры с именами is_package и _frozen с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40280: Исправление сбоев в тесте wasm32-emscripten и проблем с платформой. - Отключите системные вызовы, которые не поддерживаются или не работают, например wait, getrusage, prlimit, mkfifo, mknod, setres[gu]id, setgroups. - Используйте fd_count для подсчета открытых fds. - Добавьте больше проверок для подпроцессов и форков. - Добавлены обходные пути для отсутствующего _multiprocessing и неработающего socket.accept(). - Включить bzip2. - Отключить поддержку больших файлов. - Отключите signal.alarm.

  • bpo-46430: Внутренние строки в глубоко замороженных модулях. Исправление от Kumar Aditya.

Windows

  • bpo-46744: Разрешить параметры с именами Program Files и Program Files (Arm) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46567: Добавляет поддержку Tcl и Tk для Windows ARM64. Это также добавляет IDLE к установке.

  • bpo-46638: Обеспечивает постоянное отключение виртуализации реестра. В версии 3.10 и более ранних она остается включенной (некоторые записи в реестре защищены), а в версии 3.11 и более поздних она отключена (изменения в реестре затрагивают все приложения).

IDLE

  • bpo-46630: Сделайте так, чтобы диалоги запросов в Windows начинались с курсора в поле ввода.

  • bpo-45447: Применяйте подсветку синтаксиса IDLE к файлам .pyi. Исправление от Alex Waygood и Terry Jan Reedy.

C API

  • bpo-46748: Разрешить параметры с именами <stdbool.h> и bool с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46836: Разрешить параметры с именами PyFrameObject и struct _frame с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45459: Разрешить параметры с именами Include/buffer.h и Include/pybuffer.h с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45412: Удалите макрос HAVE_PY_SET_53BIT_PRECISION (перенесен во внутренний C API). Исправление Виктора Стиннера.

  • bpo-46613: Добавлена функция PyType_GetModuleByDef(), которая позволяет получить доступ к состоянию модуля, когда определяющий класс метода недоступен.

Python 3.11.0 alpha 5

Дата выхода: 2022-02-03

Ядро и встроенные модули

  • bpo-45773: Удалите из компилятора байткода две недопустимые оптимизации «на глазок».

  • bpo-46564: Не создавайте фреймовые объекты при создании объекта super. Исправление Кумара Адитьи.

  • bpo-45885: Добавлена более подробная статистика отказов специализации для байткода COMPARE_OP.

  • bpo-44977: Разрешить параметры с именами int() и __trunc__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46458: Разрешить параметры с именами try и except с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46527: Разрешить параметры с именами iterable и enumerate() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46528: Разрешить параметры с именами DUP_TOP и DUP_TOP_TWO с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46329: Используйте два или три байткода для реализации большинства вызовов.

    PRECALL; CALL: Разрешить параметры с именами PRECALL; KW_NAMES; CALL и PRECALL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Такое разделение на предварительный звонок и звонок позволяет улучшить специализацию, а значит, и производительность в конечном итоге.

    Семантика не меняется.

  • bpo-46503: Исправление ошибки при разборе некоторых недопустимых N-эскейп-последовательностей в f-строках.

  • bpo-46431: Улучшите сообщение об ошибке при недопустимых вызовах BaseExceptionGroup.__new__().

  • bpo-46476: Исправление утечки памяти в объектах кода, генерируемых deepfreeze. Исправление от Kumar Aditya.

  • bpo-46481: Разрешить параметры с именами weakref.ref.__call__() и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46417: Разрешить параметры с именами __bases__ и add_subclass() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46417: python -X showrefcount теперь показывает общее количество ссылок после очистки и уничтожения основного интерпретатора Python. Ранее оно показывалось до этого. Исправление Виктора Стиннера.

  • bpo-43683: Добавьте опкод ASYNC_GEN_WRAP для обертывания значения, которое должно быть выдано в асинхронных генераторах. Устраняет необходимость в специальном регистре асинхронных генераторов в инструкции YIELD_VALUE.

  • bpo-46407: Оптимизация некоторых операций по модулю в Objects/longobject.c. Исправление от Jeremiah Vivian.

  • bpo-46409: Добавьте новый байткод RETURN_GENERATOR для создания генераторов. Упрощает вызов функций Python в VM, так как больше нет необходимости в специальном регистре функций генераторов.

    Также добавьте байткод JUMP_NO_INTERRUPT, который действует как JUMP_ABSOLUTE, но не проверяет наличие прерываний.

  • bpo-46406: Разрешить параметры с именами // и 2**30 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46383: Разрешить параметры с именами _zoneinfo и module_free с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46361: Разрешить параметры с именами int.from_bytes() и decimal.Decimal с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46161: Исправлена ошибка построения класса, когда аргументы являются константами и используется CALL_FUNCTION_EX.

  • bpo-46028: Исправлено вычисление sys._base_executable при нахождении в виртуальной среде, использующей симлинки с двоичными именами, отличными от тех, что предоставляет базовая среда.

  • bpo-46091: Корректно вычисляет уровни отступов для строк с пробельными символами, которые завершаются символами продолжения строки. Исправление от Pablo Galindo

  • bpo-30512: Добавьте поддержку CAN Socket для NetBSD.

  • bpo-46045: Не используйте семафоры POSIX в NetBSD

  • bpo-44024: Разрешить параметры с именами TypeError и getattr() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-46624: Разрешить параметры с именами random.randrange() и random.randint() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46591: Сделайте URL IDLE doc в диалоге «О IDLE» кликабельным.

  • bpo-46565: Удалите переменные цикла, которые просачиваются в пространства имен модулей.

  • bpo-46553: Разрешить параметры с именами typing.get_type_hints() и ClassVar с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46544: Разрешить параметры с именами x и uspace с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46487: Разрешить параметры с именами get_write_buffer_limits и asyncio.transports.WriteTransport с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45173: Обратите внимание на то, что в Python 3.12 будут удалены устаревшие настройки configparser.

  • bpo-45162: Устаревшие unittest API, удаленные в 3.11a1, были временно восстановлены, чтобы быть удаленными в 3.12, пока идет очистка во внешних проектах.

  • bpo-46539: Разрешить параметры с именами typing.get_type_hints() и ClassVar с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46510: Разрешить параметры с именами types.TracebackType и types.FrameType с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46491: Разрешить параметры с именами typing.Annotated и typing.Final с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46483: Разрешить параметры с именами __class_getitem__() и pathlib.PurePath с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46436: Разрешить параметры с именами -d и --directory с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41403: Разрешить параметры с именами mock.patch() и TypeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46474: В importlib.metadata.EntryPoint.pattern избегайте потенциальных REDoS, ограничивая двусмысленность в последовательных пробельных символах.

  • bpo-46474: Удален приватный метод из importlib.metadata.Path. Синхронизация с importlib_metadata 4.10.0.

  • bpo-46470: Удалите неиспользуемую ветвь из typing._remove_dups_flatten

  • bpo-46469: Разрешить параметры с именами asyncio и types.GenericAlias с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41906: Разрешить параметры с именами filters и handlers с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46422: Разрешить параметры с именами dis.Positions и dis.Instruction с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46434: Разрешить параметры с именами pdb и help с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43869: Python использует одну и ту же временную эпоху на всех платформах. Добавьте явный юнит-тест, чтобы убедиться, что это так. Исправление Виктора Стиннера.

  • bpo-46414: Добавить typing.reveal_type(). Исправление от Jelle Zijlstra.

  • bpo-40280: Разрешить параметры с именами subprocess и msvcrt с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40066: Разрешить параметры с именами IntEnum и IntFlag с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46316: Оптимизируйте pathlib.Path.iterdir(), удалив ненужную проверку на наличие специальных записей.

  • bpo-29688: Документ pathlib.Path.absolute() (который существовал всегда).

  • bpo-43012: Устаревший и внутренний класс _Accessor модуля pathlib был удален, чтобы подготовить местность к предстоящим улучшениям модуля.

  • bpo-46258: Ускорьте math.isqrt() для небольших положительных целых чисел, заменив два шага деления таблицей поиска.

  • bpo-46242: Разрешить параметры с именами enum.Enum и Enum с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43118: Разрешить параметры с именами inspect.signature() и __text_signature__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26552: Исправлена ситуация, когда при отказе asyncio.ensure_future() не закрывался корутин. Исправление Кумара Адитьи.

  • bpo-21987: Исправление проблемы, когда tarfile.TarFile.getmember() получал имя каталога с косой чертой.

  • bpo-46124: Обновите zoneinfo, чтобы полагаться на обходной API importlib.resources.

  • bpo-46103: Разрешить параметры с именами inspect.getmembers() и __bases__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46080: Разрешить параметры с именами argparse.BooleanOptionalAction и argparse.SUPPRESS с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44791: Разрешить параметры с именами ParamSpec и Concatenate с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-46463: Исправления escape4chm.py скрипта, используемого при сборке файла документации CHM

Тесты

  • bpo-43478: Моки больше не могут быть предоставлены в качестве спецификаций для других моков. В результате уже созданный объект не может быть передан в mock.Mock(). Это может выявить ошибки в тестах, так как эти Mock-производные всегда будут проходить определенные тесты (например, isinstance), а встроенные функции assert (например, assert_called_once_with) будут проходить безоговорочно.

  • bpo-46616: Обеспечивает test_importlib.test_windows очистку ключей реестра после завершения.

  • bpo-44359: test_ftplib теперь молча игнорирует ошибки сокетов, чтобы предотвратить регистрацию необработанных потоковых исключений. Исправление Виктора Стиннера.

  • bpo-46600: Исправьте test_gdb.test_pycfunction() для Python, собранного с clang -Og. Разрешить встраивание функций в обратную связь gdb. Исправление Виктора Стиннера.

  • bpo-46542: Исправление падения Python в test_lib2to3 при использовании Python, собранного в режиме отладки: ограничение лимита рекурсии. Исправление от Виктора Стиннера.

  • bpo-46576: test_peg_generator теперь отключает оптимизацию компилятора при тестировании компиляции своих собственных расширений на C, что значительно ускоряет тестирование на не отладочных сборках CPython.

  • bpo-46542: Разрешить параметры с именами test_json и RecursionError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-13886: Пропускать тесты test_builtin PTY на не-ASCII символы, если загружен модуль readline. Модуль readline изменяет поведение input(), но test_builtin не предназначен для проверки модуля readline. Исправление Виктора Стиннера.

  • bpo-40280: Разрешить параметры с именами test.support.requires_fork() и os.fork() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40280: Разрешить параметры с именами test.support.requires_subprocess() и subprocess с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46126: Отключите «описания» при внутреннем выполнении тестов.

Построить

  • bpo-46602: Настроил configure.ac так, чтобы файл conftest.c обрезался, а не добавлялся. Это помогает в случае, когда „rm“ conftest.c не происходит между тестами. В результате могут возникнуть такие проблемы, как сбитый SOABI.

  • bpo-46600: Разрешить параметры с именами -Og и ./configure с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38472: Исправлено обнаружение GCC в setup.py при кросс-компиляции. Компилятор C теперь запускается с LC_ALL=C. Ранее обнаружение немецкой локали было неудачным.

  • bpo-46513: Разрешить параметры с именами configure и AC_C_CHAR_UNSIGNED с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46471: Используйте глобальные синглтоны для однобайтовых объектов в deepfreeze.

  • bpo-46443: Deepfreeze теперь использует кэшированные маленькие целые числа, так как это экономит место для обычных маленьких целых чисел.

  • bpo-46429: Объединяет все глубоко замороженные файлы в один для экономии места. Исправление от Kumar Aditya.

  • bpo-45569: Разрешить параметры с именами --enable-big-digits=15 и configure с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45925: Обновление программы установки Windows для использования SQLite 3.37.2.

  • bpo-43112: Определите musl libc как отдельный SOABI (помеченный как linux-musl).

Windows

  • bpo-33125: Традиционный установщик на основе EXE/MSI для Windows теперь доступен для ARM64

  • bpo-46362: os.path.abspath(«C:CON») теперь исправлен так, что возвращает «\.CON», а не тот же путь. Регрессия была справедлива для всех устаревших устройств DOS, таких как COM1, LPT1 или NUL.

  • bpo-44934: Программа установки теперь предлагает опцию командной строки, позволяющую добавить каталог установки в конец PATH, а не в начало.

macOS

  • bpo-45925: Обновление программы установки macOS до версии SQLite 3.37.2.

IDLE

  • bpo-45296: Уточнение закрытия, выхода и завершения работы в IDLE. В меню File, „Close“ и „Exit“ теперь означают „Close Window“ (закрыть текущее окно), а „Exit“ теперь означает „Exit IDLE“ (закрыть все окна). В Shell слова „quit()“ и „exit()“ означают «закрыть Shell». Если других окон нет, это также означает выход из IDLE.

C API

  • bpo-40170: Разрешить параметры с именами PyHeapType_GET_MEMBERS() и PyTypeObject.tp_members с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40170: Переместите частные функции _Py_GetAllocatedBlocks() и _PyObject_DebugMallocStats() во внутренний C API. Исправление Виктора Стиннера.

  • bpo-46433: Внутренняя функция _PyType_GetModuleByDef теперь корректно обрабатывает паттерны наследования, включающие статические типы.

  • bpo-45459: Разрешить параметры с именами Py_buffer и Py_buffer с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-14916: Исправлена ошибка в токенизаторе, из-за которой PyRun_InteractiveOne не разбирался из предоставленного FD.

Python 3.11.0 alpha 4

Дата выхода: 2022-01-13

Ядро и встроенные модули

  • bpo-46070: Разрешить параметры с именами Py_EndInterpreter() и PyObject_GC_UnTrack() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46347: Исправьте утечку памяти в PyEval_EvalCodeEx.

  • bpo-46339: Исправление сбоя в парсере при получении текста ошибки для многострочных f-строчных выражений, которые начинаются не с первой строки строки. Исправление от Pablo Galindo

  • bpo-46331: Не задавать номер строки инструкции, хранящей doc-строку. Исправляет регрессию, появившуюся в альфа-версии 3.11.

  • bpo-46314: Устранение ложного события «call» при создании лямбда-функции, которое было случайно введено в 3.11a4.

  • bpo-46289: Разрешить параметры с именами FormattedValue и conversion с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46297: Исправлено падение интерпретатора при загрузке с несколькими PythonPaths, заданными в реестре Windows. Исправление от Derzsi Dániel.

  • bpo-46237: Исправление количества строк с ошибками токенизатора внутри f-строк. Исправление от Пабло Галиндо.

  • bpo-46263: Мы всегда ожидаем, что конфигурация «use_frozen_modules» будет установлена, теперь, когда getpath.c был переписан на чистом Python и логика улучшена.

  • bpo-46006: Разрешить параметры с именами __init__() и _PyUnicode_EqualToASCIIId() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45923: Добавьте опкод RESUME. Это логический запрет. Он выдается компилятором в любом месте, где может быть введена функция Python. Он используется интерпретатором для трассировки и проверки оптимизатора.

  • bpo-46208: Исправление регрессии, когда os.path.normpath(«A/../../B») возвращал не ожидаемое «../B», а «B».

  • bpo-46240: Исправление сообщения об ошибке для незакрытых круглых скобок, когда токенизатор не достигает конца источника при сообщении об ошибке. Исправление от Pablo Galindo

  • bpo-46009: Удалите опкод GEN_START.

  • bpo-46235: Некоторые операции умножения последовательностей, например [0] * 1_000, теперь выполняются быстрее благодаря оптимизации подсчета ссылок. Исправление Денниса Суини.

  • bpo-46221: Разрешить параметры с именами PREP_RERAISE_STAR и lasti с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46202: Удалите POP_EXCEPT_AND_RERAISE и замените его эквивалентной последовательностью других опкодов.

  • bpo-46085: Исправьте механизм кэширования итераторов OrderedDict.

  • bpo-46055: Ускорение операций сдвига с целыми числами меньше PyLong_BASE. Исправлено Синьханом Сюй.

  • bpo-46110: Добавьте проверку максимальной рекурсии в парсер PEG, чтобы избежать переполнения стека. Исправление от Пабло Галиндо

  • bpo-46107: Разрешить параметры с именами ExceptionGroup.split() и ExceptionGroup.subgroup() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45711: Разрешить параметры с именами exc_value и exc_type с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44525: Замените четыре инструкции байткода call одной инструкцией pre-call и двумя инструкциями call.

    CALL_FUNCTION: Разрешить параметры с именами CALL_FUNCTION_KW и CALL_METHOD с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    CALL_NO_KW: Разрешить параметры с именами CALL_KW и PRECALL_METHOD с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46039: Разрешить параметры с именами YIELD_FROM и SEND с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45635: Код, вызываемый из _PyErr_Display(), был рефакторингован для улучшения обработки ошибок. Теперь он немедленно завершается при возникновении неустранимой ошибки.

  • bpo-46054: Исправление ошибки парсера при разборе не-utf8 символов в исходных файлах. Исправление от Пабло Галиндо.

  • bpo-46042: Улучшение расположения каретки в исключениях SyntaxError, выдаваемых таблицей символов. Исправление от Пабло Галиндо.

  • bpo-46049: Убедитесь, что файлы ._pth работают как положено на платформах, отличных от Windows.

  • bpo-46048: Исправлен разбор файлов ._pth при запуске, чтобы пути с одним символом читались правильно.

  • bpo-37971: Исправлена ошибка, из-за которой номера строк, указанные в трассировке, когда приложение-декоратор вызывало исключение, были неверными.

  • bpo-46031: Разрешить параметры с именами POP_JUMP_IF_NOT_NONE и POP_JUMP_IF_NONE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45654: Deepfreeze runpy, патч от Kumar Aditya.

  • bpo-46025: Исправление сбоя в модуле atexit, связанного с функциями, которые снимают себя с регистрации перед тем, как вызвать исключения. Исправление от Пабло Галиндо.

  • bpo-46000: Улучшение совместимости модуля curses с NetBSD curses.

  • bpo-44525: Разрешить параметры с именами range(x) и list(x) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42918: Разрешить параметры с именами compile() и SyntaxError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45953: Главный интерпретатор в _PyRuntimeState.interpreters теперь выделяется статически (как часть _PyRuntime). Аналогично и для начального состояния потока каждого интерпретатора. Это означает меньшее выделение во время инициализации времени выполнения, а также лучшую локальность памяти для этих ключевых объектов состояния.

  • bpo-45292: Разрешить параметры с именами PEP 654 и except* с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43413: Разрешить параметры с именами set.__init__ и set с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43931: Разрешить параметры с именами Py_Version и PY_VERSION_HEX с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-46342: Разрешить параметры с именами @typing.final и __final__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46328: Добавлен метод sys.exception(), который возвращает активный экземпляр исключения.

  • bpo-46307: Разрешить параметры с именами string.Template.is_valid() и string.Template.get_identifiers() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46306: Разрешить параметры с именами types.CodeType и types.CodeType.co_firstlineno с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40479: Исправьте hashlib usedforsecurity для корректной работы с OpenSSL 3.0.0 в режиме FIPS.

  • bpo-46070: Исправление возможного segfault при параллельном импорте модуля asyncio из разных суб-интерпретаторов. Исправление Эрленда Э. Аасланда.

  • bpo-46244: Разрешить параметры с именами __slots__ и typing.ParamSpec с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46278: Разрешить параметры с именами context и AbstractEventLoop.call_*() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46269: Разрешить параметры с именами __new__ и enum.Enum.__dir__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46266: Улучшите константы дня в calendar.

    MONDAY: Разрешить параметры с именами SUNDAY и __all__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46257: Оптимизированы функции mean, variance и stdev в модуле статистики. Если на вход подается итератор, то он потребляется за один проход, а не съедает память при преобразовании в список. Алгоритм с одним проходом работает примерно в два раза быстрее, чем предыдущий код с двумя проходами.

  • bpo-41011: Добавлены две новые переменные в pyvenv.cfg, который генерируется модулем venv: executable для исполняемого файла и command для командной строки, используемой для создания окружения.

  • bpo-46239: Улучшено сообщение об ошибке при импорте asyncio.windows_events на не-Windows.

  • bpo-46238: Разрешить параметры с именами _winapi и asyncio.windows_events с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46222: Добавление константы SF_NOCACHE sendfile для FreeBSD для posixmodule.

  • bpo-37295: Разрешить параметры с именами 0 <= k <= n <= 67 и math.comb() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46176: Добавление константы MAP_STACK для модуля mmap.

  • bpo-43424: Разрешить параметры с именами webbrowser.MacOSXOSAScript._name и name с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45321: Добавлены отсутствующие коды ошибок в модуль xml.parsers.expat.errors.

  • bpo-46125: Рефакторинг тестов для прямого тестирования traversable API. Включает изменения из importlib 5.4.0.

  • bpo-46118: Переместили importlib.resources и связанную с ним функциональность в пакет.

  • bpo-37578: Разрешить параметры с именами glob() и iglob() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20369: concurrent.futures.wait() больше не блокируется навсегда, когда ему даются дублирующие фьючерсы. Исправление Кумара Адитьи.

  • bpo-46105: Соблюдайте спецификацию при генерации спецификаций требований с урлами и дополнениями (importlib_metadata 4.8.3).

  • bpo-44893: Объекты EntryPoint больше не являются кортежами. Рекомендуемый способ доступа - по атрибуту („.name“, „.group“) или аксессору („.load()“). Доступ по индексу устарел и вызовет предупреждение об устаревании.

  • bpo-22815: Выведите неожиданные успехи вместе с неудачами и ошибками в резюме в unittest.TextTestResult.

  • bpo-22047: Разрешить параметры с именами add_argument_group() и add_argument_group() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Эти функции никогда не поддерживались и не всегда работают корректно. Эти функции существуют в API случайно, благодаря наследованию, и будут удалены в будущем.

  • bpo-26952: Разрешить параметры с именами argparse и ValueError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45615: Разрешить параметры с именами traceback и TypeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-16594: Добавьте флаг allow_reuse_port в сокетсервер.

  • bpo-27718: Разрешить параметры с именами signal и signal() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46032: Разрешить параметры с именами registry() и functools.singledispatch() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46014: Разрешить параметры с именами typing.Union и types.UnionType с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27062: Разрешить параметры с именами __all__ и inspect с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46018: Убедитесь, что math.expm1() не поднимается при недополнении.

  • bpo-46016: Разрешить параметры с именами F_DUP2FD и F_DUP2FD_CLOEXEC с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45755: Разрешить параметры с именами typing и dir() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45874: Пустая строка запроса, не содержащая аргументов запроса, теперь корректно обрабатывается в urllib.parse.parse_qsl. Раньше это вызывало проблемы, когда был включен строгий разбор.

  • bpo-44674: Изменение того, как классы данных запрещают изменять значения по умолчанию. Раньше использовался список известных типов (list, dict, set). Теперь он запрещает нехешируемым объектам быть значениями по умолчанию. Он использует нехешируемость как прокси для мутабельности. Исправление Эрика В. Смита, идея Раймонда Хеттингера.

  • bpo-23882: Удалите поддержку пакетов пространств имен (PEP 420) из unittest discovery. Она была введена в Python 3.4, но была нарушена с Python 3.7.

  • bpo-25066: Разрешить параметры с именами __repr__() и multiprocessing.Event с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45643: Добавлено signal.SIGSTKFLT на платформах, где этот сигнал определен.

  • bpo-44092: Fetch across rollback больше не вызывает InterfaceError. Вместо этого мы предоставляем библиотеке SQLite самой решать эти проблемы. Исправление Эрленда Э. Аасланда.

  • bpo-42413: Разрешить параметры с именами concurrent.futures.TimeoutError и asyncio.TimeoutError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-46196: Метод документа cmd.Cmd.columnize().

  • bpo-46120: Разрешить параметры с именами | и Union с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46109: Разрешить параметры с именами importlib.resources и importlib.resources.abc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-19737: Обновите документацию для функции globals().

Тесты

  • bpo-46296: Разрешить параметры с именами enum и _use_args_ == True с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46205: Исправление зависания в runtest_mp из-за состояния гонки

  • bpo-46263: Исправление test_capi на FreeBSD 14-dev: указание jemalloc не заполнять освобожденную память нежелательными байтами.

  • bpo-46262: Разрешить параметры с именами ValueError и enum.Flag._missing_() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46150: Разрешить параметры с именами fakename и test_pathlib.PosixPathTest.test_expanduser с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46129: Разрешить параметры с именами asyncio.locks и unittest.IsolatedAsyncioTestCase с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23819: Исправлены тесты asyncio в оптимизированном для python режиме. Исправление от Kumar Aditya.

  • bpo-46114: Исправьте тестовый пример для версии OpenSSL 3.0.1. В OpenSSL 3.0 используется 0xMNN00PP0L.

Построить

  • bpo-44133: Если для Python установлено значение --without-static-libpython, статическая библиотека Python (libpython.a) больше не собирается. Исправление Виктора Стиннера.

  • bpo-44133: Разрешить параметры с именами --enable-shared и python с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40280: Разрешить параметры с именами configure и --with-emscripten-target с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46315: Добавлены и исправлены проверки #ifdef HAVE_FEATURE для функциональности, недоступной на платформе WASI.

  • bpo-45723: Разрешить параметры с именами configure и select.epoll() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46263: Разрешить параметры с именами configure и MULTIARCH с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46106: Обновление OpenSSL до версии 1.1.1m в сборках Windows, сборках установщика macOS и CI. Исправление от Кумара Адитьи.

  • bpo-46088: Автоматическое обнаружение или установка среды выполнения bootstrap Python при сборке из Visual Studio.

  • bpo-46072: Добавьте опцию конфигурации –with-pystats для включения сбора внутренней статистики.

  • bpo-40280: Разрешить параметры с именами Tools/wasm и config.site с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46023: Разрешить параметры с именами makesetup и Modules/Setup.local с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45949: Разрешить параметры с именами freeze_module и --with-freeze-module с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Windows

  • bpo-46217: Удален параметр, который не поддерживался в Windows 8.1 и ранних версиях Windows 10 и мог вызывать сбои в сборке или во время выполнения.

macOS

  • bpo-40477: Приложение Python Launcher для macOS теперь корректно запускает скрипты и, при необходимости, приложение Terminal при запуске на последних версиях macOS.

C API

  • bpo-46236: Разрешить параметры с именами PyFunction_GetAnnotations() и tuple с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46140: Разрешить параметры с именами PyBuffer_GetPointer() и PyBuffer_FromContiguous() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45855: Документируйте, что аргумент no_block в PyCapsule_Import() теперь не имеет значения.

  • bpo-45855: Разрешить параметры с именами PyImport_ImportModuleNoBlock() и PyImport_ImportModule() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46007: Макрос PyUnicode_CHECK_INTERNED() был исключен из ограниченного C API. Он никогда не был пригоден для использования, поскольку использовал внутренние структуры, недоступные в ограниченном C API. Исправление Виктора Стиннера.

Python 3.11.0 alpha 3

Дата выхода: 2021-12-08

Ядро и встроенные модули

  • bpo-46009: Разрешить параметры с именами gen_func().send(0) и gen_func().throw(TypeError(...) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-46004: Исправьте расположение SyntaxError для ошибок, связанных с циклами for с недопустимыми целями. Исправление от Pablo Galindo

  • bpo-45711: Разрешить параметры с именами _PyErr_ChainStackItem() и exc_info с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45607: Разрешить параметры с именами __note__ и BaseException с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45947: Помещаем указатели на dict и значения непосредственно перед заголовком GC. Это уменьшает количество зависимых загрузок памяти для доступа к dict или значениям с 3 до 1.

  • bpo-45915: Разрешить параметры с именами is_valid_fd и fcntl(fd, F_GETFD) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44530: Разрешить параметры с именами code.__new__ и audit event с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42268: Не выполнять шаг конфигурирования, если выбранный компилятор не поддерживает функцию очистки памяти. Исправление от Пабло Галиндо

  • bpo-45711: Разрешить параметры с именами exc_info и type с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45727: Доработайте пользовательскую синтаксическую ошибку, предполагающую, что запятая может отсутствовать, чтобы она срабатывала только при обнаружении выражений между скобками или круглыми скобками. Исправление от Пабло Галиндо

  • bpo-45885: Специализация опкода COMPARE_OP с использованием механизма PEP 659.

  • bpo-45786: Выделяет место для фрейма интерпретатора в объекте фрейма, чтобы избежать дополнительного выделения, когда объект фрейма переживет активацию фрейма.

  • bpo-45614: Исправьте отображение traceback для исключений с недопустимым именем модуля.

  • bpo-45813: Исправление сбоя при вызове coro.cr_frame.clear() после того, как coroutine была освобождена.

  • bpo-45811: Улучшение ошибок токенизатора при встрече с невидимыми управляющими символами в парсере. Исправление от Pablo Galindo

  • bpo-45848: Позволяет парсеру получать строки ошибок непосредственно из закодированных файлов. Исправление от Пабло Галиндо

  • bpo-45709: Восстановление поведения из 3.10 при трассировке исключения, вызванного внутри оператора with.

  • bpo-44525: Добавляет новый опкод COPY_FREE_VARS, чтобы сделать копирование свободных переменных из функции во фрейм явным. Помогает оптимизировать вызовы функций Python.

  • bpo-45829: Разрешить параметры с именами BINARY_SUBSCR и __getitem__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45826: Разрешить параметры с именами .with_traceback(None) и NameError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45822: Исправлена ошибка в парсере, из-за которой он не соблюдал кодировку cookies PEP 263, когда флаги не были указаны. Исправление от Пабло Галиндо

  • bpo-45820: Исправление segfault, когда парсер завершал работу, не прочитав никаких входных данных. Исправление от Pablo Galindo

  • bpo-45636: Упростите реализацию BINARY_OP за счет индексации в массив указателей функций (а не переключения на oparg).

  • bpo-42540: Исправление сбоя при вызове os.fork() с активным не дефолтным аллокатором памяти.

  • bpo-45738: Исправлено вычисление места ошибки для недопустимых символов продолжения в парсере. Исправление от Pablo Galindo.

  • bpo-45636: Удалите существующий «быстрый путь» для старого стиля форматирования строк, поскольку он больше не оказывает заметного влияния.

  • bpo-45753: Сделайте проверку рекурсии немного более эффективной, отслеживая количество вызовов, оставшихся до переполнения.

  • bpo-45773: Исправление зависания компилятора при попытке оптимизировать определенные шаблоны переходов.

  • bpo-45764: Разрешить параметры с именами ( и def с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    >>> def f:
      File "<stdin>", line 1
        def f:
             ^
    SyntaxError: expected '('
    
  • bpo-45609: Специализация опкода STORE_SUBSCR с использованием механизма PEP 659.

  • bpo-45636: Разрешить параметры с именами BINARY_* и INPLACE_* с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45582: Разрешить параметры с именами getpath и sys с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45450: Улучшено сообщение о синтаксической ошибке для аргументов с круглыми скобками. Исправление от Пабло Галиндо.

Библиотека

  • bpo-27946: Разрешить параметры с именами xml.etree.ElementTree.Element и attrib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45711: Разрешить параметры с именами asyncio и PyErr_Fetch() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23819: Заменены утверждения на исключения в asyncio, исправление Кумара Адитьи.

  • bpo-13236: Разрешить параметры с именами unittest.TextTestResult и unittest.TextTestRunner с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45917: Добавлена функция math.exp2(), которая возвращает 2, возведенное в степень x.

  • bpo-37658: Исправление проблемы, когда при определенных условиях asyncio.wait_for() может позволить корутине успешно завершиться, но не вернуть результат, что может привести к утечке памяти или другим проблемам.

  • bpo-45876: Повышение точности функций stdev() и pstdev() в модуле статистики. Если в качестве входных данных используются плавающие числа или дроби, то на выходе получаются правильно округленные плавающие числа

  • bpo-44649: Обработка dataclass(slots=True) с полем, которое имеет значение по умолчанию, но для которого init=False.

  • bpo-45803: Добавлен недостающий параметр kw_only в dataclasses.make_dataclass().

  • bpo-45837: turtle.RawTurtle.settiltangle() устарел с Python 3.1, теперь он выдает предупреждение об устаревании и будет удален в Python 3.13.

    Вместо этого используйте turtle.RawTurtle.tiltangle().

    turtle.RawTurtle.tiltangle() ранее был ошибочно помечен как устаревший, его docstring была исправлена.

    Патч от Хьюго ван Кеменаде.

  • bpo-45831: faulthandler теперь могут записывать строки только ASCII (например, имена файлов и названия функций) одним вызовом write() при дампе трассировки. Это снижает риск получения нечитаемого дампа, когда два потока или два процесса одновременно сбрасывают traceback в один и тот же файл (например, stderr). Исправление Виктора Стиннера.

  • bpo-45828: sqlite Обратные вызовы C теперь используют невыводимые исключения, если включено отслеживание обратных вызовов. Исправление Эрленда Э. Аасланда.

  • bpo-41735: Разрешить параметры с именами zlib.Decompress.flush() и PyObject_GetBuffer с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45235: Исправлена ошибка argparse, которая приводила к регрессии в обработке аргументов по умолчанию для субпарсеров. Это не позволяло аргументам уровня листа иметь приоритет над аргументами уровня корня.

  • bpo-45754: Разрешить параметры с именами sqlite3 и SQLITE_LIMIT_LENGTH с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45766: Добавлена опция пропорциональный в statistics.linear_regression().

  • bpo-45765: В importlib.metadata исправлено обнаружение дистрибутива при пустом пути.

  • bpo-45757: Разрешить параметры с именами dis и EXTENDED_ARG с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45644: Форматирование JSON-файла на месте с помощью python3 -m json.tool infile infile теперь работает корректно, раньше файл оставался пустым. Исправление Криса Весселинга.

  • bpo-45703: Разрешить параметры с именами sys.path и importlib.invalidate_caches() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45535: Улучшите вывод dir() с помощью Enums.

  • bpo-45664: Разрешить параметры с именами types.resolve_bases() и types.new_class() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45663: Разрешить параметры с именами dataclasses.is_dataclass() и types.GenericAlias с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45662: Разрешить параметры с именами dataclasses.InitVar и InitVar[list[int]] с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43137: Запуск веб-браузеров GNOME с помощью инструмента gio вместо устаревшего gvfs-open

  • bpo-45429: В Windows time.sleep() теперь использует таймер с ожиданием, который поддерживает таймеры высокого разрешения. Исправление от Donghee Na и Eryk Sun.

  • bpo-37295: Разрешить параметры с именами math.comb() и math.perm() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45514: Утратившие актуальность функции в importlib.resources.

  • bpo-45507: Добавьте тесты на усеченные/пропущенные трейлеры в реализацию gzip.decompress.

  • bpo-45359: Разрешить параметры с именами PEP 585 и graphlib.TopologicalSorter с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44733: Разрешить параметры с именами max_tasks_per_child и concurrent.futures.ProcessPoolExecutor с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28806: Улучшена библиотека netrc. Файл netrc больше не должен содержать все токены. А если имя пользователя анонимное, то проверка безопасности больше не нужна.

  • bpo-43498: Избегайте возможной «RuntimeError: dictionary changed size during iteration » при настройке количества процессов в ProcessPoolExecutor.

  • bpo-42158: Добавить MIME-типы для N-квадратов, N-триплетов, Notation3 и TriG в mimetypes.

  • bpo-30533: Добавить inspect.getmembers_static() , он возвращает все члены, не вызывая динамического поиска по протоколу дескриптора. Исправление от Weipeng Hong.

Документация

  • bpo-42238: Разрешить параметры с именами make -C Doc suspicious и make -C Doc check с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45840: Улучшение перекрестных ссылок в документации по модели данных.

  • bpo-45640: Правильно размеченные грамматические лексемы в документации теперь кликабельны и ведут к определению данного элемента грамматики. Исправление Артура Мильхиора.

  • bpo-45788: Свяжите документ по sys.prefix с документом по sysconfig о путях установки.

  • bpo-45772: socket.socket документация исправлена на класс из функции.

  • bpo-45392: Обновите docstring встроенного type, чтобы удалить лишнюю строку и упомянуть аргументы ключевого слова для конструктора.

  • bpo-45250: Обновите документацию, чтобы отметить, что CPython не требует, чтобы итераторы последовательно определяли __iter__.

  • bpo-25381: В главе «Расширение» документации по расширению обновите параграф о глобальных переменных, содержащих информацию об исключениях.

  • bpo-43905: Разрешить параметры с именами astuple() и asdict() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Тесты

  • bpo-45695: Сборки вне дерева с каталогом исходных текстов, доступным только для чтения, теперь проверяются CI.

  • bpo-19460: Добавить новый тест для Lib/email/mime/nonmultipart.py::MIMENonMultipart.

  • bpo-45835: Исправление состояния гонки в тестах test_queue с несколькими «питающими» потоками.

  • bpo-45783: Тест для инструмента замораживания теперь обрабатывает перемещение и удаление файлов.

  • bpo-45745: Разрешить параметры с именами --findleaks и --fail-env-changed с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45701: Разрешить параметры с именами tuple и functools.lru_cache() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Построить

  • bpo-44035: CI теперь проверяет, что файлы autoconf были перегенерированы с помощью текущего и непропатченного пакета autoconf.

  • bpo-45950: Разрешить параметры с именами _bootstrap_python и _bootstrap_python с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45881: Разрешить параметры с именами configure и --with-build-python с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40280: Платформа Emscripten теперь использует суффикс .wasm по умолчанию.

  • bpo-40280: Отключение непригодных модулей расширения ядра в целях WASM/Emscripten.

  • bpo-40280: Разрешить параметры с именами configure и shutdown с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40280: Разрешить параметры с именами configure и fork1, getegid, geteuid, getgid, getppid, getuid, opendir, pipe, system, wait, ttyname с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33393: Разрешить параметры с именами config.guess и config.sub с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45866: make regen-all теперь выдает тот же результат при запуске из каталога, отличного от дерева исходных текстов: при сборке Python из дерева исходных текстов. pegen теперь удаляет из каталога заголовок «generated by pygen from <FILENAME>» Исправление Виктора Стиннера.

  • bpo-40280: Разрешить параметры с именами configure и wasm32 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41498: Разрешить параметры с именами sigset_t и signal с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Основано на патче Романа Юрчака для пиодида.

  • bpo-45881: Разрешить параметры с именами setup.py и CC с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45886: Разрешить параметры с именами _freeze_module и make FREEZE_MODULE=../x86_64/Program/_freeze_module с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45873: Разрешить параметры с именами _bootstrap_python и $(PYTHON_FOR_REGEN) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45847: Разрешить параметры с именами PY_STDLIB_MOD и addext() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45723: Добавьте помощники autoconf для сохранения и восстановления переменных окружения:

    • SAVE_ENV: Разрешить параметры с именами $CFLAGS и $LDFLAGS с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • RESTORE_ENV: Разрешить параметры с именами $CFLAGS и $LDFLAGS с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • WITH_SAVE_ENV([SCRIPT]): Разрешить параметры с именами SCRIPT и SAVE_ENV с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Патч Эрленда Э. Аасланда.

  • bpo-45573: Обязательные модули ядра, необходимые для загрузки Python, теперь находятся в Modules/Setup.bootstrap.

  • bpo-45573: Разрешить параметры с именами configure и Modules/Setup.stdlib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45573: Разрешить параметры с именами configure и PY_STDLIB_MOD с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45816: Python теперь поддерживает сборку с Visual Studio 2022 (MSVC v143, VS Version 17.0). Исправление от Jeremiah Vivian.

  • bpo-45800: Разрешить параметры с именами pyexpat и configure с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45798: Разрешить параметры с именами decimal и configure с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45723: Разрешить параметры с именами configure и --with-pkg-config с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45774: Разрешить параметры с именами sqlite3 и configure с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45763: Разрешить параметры с именами zlib и bz2 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45747: зависимости сборки gdbm и dbm теперь обнаруживаются configure.

  • bpo-45743: На macOS система сборки больше не передает search_paths_first компоновщику. Этот флаг используется по умолчанию со времен Xcode 4 / macOS 10.6.

  • bpo-45723: Разрешить параметры с именами configure.ac и STDC_HEADERS с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45723: configure теперь выводит предупреждение при отсутствии pkg-config.

  • bpo-45731: Разрешить параметры с именами configure --enable-loadable-sqlite-extensions и PY_SQLITE_ENABLE_LOAD_EXTENSION с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45723: configure.ac теперь использует пользовательские макросы-помощники и AC_CACHE_CHECK для упрощения и ускорения работы configure.

  • bpo-45696: Пропускает шаг маршала для замороженных модулей, генерируя код на C, который создает набор готовых к использованию объектов кода. Это ускоряет время запуска еще на 10 % или более.

  • bpo-45561: Запустите инструмент smelly.py из $(srcdir).

Windows

  • bpo-46105: Исправлено вычисление sys.path в venv на Windows.

  • bpo-45901: Разрешить параметры с именами *.py и script.py args с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45616: Исправление способности Python Launcher различать версии 3.1 и 3.10 при явном запросе одной из них. Ранее 3.1 использовалась, если 3.10 была запрошена, но не установлена, а 3.10 использовалась, если 3.1 была запрошена, но 3.10 была установлена.

  • bpo-45850: Внесите изменения для сборки с глубоко замороженными модулями на Windows. Обратите внимание, что теперь нам требуется Python 3.10 в качестве «загрузочного» или «хостового» Python.

  • bpo-45732: Обновление поставляемого Tcl/Tk до версии 8.6.12.

  • bpo-45720: Внутренняя ссылка на shlwapi.dll была удалена, чтобы улучшить время запуска. Эта DLL больше не будет загружаться при запуске каждого процесса Python.

macOS

  • bpo-45732: Обновите установщик python.org macOS для использования Tcl/Tk 8.6.12.

C API

  • bpo-39026: Исправьте Python.h для сборки расширений C с помощью Xcode: удалите относительный include из Include/cpython/pystate.h.

Python 3.11.0 alpha 2

Дата выхода: 2021-11-05

Ядро и встроенные модули

  • bpo-45716: Разрешить параметры с именами SyntaxError и True с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45688: Разрешить параметры с именами sys.stdlib_module_names и _scproxy с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45379: Уточните сообщение ImportError, когда мы пытаемся явно импортировать замороженный модуль, но замороженные модули отключены.

  • bpo-44525: Специализация простых вызовов функций Python (без starargs, ключевого слова dict или закрытия)

  • bpo-45530: Случаи сортировки с использованием кортежей в качестве ключей теперь могут быть значительно быстрее в некоторых случаях. Исправление Тима Питерса.

    Порядок результатов может отличаться от предыдущих версий, если элементы кортежа не определяют общее упорядочивание (см. Сравнение ценностей для получения информации об общем упорядочивании). В целом верно, что результат сортировки просто не может быть хорошо определен в отсутствие общего упорядочивания элементов списка.

  • bpo-45526: В obmalloc установите ADDRESS_BITS так, чтобы не игнорировать ни одного бита (раньше игнорировалось 16). Это безопаснее в том случае, если ядро предоставляет виртуальные адреса пользовательского пространства, диапазон которых превышает 48 бит.

  • bpo-30570: Разрешить параметры с именами issubclass() и __bases__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45521: Исправление ошибки в коде радиксного дерева obmalloc. На 64-битных машинах эта ошибка приводит к тому, что дерево хранит 46 бит виртуальных адресов, а не 48 бит, как предполагалось.

  • bpo-45494: Исправление падения парсера при сообщении об ошибках, связанных с недопустимыми символами продолжения. Исправление от Pablo Galindo.

  • bpo-45445: Python теперь не инициализируется, если находит недопустимую опцию -X в командной строке. Исправление от Пабло Галиндо.

  • bpo-45340: Атрибуты объекта хранятся в массиве, а не в словаре. Словарь объекта создается лениво, только когда это необходимо. Снижает потребление памяти типичным объектом Python примерно на 30 %. Исправление Марка Шеннона.

  • bpo-45408: Исправление сбоя в парсере при сообщении об ошибках токенизатора, возникающих одновременно с обнаружением незакрытых круглых скобок. Исправление от Пабло Галиндо.

  • bpo-29410: Добавьте SipHash13 для алгоритма хэширования строк и используйте его по умолчанию.

  • bpo-45385: Исправление утечки ссылок из descr_check. Исправление от Donghee Na.

  • bpo-45367: Разрешить параметры с именами BINARY_MULTIPLY и BINARY_MULTIPLY_INT с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21736: Разрешить параметры с именами __file__ и __path__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45020: Разрешить параметры с именами module.__spec__.loader_state.origname и module.__spec__.name с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45324: В FrozenImporter.find_spec() мы теперь сохраняем информацию, необходимую в exec_module() для загрузки модуля. Это изменение в основном затрагивает внутренние детали, а не меняет поведение импортера.

  • bpo-45292: Разрешить параметры с именами PEP 654 и ExceptionGroup с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40116: Изменение в реализации разделенных словарей. Классы, экземпляры которых отличаются либо точным набором атрибутов, либо порядком, в котором эти атрибуты заданы, по-прежнему могут иметь общие ключи. Это не должно оказать заметного влияния на пользователей Python или C-API. Исправление Марка Шеннона.

  • bpo-44050: Расширения, указывающие, что они используют глобальное состояние (путем установки m_size в -1), снова могут использоваться в нескольких интерпретаторах. Это возвращает к поведению Python 3.8.

  • bpo-44525: Установите инфраструктуру начальной специализации для опкода CALL_FUNCTION. Реализованы начальные специализации для вызовов функций C:

    • CALL_FUNCTION_BUILTIN_O для флага METH_O.

    • CALL_FUNCTION_BUILTIN_FAST для флага METH_FASTCALL без ключевых слов.

    • CALL_FUNCTION_LEN для len(o).

    • CALL_FUNCTION_ISINSTANCE для isinstance(o, t).

  • bpo-44511: Улучшение генерируемого байткода для классов и шаблонов отображения.

  • bpo-43706: Разрешить параметры с именами enumerate() и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-45679: Разрешить параметры с именами typing.Literal и Literal[True, 2] с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42064: Преобразование sqlite3 в многофазную инициализацию (PEP 489). Патчи Эрленда Э. Аасланда.

  • bpo-45438: Исправьте строковое представление typing.Signature для общих встроенных типов.

  • bpo-45613: Разрешить параметры с именами sqlite3 и sqlite3.threadsafety с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45574: Исправьте предупреждение о том, что print_escape не используется.

  • bpo-45581: Разрешить параметры с именами sqlite3.connect() и MemoryError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45557: Разрешить параметры с именами pprint.pprint() и False с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44019: Разрешить параметры с именами operator.call() и operator.__all__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42174: shutil.get_terminal_size() теперь возвращается к нормальным значениям, если количество столбцов или строк равно 0.

  • bpo-35673: Разрешить параметры с именами __loader__ и importlib.machinery.NamespaceLoader с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45515: Разрешить параметры с именами zoneinfo и datetime с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45475: Разрешить параметры с именами gzip.GzipFile и bz2.BZ2File с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45489: Разрешить параметры с именами ForwardRef и | с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42222: Удалена устаревшая поддержка аргументов с плавающей запятой в randrange().

  • bpo-45428: Исправление регрессии в py_compile при чтении имен файлов со стандартного ввода.

  • bpo-45467: Исправление инкрементного декодера и считывателя потока в кодеке «raw-unicode-escape». Ранее они не срабатывали, если управляющая последовательность была разделена.

  • bpo-45461: Исправление инкрементного декодера и считывателя потока в кодеке «unicode-escape». Ранее они не срабатывали, если кодовая последовательность была разделена.

  • bpo-45239: Разрешить параметры с именами email.utils.parsedate_tz() и UnboundLocalError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45417: Исправление квадратичного поведения в модуле enum: Создание классов перечислений с большим количеством записей было квадратичным.

  • bpo-45249: Разрешить параметры с именами traceback.print_exc() и end_offset с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45416: Разрешить параметры с именами asyncio.Condition и asyncio.Lock с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20028: Пустой escapechar/quotechar не допускается при инициализации csv.Dialect. Исправление от Ваджраски Кока и Донгхи На.

  • bpo-44904: Разрешить параметры с именами doctest и classmethod с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45406: Разрешить параметры с именами inspect.getmodule() и FileNotFoundError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45411: Добавьте расширения для файлов с субтитрами - .srt и .vtt - в модуль mimetypes.py.

  • bpo-10716: Перевели pydoc на HTML5 (без изменения внешнего вида). Побочным эффектом является обновление ServerHTMLDoc xmlrpc, который теперь тоже использует CSS. cgitb теперь меньше полагается на pydoc (так как не может использовать CSS-файл).

  • bpo-27580: Добавьте поддержку нулевых символов в csv.

  • bpo-45262: Предотвращение use-after-free в asyncio. Убедитесь, что кэшированный держатель запущенного цикла очищается при деаллоке, чтобы предотвратить использование после освобождения в get_running_loop

  • bpo-45386: Разрешить параметры с именами xmlrpc.client и strftime с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20028: Улучшено сообщение об ошибке при инициализации csv.Dialect. Исправления от Ваджраски Кока и Донгхи На.

  • bpo-45343: Обновление поставляемых pip до версии 21.2.4 и setuptools до версии 58.1.0

  • bpo-45328: Разрешить параметры с именами http.client.HTTPConnection и TCP_NODELAY с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45243: Разрешить параметры с именами setlimit() и getlimit() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45320: Удалено из модуля inspect:

    • функция getargspec, устаревшая с Python 3.0;

      используйте вместо этого inspect.signature() или inspect.getfullargspec().

    • formatargspec: Разрешить параметры с именами inspect.signature() и Signature с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • Signature.from_builtin: Разрешить параметры с именами Signature.from_function и Signature.from_callable() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Патч от Хьюго ван Кеменаде.

  • bpo-45192: Разрешить параметры с именами tempfile._infer_return_type и dir с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Патч от Кьюнгмина Ли.

  • bpo-45160: При отслеживании переменной tkinter, используемой в ttk OptionMenu, обратные вызовы больше не выполняются дважды.

  • bpo-25625: Разрешить параметры с именами chdir() и chdir() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24139: Добавьте поддержку расширенных кодов результатов SQLite в sqlite3.Error. Исправление Эрленда Э. Аасланда.

  • bpo-24444: Исправлена ошибка, возникавшая при отображении справки argparse, когда в справке для опции было установлено 1+ пробелов или когда аргумент choices являлся пустым контейнером.

  • bpo-44547: Разрешить параметры с именами Fraction.__int__ и fractions.Fraction с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40321: Разрешить параметры с именами urllib и RFC 7538 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41374: Убедитесь, что константы socket.TCP_* открыты в Cygwin 3.1.6 и выше.

  • bpo-35970: Добавляет флаг помощи в интерфейс командной строки модуля base64. Патч внесен Робертом Куской.

Документация

  • bpo-45726: Разрешить параметры с именами functools.singledispatch() и functools.singledispatchmethod с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45680: Разрешить параметры с именами GenericAlias и __class_getitem__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45618: Обновите версию Sphinx, использованную для создания документации, до 4.2.0. Исправление от Maciej Olko.

  • bpo-45655: Добавьте новый раздел «соответствующие PEP» в верхнюю часть документации для модуля typing. Исправление Алекса Уэйгуда.

  • bpo-45604: Разрешить параметры с именами level и multiprocessing.log_to_stderr с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45516: Добавьте описание протокола в документацию importlib.abc.TraversableResources.

  • bpo-45464: Упоминание в документации Built-in Exceptions о том, что наследование от нескольких типов исключений в одном подклассе не рекомендуется из-за возможной несовместимости расположения памяти.

  • bpo-45449: Разрешить параметры с именами PEP 585 и collections.abc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45516: Добавьте описание протокола в документацию importlib.abc.Traversable.

  • bpo-20692: Добавьте запись в FAQ по программированию, объясняющую, что для доступа к атрибуту литерала int требуется либо пробел после литерала, либо круглые скобки вокруг него.

Тесты

  • bpo-45678: Добавьте тесты для сценариев, в которых functools.singledispatchmethod укладывается поверх метода, который уже обернут двумя другими декораторами. Исправление Алекса Уэйгуда.

  • bpo-45578: Добавьте тесты для dis.distb()

  • bpo-45678: Добавьте тесты, чтобы убедиться, что functools.singledispatchmethod правильно обертывает атрибуты целевой функции.

  • bpo-45668: Тесты PGO теперь проходят, когда Python собран без модулей расширения тестов.

  • bpo-45577: Разрешить параметры с именами pickle и test_zoneinfo с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45566: Разрешить параметры с именами test_frozen_pickle и test_dataclasses с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43592: test.libregrtest теперь повышает мягкий лимит ресурсов для максимального количества дескрипторов файлов, когда значение по умолчанию слишком мало для нашего тестового набора, как это часто случалось на macOS.

  • bpo-39679: Разрешить параметры с именами @functools.singledispatchmethod и @classmethod с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45410: Когда libregrtest порождает рабочий процесс, stderr теперь записывается в stdout, чтобы сохранить порядок сообщений. Используйте одну трубу для stdout и stderr, а не две. Раньше сообщения выводились не по порядку, что затрудняло анализ логов buildbot Исправлено Виктором Стиннером.

  • bpo-45402: Исправьте test_tools.test_sundry(), когда Python собирается из дерева: исправьте, как инструмент freeze_modules.py находит программу _freeze_module. Исправление Виктора Стиннера.

  • bpo-45403: Исправьте test_sys.test_stdlib_dir(), когда Python собран вне дерева исходных текстов: сравнивайте нормализованные пути. Исправление Виктора Стиннера.

  • bpo-45400: Исправьте test_name_error_suggestions_do_not_trigger_for_too_many_locals() из test_exceptions, если имя каталога содержит «a1» (например, «Python-3.11.0a1»): используйте более строгое регулярное выражение. Исправление Виктора Стиннера.

  • bpo-10572: Разрешить параметры с именами sqlite3 и test_sqlite с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Построить

  • bpo-43158: Разрешить параметры с именами setup.py и _uuid с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45666: Разрешить параметры с именами swprintf и %s с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45548: Разрешить параметры с именами Modules/Setup и Modules/makesetup с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45548: Разрешить параметры с именами math и cmath с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45595: Разрешить параметры с именами setup.py и makesetup с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45571: Разрешить параметры с именами Modules/Setup и PY_CFLAGS_NODIST с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45570: Разрешить параметры с именами pyexpat и _elementtree с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43974: Разрешить параметры с именами setup.py и Py_BUILD_CORE_MODULE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45548: Заполните недостающие записи в Modules/Setup.

  • bpo-45532: Разрешить параметры с именами sys.version и main с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45536: Скрипт configure теперь проверяет, предоставляют ли заголовки и библиотеки OpenSSL необходимые API. Проверяется большинство распространенных API. Проверка обнаруживает устаревший или отсутствующий OpenSSL. Сбои не приводят к остановке конфигурации.

  • bpo-45221: Разрешить параметры с именами LDFLAGS и CPPFLAGS с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45440: Разрешить параметры с именами <math.h> и copysign() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45405: Разрешить параметры с именами internal configure error и configure с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45433: Избегайте связывания libpython с libcrypt.

Windows

  • bpo-43652: Обновление Tcl/Tk до версии 8.6.11, на этот раз действительно. Предыдущее обновление ошибочно включало 8.6.10.

  • bpo-45337: venv теперь предупреждает, когда к созданной среде может потребоваться доступ по другому пути из-за перенаправлений, ссылок или перекрестков. Также теперь он корректно устанавливает или обновляет компоненты, если требуется альтернативный путь.

  • bpo-43851: Сборка SQLite SQLITE_OMIT_AUTOINIT под Windows. Исправление от Эрленда Э. Аасланда.

macOS

  • bpo-44828: Избегайте сбоя в диалоговом окне файла tkinter на macOS 12 Monterey при использовании Tk 8.6.11, предоставляемого установщиками python.org macOS. Исправление внесено Марком Каллером из проекта Tk.

IDLE

  • bpo-45495: Добавьте контекстные ключевые слова „case“ и „match“ в список завершений.

C API

  • bpo-29103: PyType_FromSpec* теперь копирует имя класса из спецификации в буфер, принадлежащий классу, так что оригинал может быть безопасно деаллоцирован. Исправление Петра Викторина.

  • bpo-45522: Внутренние фрилисты для объектов frame, float, list, dict, async-генераторов и контекста теперь могут быть отключены.

  • bpo-35134: Разрешить параметры с именами PyWeakref_GET_OBJECT() и PyWeakReference с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35081: Разрешить параметры с именами interpreteridobject.h и Include/ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35134: Разрешить параметры с именами cellobject.h и classobject.h с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45474: Следующие элементы больше не доступны, когда определена Py_LIMITED_API:

    Они не являются частью limited API.

    Патч Виктора Стиннера.

  • bpo-45434: Разрешить параметры с именами pystrhex.h и <Python.h> с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45440: Разрешить параметры с именами Py_FORCE_DOUBLE() и Py_IS_INFINITY() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45434: Разрешить параметры с именами <Python.h> и <stdlib.h> с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41123: Разрешить параметры с именами Py_UNICODE_COPY() и Py_UNICODE_FILL() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45412: Удалите следующие математические макросы, использующие переменную errno:

    • Py_ADJUST_ERANGE1()

    • Py_ADJUST_ERANGE2()

    • Py_OVERFLOWED()

    • Py_SET_ERANGE_IF_OVERFLOW()

    • Py_SET_ERRNO_ON_MATH_ERROR()

    Патч Виктора Стиннера.

  • bpo-45395: Пользовательские замороженные модули (массив, установленный в PyImport_FrozenModules) теперь рассматриваются как дополнения, а не заменяют все замороженные модули по умолчанию. Замороженные модули stdlib по-прежнему можно отключить, установив поле «code» записи пользовательского массива в NULL.

  • bpo-43760: Разрешить параметры с именами PyThreadState_EnterTracing() и PyThreadState_LeaveTracing() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44220: PyStructSequence_UnnamedField добавлено в стабильный ABI.

Python 3.11.0 alpha 1

Дата выхода: 2021-10-05

Безопасность

  • bpo-42278: Разрешить параметры с именами tempfile.mktemp() и TemporaryDirectory с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44600: Исправление неправильных номеров строк при трассировке некоторых неудачных шаблонов в операторах match. Исправление от Чарльза Беркланда.

  • bpo-41180: Разрешить параметры с именами marshal и code.__init__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44394: Обновите вендовую копию libexpat до версии 2.4.1 (с 2.2.8), чтобы получить исправление для CVE-2013-0340 уязвимости «Billion Laughs». Эта копия чаще всего используется в Windows и macOS.

  • bpo-43124: Разрешить параметры с именами putcmd и smtplib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44022: Разрешить параметры с именами http.client и 100 Continue с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-43760: Количество аппаратных ветвлений на одну диспетчерскую инструкцию уменьшено с двух до одного за счет добавления специальной инструкции для трассировки. Исправление Марка Шеннона.

  • bpo-45061: Добавьте деаллокатор к типу bool, чтобы обнаружить ошибки рефкаунта в расширениях на C, которые по ошибке вызывают Py_DECREF(Py_True) или Py_DECREF(Py_False). Также выявляются ошибки пересчета при ошибочном уничтожении синглтона пустого кортежа или синглтона пустой строки Unicode. Исправление Виктора Стиннера.

  • bpo-24076: sum() была дополнительно оптимизирована для суммирования одноразрядных целых чисел.

  • bpo-45190: Обновление баз данных Юникода до версии Юникод 14.0.0.

  • bpo-45167: Исправьте глубокое копирование объектов types.GenericAlias.

  • bpo-45155: Разрешить параметры с именами int.to_bytes() и int.from_bytes() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44219: Разрешить параметры с именами isatty и os.isatty() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44959: Добавлена обратная реакция на модули расширения с суффиксом „.sl“ на HP-UX

  • bpo-45121: Разрешить параметры с именами Protocol.__init__ и RecursionError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44348: Разрешить параметры с именами BaseException и RecursionError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45123: Исправьте PyAiter_Check, чтобы он проверял только наличие __anext__ (не __aiter__). Переименуйте PyAiter_Check в PyAIter_Check, PyObject_GetAiter -> PyObject_GetAIter.

  • bpo-1514420: Интерпретатор больше не пытается открыть файлы с именами в угловых скобках (например, «<string>» или «<stdin>») при форматировании исключения.

  • bpo-41031: Совпадение форматирования непечатаемых исключений и исключений в модуле __main__ в коде C и Python.

  • bpo-37330: Разрешить параметры с именами open() и io.open() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45083: Когда интерпретатор выводит исключение, его имя теперь содержит полное имя класса. Ранее к имени модуля присоединялось только имя класса, что иногда приводило к некорректному отображению полного имени.

    (Эта проблема повлияла только на рендеринг исключений в коде C, модуль traceback уже использовал qualname).

  • bpo-34561: Разрешить параметры с именами powersort() и list.sort() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45056: Компилятор теперь удаляет неиспользуемые константы из co_consts.

  • bpo-45020: Добавьте новый параметр командной строки, «-X frozen_modules=[on|off]», чтобы отказаться от использования (или включить) необязательных замороженных модулей. По умолчанию установлено значение «on» (или «off», если он выполняется из дерева исходных текстов).

  • bpo-45012: Разрешить параметры с именами posix и stat() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45018: Исправлено замазывание итераторов диапазонов, которые выполняли итерацию более 2**32 раз.

  • bpo-45000: Разрешить параметры с именами SyntaxError и __debug__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44963: Разрешить параметры с именами send() и throw() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44962: Исправление гонки в WeakKeyDictionary, WeakValueDictionary и WeakSet, когда два потока пытаются зафиксировать последнее ожидающее удаление. Это исправляет asyncio.create_task и устраняет потерю данных в asyncio.run, когда не выполняется shutdown_asyncgens

  • bpo-24234: Разрешить параметры с именами __bytes__() и bytes с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24234: Разрешить параметры с именами __complex__() и complex с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44954: Исправлена ошибка, при которой результат float.fromhex('0x.8p-1074') округлялся не в ту сторону.

  • bpo-44947: Уточнение синтаксической ошибки для запятых в конце операторов импорта. Исправление от Пабло Галиндо.

  • bpo-44945: Специализация инструкции BINARY_ADD с использованием механизма PEP 659. Добавляет пять новых инструкций:

    • BINARY_ADD_ADAPTIVE

    • BINARY_ADD_FLOAT

    • BINARY_ADD_INT

    • BINARY_ADD_UNICODE

    • BINARY_ADD_UNICODE_INPLACE_FAST

  • bpo-44929: Исправление некоторых крайних случаев представления строки enum.Flag в REPL. Исправление от Пабло Галиндо.

  • bpo-44914: Теги версий классов больше не перерабатываются.

    Это означает, что тег версии служит уникальным идентификатором состояния класса. Мы полагаемся на это для эффективной специализации LOAD_ATTR и других инструкций.

  • bpo-44698: Разрешить параметры с именами float и complex с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44895: Разрешить параметры с именами PYTHONDUMPREFSFILE и --with-trace-refs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44900: Добавьте пять суперинструкций для ускорения PEP 659:

    • LOAD_FAST LOAD_FAST

    • ХРАНИТЬ_БЫСТРО ЗАГРУЖАТЬ_БЫСТРО

    • LOAD_FAST LOAD_CONST

    • LOAD_CONST LOAD_FAST

    • STORE_FAST STORE_FAST

  • bpo-44889: Первоначальная реализация адаптивной специализации LOAD_METHOD. Были добавлены следующие специализированные формы:

    • LOAD_METHOD_CACHED

    • LOAD_METHOD_MODULE

    • LOAD_METHOD_CLASS

  • bpo-44890: Статистика специализации всегда собирается в отладочных сборках.

  • bpo-44885: Исправление расположения ast в f-строках со спецификациями формата и повторяющимися выражениями. Исправление от Pablo Galindo

  • bpo-44878: Удаляем цикл из интерпретатора байткода. Все инструкции завершаются макросом DISPATCH, поэтому цикл теперь не нужен.

  • bpo-44878: Убрали оператор switch для цикла интерпретатора при использовании вычисляемых gotos. Это гарантирует, что у нас будет только одна таблица диспетчеризации в интерпретаторе.

  • bpo-44874: Разрешить параметры с именами Py_TRASHCAN_SAFE_BEGIN и Py_TRASHCAN_SAFE_END с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44872: Используйте новые макросы мусорной корзины (Py_TRASHCAN_BEGIN/END) в файле frameobject.c вместо старых (Py_TRASHCAN_SAFE_BEGIN/END).

  • bpo-33930: Исправление ошибки сегментации с глубокой рекурсией при очистке объектов метода. Исправление от Augusto Goulart и Pablo Galindo.

  • bpo-25782: Исправлена ошибка, при которой PyErr_SetObject зависал, когда текущее исключение имело цикл в своей контекстной цепочке.

  • bpo-44856: Разрешить параметры с именами update_bases() и __build_class__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44826: Начальная реализация адаптивной специализации STORE_ATTR

    Добавлены три специализированные формы STORE_ATTR:

    • STORE_ATTR_SLOT

    • STORE_ATTR_SPLIT_KEYS

    • STORE_ATTR_WITH_HINT

  • bpo-44838: Исправлена ошибка, из-за которой парсер выдавал некорректный пользовательский SyntaxError для недопустимых выражений „if“. Исправление от Пабло Галиндо.

  • bpo-44821: Создавайте словари экземпляров (__dict__) с нетерпением, чтобы улучшить регулярность расположения объектов и помочь специализации.

  • bpo-44792: Улучшение синтаксических ошибок для выражений if. Исправление от Мигеля Брито

  • bpo-34013: Обобщение пользовательского сообщения об ошибке «Недопустимое наследственное утверждение» (как в случае вызова «print» без круглых скобок) для включения более общих выражений. Исправление от Pablo Galindo

  • bpo-44732: Разрешить параметры с именами types.Union и types.UnionType с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44725: Раскрыть статистику специализации в python через _opcode.get_specialization_stats().

  • bpo-44717: Улучшение AttributeError при циклическом импорте подмодулей.

  • bpo-44698: Исправление неопределенного поведения при экспоненте сложных объектов.

  • bpo-44653: Поддержка типов typing при подстановке параметров в тип объединения.

  • bpo-44676: Добавьте возможность сериализации объектов types.Union. Патч предоставлен Юрием Карабасом.

  • bpo-44633: Разрешить параметры с именами TypeError и NotImplemented с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44661: Обновите property_descr_set, чтобы использовать vectorcall, если это возможно. Исправление от Donghee Na.

  • bpo-44662: Разрешить параметры с именами __module__ и types.Union с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44655: Включайте имя типа в ошибки с неустановленным атрибутом __slots__. Исправление от Пабло Галиндо

  • bpo-44655: Не включайте отсутствующий атрибут с тем же именем, что и неработающий, когда предлагаете предложения по отсутствующим атрибутам. Исправление от Pablo Galindo

  • bpo-44646: Исправьте хэш типа union: он больше не зависит от порядка аргументов.

  • bpo-44636: Разрешить параметры с именами int | int и int с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44611: В Windows, os.urandom(): использует BCryptGenRandom API вместо CryptGenRandom API, который устарел в Microsoft Windows API. Исправление от Donghee Na.

  • bpo-44635: Разрешить параметры с именами None и type(None) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26280: Реализуйте адаптивную специализацию для BINARY_SUBSCR

    Добавлены три специализированные формы BINARY_SUBSCR:

    • BINARY_SUBSCR_LIST_INT

    • BINARY_SUBSCR_TUPLE_INT

    • ДВОИЧНЫЙ_СУБСКР_ДИКТ

  • bpo-44589: Разрешить параметры с именами match и SyntaxError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44606: Разрешить параметры с именами __instancecheck__ и __subclasscheck__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42073: Декоратор @classmethod теперь может обертывать другие дескрипторы типа classmethod.

  • bpo-41972: Настроили алгоритм поиска строк в fastsearch.h так, чтобы внутренний цикл был короче для большинства случаев.

  • bpo-44590: Все необходимые данные для выполнения функции Python (локальные переменные, стек и т.д.) теперь хранятся в потоковом стеке. Объекты фреймов лениво выделяются по требованию. Это увеличивает производительность примерно на 7 % в стандартном наборе бенчмарков. Интроспекция и отладка не затрагиваются, так как объекты фреймов всегда доступны, когда это необходимо. Исправление Марка Шеннона.

  • bpo-44584: Отладка потоков (PYTHONTHREADDEBUG переменная окружения) устарела в Python 3.10 и будет удалена в Python 3.12. Эта возможность требует отладочной сборки Python. Исправление Виктора Стиннера.

  • bpo-43895: Из dynload_shlib.c удален устаревший внутренний кэш дескрипторов файлов общих объектов, добавленный в 1995 году, который пытался, но не гарантировал, что .so не будет dlopen’ed дважды, чтобы обойти недостатки операционных систем posix-ish середины 1990-х годов.

  • bpo-44490: Разрешить параметры с именами typing и types.Union с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43950: Объекты кода теперь могут предоставлять информацию о столбцах для инструкций, если она доступна. Это используется при печати трассировки, чтобы показать выражения, ответственные за ошибки.

    Вклад внесли Пабло Галиндо, Батухан Таская и Аммар Аскар в рамках PEP 657.

  • bpo-44562: Разрешить параметры с именами PyObject_GC_Del() и types.GenericAlias с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41486: Исправлена ошибка потребления памяти и производительности копирования в ранних бета-версиях 3.10, если кто-то использовал выходной буфер размером более 4 Гб с zlib.decompress для входных данных, которые расширялись до такого размера.

  • bpo-43908: Разрешить параметры с именами Py_TPFLAGS_IMMUTABLETYPE и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44553: Реализуйте методы GC для types.Union, чтобы разорвать циклы ссылок и предотвратить утечки памяти.

  • bpo-44490: Разрешить параметры с именами __parameters__ и __getitem__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44523: Разрешить параметры с именами hash() и weakref.proxy с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44483: Разрешить параметры с именами types.Union и __module__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44486: Модули всегда будут иметь словарь, даже если они созданы types.ModuleType.__new__()

  • bpo-44472: Исправление функциональности ltrace при возникновении исключений. Исправление от Pablo Galindo

  • bpo-12022: Разрешить параметры с именами TypeError и AttributeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44297: Убедитесь, что при входе в область понимания задан номер строки. Это гарантирует, что обратные трассировки, включающие выражения генератора, будут показывать правильный номер строки.

  • bpo-44456: Улучшение синтаксической ошибки при смешивании позиционных шаблонов и шаблонов ключевых слов. Исправление от Pablo Galindo.

  • bpo-44409: Исправление информации о местоположении ошибки для ошибок токенизатора, возникающих при инициализации токенизатора. Исправление от Пабло Галиндо.

  • bpo-44396: Исправление возможного сбоя в токенизаторе при возникновении синтаксических ошибок для незакрытых строк. Исправление от Пабло Галиндо.

  • bpo-44376: Разрешить параметры с именами i**2 и pow(i, 2) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44313: Разрешить параметры с именами LOAD_METHOD и CALL_METHOD с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44338: Реализуйте адаптивную специализацию для LOAD_GLOBAL

    Добавлены две специализированные формы LOAD_GLOBAL:

    • LOAD_GLOBAL_MODULE

    • LOAD_GLOBAL_BUILTIN

  • bpo-44368: Улучшение синтаксических ошибок для недопустимых целей «as». Исправление от Pablo Galindo

  • bpo-44349: Исправление краевого случая при отображении текста из файлов с кодировкой, содержащей синтаксические ошибки. Исправление от Пабло Галиндо.

  • bpo-44337: Начальная реализация адаптивной специализации LOAD_ATTR

    Добавлены четыре специализированные формы LOAD_ATTR:

    • LOAD_ATTR_SLOT

    • LOAD_ATTR_SPLIT_KEYS

    • LOAD_ATTR_WITH_HINT

    • LOAD_ATTR_MODULE

  • bpo-44335: Исправление регрессии при определении неправильных символов в синтаксических ошибках. Исправление от Pablo Galindo

  • bpo-43693: Вычисление смещений переменных ячеек производится в компиляторе, а не во время выполнения. Это уменьшает накладные расходы на обработку ячеистых и свободных переменных, особенно в случае, когда переменная является одновременно аргументом и ячеистой переменной.

  • bpo-44317: Улучшение ошибки токенизатора с улучшенным расположением. Исправление от Pablo Galindo.

  • bpo-44304: Разрешить параметры с именами sqlite3 и sqlite.Statement с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44305: Разрешить параметры с именами try и except с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43413: Разрешить параметры с именами tuple и list с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43667: Улучшение поддержки Юникода в локалях, отличных от UTF, в Oracle Solaris. Эта проблема не затрагивает другие системы Solaris.

  • bpo-43693: Добавлен новый опкод MAKE_CELL, который эффективно переносит часть работы, выполняемой при входе в функцию, в компилятор и в цикл eval. Помимо создания необходимых объектов ячеек, новый опкод преобразует соответствующие аргументы (и другие локали) в переменные ячеек при входе в функцию.

  • bpo-44232: Разрешить параметры с именами type() и type_new() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44201: Избавление от побочных эффектов проверки специализированных синтаксических ошибок в REPL, которые заставляли его запрашивать лишние токены после обнаружения синтаксической ошибки. Исправление от Pablo Galindo

  • bpo-43693: Разрешить параметры с именами PyCodeObject и co_fastlocalnames с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44184: Исправление падения при выходе из Python, когда функция деаллокатора удаляла последнюю сильную ссылку на тип кучи. Исправление Виктора Стиннера.

  • bpo-44187: Реализуйте ускорение в интерпретаторе. Пока это не дает никаких преимуществ, но способствует будущим оптимизациям. Полное объяснение см. в PEP 659.

  • bpo-44180: Парсер не сообщает об общих синтаксических ошибках, которые происходят в позиции, расположенной дальше, чем та, которой он достиг при первом проходе. Исправление от Пабло Галиндо

  • bpo-44168: Исправлено сообщение об ошибке в парсере при использовании аргументов с ключевыми словами в недопустимых выражениях. Исправление от Pablo Galindo

  • bpo-44156: Кэши строк в compile.c теперь совместимы с субинтерпретаторами.

  • bpo-44143: Исправлен сбой в парсере, который проявлялся при возникновении ошибок токенизатора, когда имелось существующее исключение. Исправление от Пабло Галиндо.

  • bpo-44032: Переместите «быстрые» локали и другие переменные из объекта frame в потоковый datastack.

  • bpo-44114: Исправление некорректных сигнатур функций dictkeys_reversed и dictitems_reversed в коде на C, которые нарушали сборки webassembly.

  • bpo-44110: Улучшить сообщение об ошибке str.__getitem__()

  • bpo-26110: Разрешить параметры с именами CALL_METHOD_KW и CALL_METHOD с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28307: Компилятор теперь оптимизирует простое форматирование в стиле C с литеральным форматом, содержащим только коды формата %s, %r и %a, преобразуя их в выражения f-строк.

  • bpo-43149: Исправьте сообщение о синтаксической ошибке, касающейся нескольких типов исключений, чтобы оно не ссылалось на «группы исключений». Исправление от Pablo Galindo

  • bpo-43822: Парсер будет отдавать приоритет ошибкам токенизатора, а не пользовательским синтаксическим ошибкам при вызове исключений. Исправление от Pablo Galindo.

  • bpo-40222: «Нулевая стоимость» обработки исключений.

    • Использует таблицу поиска, чтобы определить, как обрабатывать исключения.

    • Удалены блочные инструкции SETUP_FINALLY и POP_TOP, что устраняет накладные расходы на выполнение операторов try.

    • Уменьшает размер объекта кадра примерно на 60 %.

    Патч Марка Шеннона

  • bpo-43918: Разрешить параметры с именами default и anext с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43833: Выдает предупреждение об устаревании, если за числовым литералом сразу следует одно из ключевых слов: and, else, for, if, in, is, or. Вызывает синтаксическую ошибку с более информативным сообщением, если за ним сразу следует другое ключевое слово или идентификатор.

  • bpo-43879: Добавьте native_thread_id в PyThreadState. Исправление от Gabriele N. Tornetta.

  • bpo-43693: Вычисляет смещения ячеек относительно локалей в компиляторе. Позволяет интерпретатору обрабатывать локали и ячейки как единый массив, что немного эффективнее. Также сделайте опкод LOAD_CLOSURE псевдонимом для LOAD_FAST. Сохранение LOAD_CLOSURE помогает сделать байткод немного более читабельным.

  • bpo-17792: Более точные сообщения об ошибках при доступе к несвязанным locals или свободным vars.

  • bpo-28146: Исправьте непонятное сообщение об ошибке в str.format().

  • bpo-11105: Разрешить параметры с именами ast.AST и compile() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39091: Исправление сбоя при передаче неисключения в метод throw() генератора. Исправлено Ноем Оксером

  • bpo-33346: Асинхронные постижения теперь разрешены внутри постижений в асинхронных функциях. Внешние постижения неявно становятся асинхронными.

Библиотека

  • bpo-45371: Исправление проблемы с clang rpath в distutils. UnixCCompiler теперь использует корректную опцию clang для добавления каталога библиотеки времени выполнения (rpath) к разделяемой библиотеке.

  • bpo-45329: Исправление освобожденного доступа к памяти в pyexpat.xmlparser при сборке с установленной библиотекой expat <= 2.2.0.

  • bpo-41710: Разрешить параметры с именами sem_clockwait() и threading.Lock.acquire() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1596321: Разрешить параметры с именами threading._shutdown() и threading с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45274: Разрешить параметры с именами Thread.join() и threading с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21302: Разрешить параметры с именами time.sleep() и nanosleep() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21302: Разрешить параметры с именами time.sleep() и -7 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45238: Исправьте unittest.IsolatedAsyncioTestCase.debug(): теперь запускаются асинхронные методы и обратные вызовы.

  • bpo-36674: Разрешить параметры с именами unittest.TestCase.debug() и unittest.SkipTest с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45235: Исправление проблемы, когда argparse не сохранял значения в указанном пространстве имен при использовании подпарсера с настройками по умолчанию.

  • bpo-45183: Пусть zipimport.zipimporter.find_spec() не вызывает исключение, когда основной zip-файл был удален, а внутренний кэш сброшен через invalidate_cache().

  • bpo-45234: Разрешить параметры с именами copyfile() и copy() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45228: Исправление переполнения буфера стека при разборе сетевого адреса J1939.

  • bpo-45225: используйте функцию map вместо genexpr в capwords.

  • bpo-42135: Исправьте опечатку: importlib.find_loader действительно планируется удалить в Python 3.12, а не в 3.10, как остальные в PR 25169.

    Патч от Хьюго ван Кеменаде.

  • bpo-20524: Разрешить параметры с именами .format() и str с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45168: Разрешить параметры с именами dis.dis() и co_consts с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21302: Разрешить параметры с именами time.sleep() и clock_nanosleep() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45173: Разрешить параметры с именами configparser и SafeConfigParser с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Патч от Хьюго ван Кеменаде.

  • bpo-44987: Чистые ASCII-строки теперь нормализуются за постоянное время по unicodedata.normalize(). Исправление от Donghee Na.

  • bpo-35474: Разрешить параметры с именами mimetypes.guess_all_extensions() и strict=False с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45166: Разрешить параметры с именами typing.get_type_hints() и Final с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45162: Удаление многих старых устаревших функций unittest:

    • fail*: Разрешить параметры с именами assert* и TestCase с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • Сломанный от начала TestCase метод assertDictContainsSubset().

    • Игнорируется <unittest.TestLoader.loadTestsFromModule> TestLoader.loadTestsFromModule() параметр use_load_tests.

    • Старый псевдоним _TextTestResult от TextTestResult.

  • bpo-38371: Разрешить параметры с именами split() и _tkinter.TkappType с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20499: Повышение скорости и точности работы функции statistics.pvariance().

  • bpo-45132: Разрешить параметры с именами __getitem__() и xml.dom.pulldom.DOMEventStream с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Патч от Хьюго ван Кеменаде.

  • bpo-45129: Разрешить параметры с именами asyncio.loop.create_datagram_endpoint() и SO_REUSEADDR с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Патч от Хьюго ван Кеменаде.

  • bpo-45124: Команда bdist_msi, устаревшая в Python 3.9, теперь удалена.

    Вместо этого используйте bdist_wheel (пакеты колес).

    Патч от Хьюго ван Кеменаде.

  • bpo-30856: Разрешить параметры с именами unittest.TestResult и addFailure() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45034: Разрешить параметры с именами struct.pack и 'H' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25894: unittest теперь всегда сообщает о пропущенных и неудачных подтестах отдельно: отдельными символами в режиме по умолчанию и отдельными строками в режиме verbose. Также теперь выводится описание теста для ошибок при очистке тестовых методов, классов и модулей.

  • bpo-45081: Разрешить параметры с именами typing.Protocol и __init__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45085: Разрешить параметры с именами binhex и binascii с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • a2b_hqx(), b2a_hqx();

    • rlecode_hqx(), rledecode_hqx().

    Функция binascii.crc_hqx() остается доступной.

    Патч Виктора Стиннера.

  • bpo-40360: Разрешить параметры с именами lib2to3 и PEP 617 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45075: Разрешить параметры с именами traceback.StackSummary.format_frame() и traceback.StackSummary.format_frame_summary() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Обновили код и документацию, чтобы лучше различать frame и FrameSummary.

  • bpo-31299: Разрешить параметры с именами None и format_frame() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41620: Разрешить параметры с именами run() и TestResult с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45021: Исправление потенциального тупика при выключении дочерних вилок при использовании модуля concurrent.futures.

  • bpo-43913: Исправлены ошибки в очистке классов и модулей в unittest:

    • Функции, зарегистрированные с addModuleCleanup(), не вызывались, если пользователь не определил tearDownModule() в своем тестовом модуле.

    • addClassCleanup(): Разрешить параметры с именами tearDownClass и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • TestResult: Разрешить параметры с именами addClassCleanup() и addModuleCleanup() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • Ошибки в функциях, зарегистрированных с addClassCleanup() и addModuleCleanup(), некорректно обрабатывались в буферизованном и отладочном режимах.

    • Ошибки в setUpModule() и функции, зарегистрированные с addModuleCleanup(), сообщались в неправильном порядке.

    • И несколько более мелких ошибок.

  • bpo-45030: Исправление целочисленного переполнения при пикировании и копировании итератора диапазона.

  • bpo-45001: Повышена устойчивость разбора даты электронной почты к недоброкачественному вводу, а именно к заголовку Date:, содержащему только пробельные символы. Исправление от Wouter Bolsterlee.

  • bpo-45010: Разрешить параметры с именами __div__ и unittest.mock с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39218: Разрешить параметры с именами x*x и x**2 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43613: Разрешить параметры с именами gzip.compress() и gzip.decompress() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37596: Разрешить параметры с именами set и frozenset с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44019: Разрешить параметры с именами operator.call и operator.call(obj, *args, **kwargs) == obj(*args, **kwargs) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42255: Разрешить параметры с именами webbrowser.MacOSX и webbrowser с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44955: Разрешить параметры с именами stopTestRun() и startTestRun() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39039: tarfile.open поднимает ReadError при возникновении ошибки zlib во время извлечения файла.

  • bpo-44935: Разрешить параметры с именами subprocess и os.posix_spawn() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44911: IsolatedAsyncioTestCase больше не будет выбрасывать исключение при отмене просочившихся задач. Исправление от Bar Harel.

  • bpo-41322: Добавлена DeprecationWarning для тестов и async-тестов, возвращающих значение!=None (так как это может указывать на неправильно написанный тест, например, тест, написанный как генераторная функция).

  • bpo-44524: Сделать сообщение об исключении более полезным, когда подкласс из набирает псевдоним специальной формы. Патч предоставлен Юрием Карабасом.

  • bpo-38956: Разрешить параметры с именами argparse.BooleanOptionalAction и argparse.ArgumentDefaultsHelpFormatter с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44860: Разрешить параметры с именами posix_user и sysconfig с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44859: Улучшите обработку ошибок в sqlite3 и вызывайте более точные исключения.

    • MemoryError: Разрешить параметры с именами sqlite3.Warning и Connection.__call__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • UnicodEncodeError: Разрешить параметры с именами sqlite3.Warning и Connection.__call__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • TypeError: Разрешить параметры с именами ValueError и Cursor.executescript() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • Теперь для скрипта, содержащего нулевой символ, вместо его обрезания в Cursor.executescript() будет подниматься ValueError.

    • Корректная обработка исключений, возникающих при получении булевого значения результата обработчика выполнения.

    • Добавьте множество тестов, охватывающих различные угловые случаи.

  • bpo-44581: Обновление поставляемых pip до 21.2.3 и setuptools до 57.4.0

  • bpo-44849: Разрешить параметры с именами os.set_inheritable() и O_PATH с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44605: Декоратор @functools.total_ordering() теперь работает с метаклассами.

  • bpo-44524: Разрешить параметры с именами __name__ и __qualname__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44839: Разрешить параметры с именами MemoryError и MemoryError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44822: Разрешить параметры с именами sqlite3 и strings с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44801: Убедитесь, что переменная ParamSpec в Callable может быть заменена только выражением параметров (списком типов, многоточием, ParamSpec или Concatenate).

  • bpo-44806: Разрешить параметры с именами typing.Protocol и __init__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27275: Разрешить параметры с именами collections.OrderedDict.popitem() и collections.OrderedDict.pop() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44793: Исправлена проверка количества аргументов при подписке на общий тип с параметром ParamSpec.

  • bpo-44784: В тестах importlib.metadata переопределите поведение предупреждений в соответствии с ожидаемым DeprecationWarnings (importlib_metadata 4.6.3).

  • bpo-44667: Разрешить параметры с именами tokenize.tokenize() и NEWLINE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44771: Разрешить параметры с именами importlib.simple и TraversableResources с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44752: Разрешить параметры с именами rcompleter и getattr() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44747: Разрешить параметры с именами sys._getframe и typing с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42378: Разрешить параметры с именами logging.FileHandler и atexit с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44720: Разрешить параметры с именами weakref.proxy и TypeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44704: Разрешить параметры с именами collections.abc.Set._hash() и frozenset.__hash__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44666: Разрешить параметры с именами compileall.compile_file() и sys.stdout с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44688: sqlite3.Connection.create_collation() теперь принимает имена коллизии, отличные от ASCII. Исправление Эрленда Э. Аасланда.

  • bpo-44690: Примите строгий режим binacii.a2b_base64 в base64.b64decode.

  • bpo-42854: Разрешить параметры с именами _ssl и OverflowError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44686: Разрешить параметры с именами unittest.mock._importer и pkgutil.resolve_name с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44353: Сделайте NewType.__call__ быстрее, реализовав его на C. Патч предоставлен Юрием Карабасом.

  • bpo-44682: Измените директиву pdb директивы commands, чтобы запретить установку команд для недопустимой точки останова и вывести соответствующую ошибку.

  • bpo-44353: Рефакторинг typing.NewType из функции в вызываемый класс. Патч предоставлен Юрием Карабасом.

  • bpo-44678: Добавлено отдельное сообщение об ошибке для прерывистых подшивок в строгом режиме binascii.a2b_base64.

  • bpo-44524: Разрешить параметры с именами __name__ и __qualname__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40897: Отдайте приоритет использованию текущего конструктора класса в inspect.signature(). Исправление от Weipeng Hong.

  • bpo-44638: Добавьте ссылку на проект zipp и подсказку, как его использовать.

  • bpo-44648: Разрешить параметры с именами inspect.getsource() и TypeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44608: Исправление утечки памяти в _tkinter._flatten(), если он вызывается с последовательностью или набором, но не списком или кортежем.

  • bpo-44594: Разрешить параметры с именами ExitStack и AsyncExitStack с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42799: Разрешить параметры с именами fnmatch и functools.lru_cache() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41928: Разрешить параметры с именами shutil.copyfile() и FileNotFoundError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44569: Разрешить параметры с именами StackSummary.format_frame() и traceback с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44566: обработка подкласса StopIteration, поднятого из генератора @contextlib.contextmanager

  • bpo-44558: Обеспечьте согласованность реализации indexOf() между версиями на C и Python. Исправление от Donghee Na.

  • bpo-41249: Разрешить параметры с именами TypedDict и typing.get_type_hints() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44554: Переработайте обработку аргументов в pdb.main(), чтобы упростить обнаружение ошибок при загрузке входных данных и уточнить поведение при вызове модуля или скрипта.

  • bpo-34798: Разбейте абзац о параметрах конструкции pprint.PrettyPrinter, чтобы его было легче читать.

  • bpo-44539: Добавлена поддержка распознавания файлов JPEG без маркеров JFIF или Exif.

  • bpo-44461: Разрешить параметры с именами pdb и __main__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43625: Исправление ошибки в обнаружении заголовков CSV-файлов csv.Sniffer.has_header() и улучшение документации по ним.

  • bpo-44516: Обновление vendored pip до версии 21.1.3

  • bpo-42892: Исправлено исключение, возникавшее при разборе неправильно оформленного многочастного письма email.message.EmailMessage.

  • bpo-44468: Разрешить параметры с именами typing.get_type_hints() и __module__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44491: Разрешить параметры с именами sqlite3 и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43977: Разрешить параметры с именами Py_TPFLAGS_MAPPING и Py_TPFLAGS_SEQUENCE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44482: Исправление очень маловероятной утечки ресурсов в glob в альтернативных реализациях Python.

  • bpo-44466: Модуль faulthandler теперь определяет, произошла ли фатальная ошибка во время сборки сборщика мусора. Исправление Виктора Стиннера.

  • bpo-44471: Разрешить параметры с именами TypeError и AttributeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44404: Разрешить параметры с именами tkinter и after() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41546: Разрешить параметры с именами pprint и print с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44458: BUFFER_BLOCK_SIZE теперь объявляется статическим, чтобы избежать коллизий при компоновке, когда bz2, lmza или zlib статически компонуются.

  • bpo-44464: Удалите исключение для flake8 в устаревших интерфейсах importlib.metadata. Синхронизация с importlib_metadata 4.6.

  • bpo-44446: Разрешить параметры с именами lineno и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44439: Разрешить параметры с именами bz2.BZ2File.write() и lzma.LZMAFile.write() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44434: _thread.start_new_thread() больше не вызывает PyThread_exit_thread() явно при выходе из потока, этот вызов был лишним. В Linux с glibc, pthread_exit() прерывает весь процесс, если dlopen() не может открыть файл libgcc_s.so (например, ошибка EMFILE). Исправление Виктора Стиннера.

  • bpo-42972: Тип _thread.RLock теперь полностью реализует протокол GC: добавлена функция traverse и флаг Py_TPFLAGS_HAVE_GC. Исправление Виктора Стиннера.

  • bpo-44422: Функция threading.enumerate() теперь использует реентерабельную блокировку для предотвращения зависания при реентерабельном вызове. Исправление Виктора Стиннера.

  • bpo-38291: Импорт typing.io или typing.re теперь выводит DeprecationWarning.

  • bpo-37880: Разрешить параметры с именами None и const с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44389: Исправьте устаревание ssl.OP_NO_TLSv1_3.

  • bpo-27827: pathlib.PureWindowsPath.is_reserved() теперь определяет более широкий диапазон зарезервированных имен файлов, включая те, которые содержат пробелы или двоеточия.

  • bpo-44395: Исправьте as_string() для корректной передачи unixfrom. Исправление от Donghee Na.

  • bpo-34266: Обработка исключений при разборе аргумента команды запуска/перезапуска pdb.

  • bpo-44362: Улучшение сообщений об обесценивании, сообщений об ошибках и документации по обесцениванию в модуле ssl.

  • bpo-44342: [Enum] Измените пикировку с by-value на by-name.

  • bpo-44356: [Enum] Разрешить несколько миксинов типа данных, если они все одинаковые.

  • bpo-44351: Разрешить параметры с именами parse_makefile() и distutils.sysconfig с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35800: Разрешить параметры с именами smtpd.MailmanProxy и mailman с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44357: Добавлена функция, возвращающая кубический корень из заданного числа math.cbrt()

  • bpo-44339: Разрешить параметры с именами math.pow(±0.0, -math.inf) и inf с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44242: Убрать проверку отсутствия флага из создания Enum и перенести в декоратор verify.

  • bpo-44246: Разрешить параметры с именами importlib.metadata и Distribution.entry_points с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44246: В importlib.metadata.entry_points дедупликация дистрибутивов больше не требует загрузки полных метаданных для объектов PathDistribution, что повышает производительность загрузки точек входа в ~10 раз.

  • bpo-43858: Добавлена функция, возвращающая копию dict с уровнями логирования: logging.getLevelNamesMapping()

  • bpo-44260: Конструктор random.Random больше не считывает системную энтропию без необходимости.

  • bpo-44254: На Mac задайте тексту кнопки turtledemo цвет, который будет работать как на светлом, так и на темном фоне. Программисты не могут управлять последним.

  • bpo-44258: Поддержка PEP 515 для инициализации дроби из строки.

  • bpo-44235: Удалите устаревшие функции в gettext. Исправление от Donghee Na.

  • bpo-38693: Предпочтение f-строк .format в importlib.resources.

  • bpo-33693: Importlib.metadata теперь предпочитает f-строки .format.

  • bpo-44241: Включает незначительные исправления из importlib_metadata 4.1: Протокол SimplePath, поддержка Metadata 2.2.

  • bpo-43216: Разрешить параметры с именами @asyncio.coroutine и decorator с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44210: Сделайте importlib.metadata._meta.PackageMetadata общедоступным.

  • bpo-43643: Объявите reader.MultiplexedPath.name как свойство в соответствии со спецификацией.

  • bpo-27334: Менеджер контекста sqlite3 теперь выполняет откат (тем самым освобождая блокировку базы данных), если фиксация не удалась. Исправление от Луки Сити и Эрленда Э. Аасланда.

  • bpo-4928: Документированное существующее поведение на POSIX: NamedTemporaryFiles не удаляются, когда создающий процесс убит с помощью SIGKILL

  • bpo-44154: Оптимизируйте fractions.Fraction травление для крупных компонентов.

  • bpo-33433: Разрешить параметры с именами RFC 4291 и ipaddress.IPv6Address.is_private с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44150: Добавьте необязательный аргумент weights в statistics.fmean().

  • bpo-44142: ast.unparse() теперь не будет лишних круглых скобок, если кортежи используются в качестве целей присваивания (например, в циклах for).

  • bpo-44145: Разрешить параметры с именами hmac и HMAC_Update с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44095: Разрешить параметры с именами zipfile.Path и zipfile.Path.stem с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44077: Теперь можно получать поля типа обслуживания (ToS), он же дифференцированный сервис (DS), он же кодовая точка дифференцированного сервиса (DSCP) и явное уведомление о перегрузке (ECN) IP-заголовка с socket.IP_RECVTOS.

  • bpo-37788: Исправление утечки ссылок, когда объект Thread никогда не присоединялся.

  • bpo-38908: Разрешить параметры с именами typing.Protocol и TypeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44098: Разрешить параметры с именами typing.ParamSpec и __parameters__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44089: Разрешите подклассификацию csv.Error в 3.10 (она была разрешена в 3.9 и более ранних версиях, но была запрещена в ранних версиях 3.10).

  • bpo-44081: Разрешить параметры с именами ast.unparse() и lambda с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44061: Разрешить параметры с именами pkgutil.iter_modules() и pathlib.Path с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44059: Зарегистрируйте браузер SerenityOS в модуле webbrowser.

  • bpo-36515: Модуль hashlib больше не выполняет невыровненные обращения к памяти при компиляции для платформ ARM.

  • bpo-40465: Удалите функции модуля random, устаревшие в Python 3.9.

  • bpo-44018: random.seed() больше не мутирует входные данные байтовых массивов.

  • bpo-38352: Разрешить параметры с именами IO и BinaryIO с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44002: Разрешить параметры с именами urllib.parse и functool.lru_cache() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Недокументированный внутренний urllib.parse Quoted API класса теперь устарел и будет удален в версии 3.14.

  • bpo-43972: Разрешить параметры с именами http.server.SimpleHTTPRequestHandler и 301 (Moved Permanently) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28528: Разрешить параметры с именами pdb и checkline() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43853: Улучшена обработка строк для пользовательских функций и агрегатов sqlite3:

    • Теперь в UDF можно передавать строки со встроенными нулевыми символами

    • Сбои преобразования теперь корректно поднимают MemoryError

    Патч Эрленда Э. Аасланда.

  • bpo-43666: AIX: Lib/_aix_support.get_platform() может не работать в WPAR AIX. Набор файлов bos.rte имеет дату сборки как в LPAR, так и в WPAR, поэтому запрашивается этот набор файлов, а не bos.mp64. Чтобы предотвратить подобную ситуацию (отсутствие даты сборки в ODM), предоставляется значение (9988), достаточное для завершения сборки. Исправление от M Felt.

  • bpo-43650: Разрешить параметры с именами MemoryError и shutil.unpack_archive() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43612: Разрешить параметры с именами zlib.compress() и zlib.compressobj с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43392: Разрешить параметры с именами importlib._bootstrap._find_and_load() и importlib.import_module() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43318: Исправлена ошибка, из-за которой pdb не всегда передавал эхо очищенных точек останова.

  • bpo-43234: Разрешить параметры с именами concurrent.futures.ThreadPoolExecutor и loop.set_default_executor() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43232: Запретите ранее устаревшие потенциально разрушительные операции над asyncio.trsock.TransportSocket. Исправление Илии Волочии.

  • bpo-30077: Добавлена поддержка псевдокомпрессии aifc/sowt от Apple

  • bpo-42971: Добавьте определение errno.EQFULL для платформ, определяющих эту константу (например, macOS).

  • bpo-43086: Разрешить параметры с именами strict_mode и scrict_mode с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43024: Разрешить параметры с именами traceback.print_exception() и traceback.format_exception() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33809: Добавьте метод traceback.TracebackException.print(), который выводит отформатированную информацию об исключении.

  • bpo-42862: Разрешить параметры с именами sqlite3 и functools.lru_cache() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41818: Soumendra Ganguly: добавьте termios.tcgetwinsize(), termios.tcsetwinsize().

  • bpo-40497: Разрешить параметры с именами subprocess.check_output() и ValueError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37449: Разрешить параметры с именами ensurepip и importlib.resources.files() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40956: Использовать клинику аргументов в sqlite3. Патчи от Эрленда Э. Аасланда.

  • bpo-41730: Разрешить параметры с именами DeprecationWarning и tkinter.tix с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20684: Разрешить параметры с именами _signature_get_bound_param и inspect с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41402: Разрешить параметры с именами email.message.EmailMessage.set_content() и 7bit с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32695: Аргументы compresslevel и preset в ключевом слове tarfile.open() теперь документированы и протестированы.

  • bpo-41137: Используйте кодировку utf-8 при чтении файлов .pdbrc. Исправление от Srinivas Reddy Thatiparthy

  • bpo-24391: Разрешить параметры с именами threading и Semaphore с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-5846: Утратили актуальность следующие функции unittest, которые планируется удалить в Python 3.13:

    • findTestCases()

    • makeSuite()

    • getTestCaseNames()

    Вместо этого используйте методы TestLoader:

    Патч Эрленда Э. Аасланда.

  • bpo-40563: Поддержка pathlike объектов на dbm/shelve. Исправление от Хакана Челика и Генри-Жозефа Аудеуда.

  • bpo-34990: Исправлена ошибка Y2k38 в модуле compileall, когда он не компилировал файлы с временем модификации после 2038 года.

  • bpo-39549: Если раньше в коде reprlib.Repr использовалось жестко закодированное строковое значение „…“, то в этом PR оно переводится на использование атрибута «fillvalue», значение которого по умолчанию равно „…“ и может быть сброшено как в отдельных экземплярах reprlib.Repr, так и в их подклассах.

  • bpo-37022: Разрешить параметры с именами pdb и repr() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38840: Исправьте test___all__ на платформах, не имеющих реализации общей памяти.

  • bpo-39359: Добавьте недостающую проверку того, что пароль является объектом байта для зашифрованного zip-файла.

  • bpo-38741: configparser: использование „]“ внутри заголовка раздела больше не обрывает название раздела на „]“.

  • bpo-38415: Разрешить параметры с именами contextlib.asynccontextmanager() и contextlib.contextmanager() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30256: Передайте многопроцессорный аргумент BaseProxy manager_owned через AutoProxy.

  • bpo-27513: Разрешить параметры с именами email.utils.getaddresses() и email.header.Header с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-16379: Добавьте код и имя ошибки SQLite в исключения sqlite3. Исправления от Авива Паливоды, Даниэля Шахафа и Эрленда Э. Аасланда.

  • bpo-26228: pty.spawn больше не зависает на FreeBSD, macOS и Solaris.

  • bpo-33349: lib2to3 теперь везде распознает асинхронные генераторы.

  • bpo-29298: Разрешить параметры с именами TypeError и dest с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-45216: Удалите лишнюю документацию, перечисляющую методы в difflib. Она дважды приводилась в pydoc и в некоторых местах была устаревшей.

  • bpo-45024: Разрешить параметры с именами collections.abc и special method с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44957: Разрешить параметры с именами X | Y и Union с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-16580: Разрешить параметры с именами int.to_bytes() и int.from_bytes() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44903: Разрешить параметры с именами othergui.rst и page on GUI frameworks с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33479: Документация по Tkinter была значительно расширена за счет новых разделов «Архитектура» и «Потоковая модель».

  • bpo-36700: Разрешить параметры с именами base64 и RFC 4648 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44740: Заменены прописные буквы «Web» и «Internet» на строчные в соответствии с пересмотренной в 2016 году книгой стилей Associated Press.

  • bpo-44693: Обновите определение __future__ в глоссарии, заменив путаное слово «псевдомодуль» на более точное описание.

  • bpo-35183: Добавьте типичные примеры в документацию по os.path.splitext

  • bpo-30511: Уточнение, что shutil.make_archive() не является потокобезопасным из-за зависимости от изменения текущего рабочего каталога.

  • bpo-44561: Обновление трех устаревших гиперссылок в Doc/distributing/index.rst: «Структура проекта», «Сборка и упаковка проекта» и «Загрузка проекта в Python Packaging Index».

  • bpo-44651: Удалите запись «принуждение» в Doc/glossary.rst за ее устаревшее определение.

  • bpo-42958: Обновили docstring и документацию filecmp.cmp(), чтобы они были более точными и менее запутанными, особенно в отношении shallow arg.

  • bpo-44631: Разрешить параметры с именами repr() и _Environ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44613: метаданные importlib.metadata больше не являются предварительными.

  • bpo-44558: Приведите в соответствие docstring и python-реализацию countOf() с поведением его c-реализации.

  • bpo-44544: Разрешить параметры с именами textwrap.wrap() и textwrap.fill() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38062: Уточните, что atexit использует внутренние сравнения равенства.

  • bpo-40620: Преобразуйте примеры в разделе 4.3 учебника controlflow.rst в стиль интерпретатора-демо.

  • bpo-43066: В документацию zipfile добавлено предупреждение: аргумент имени файла с ведущим слешем может привести к невозможности открытия архива в системах Windows.

  • bpo-39452: Разрешить параметры с именами Doc/library/__main__.rst и __main__.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-13814: В FAQ по дизайну ответьте на вопрос «Почему генераторы не поддерживают оператор with?».

  • bpo-27752: Документация csv.Dialect стала более описательной.

  • bpo-44453: Исправьте документацию для возвращаемого типа sysconfig.get_path().

  • bpo-44392: Разрешить параметры с именами Py_GenericAlias и Py_GenericAliasType с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38291: Разрешить параметры с именами typing.io и typing.re с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44322: Документируйте, что аргументы SyntaxError имеют кортеж деталей и что детали корректируются для ошибок в выражениях замены полей f-строк.

  • bpo-42392: Разрешить параметры с именами loop и asyncio с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44195: Разрешить параметры с именами TraversableResources и TraversableReader с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41963: Документ, в котором ConfigParser удаляет комментарии при чтении конфигурационных файлов.

  • bpo-44072: Исправьте, где в иерархии числовых ABC добавлена поддержка **, т.е. в numbers.Complex, а не numbers.Integral.

  • bpo-43558: Разрешить параметры с именами dataclasses и __init__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44025: Уточните, когда „_“ в операторах соответствия является ключевым словом, а когда нет.

  • bpo-41706: Исправьте документацию о том, как методы типа __add__ вызываются при вычислении операторных выражений.

  • bpo-41621: Разрешить параметры с именами collections.defaultdict и default_factory с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41576: документ BaseException в пользу голых исключений

  • bpo-21760: Исправлено описание для __file__. Исправление от Furkan Onder

  • bpo-39498: Добавьте индекс «Security Considerations», который ссылается на модули стандартной библиотеки, в которых явно задокументированы соображения безопасности.

  • bpo-33479: Уберите безоговорочное утверждение, что tkinter безопасен для потоков. Это не соответствует действительности уже несколько лет и, скорее всего, никогда не соответствовало. Объяснение того, что это так, может быть добавлено позже, после обсуждения и, возможно, после исправления _tkinter.c,

Тесты

  • bpo-40173: Исправить test.support.import_helper.import_fresh_module().

  • bpo-45280: Добавьте тестовый пример для пустого typing.NamedTuple.

  • bpo-45269: Разрешить параметры с именами markers и c_make_encoder с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45128: Разрешить параметры с именами test_multiprocessing_fork и test_logging с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45209: Разрешить параметры с именами UserWarning: resource_tracker и _test_multiprocessing._TestSharedMemory.test_shared_memory_cleaned_after_process_termination с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45185: Разрешить параметры с именами TestEnumerations и test_ssl с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45195: Исправьте test_readline.test_nonascii(): иногда символ новой строки не записывается в конце, поэтому не ожидайте его появления в выводе. Исправление Виктора Стиннера.

  • bpo-45156: Разрешить параметры с именами unittest.mock.seal() и create_autospec() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45125: Разрешить параметры с именами SharedMemory и SharableList с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44860: Разрешить параметры с именами test_sysconfig.test_user_similar() и platlib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45052: Разрешить параметры с именами WithProcessesTestSharedMemory.test_shared_memory_basics и self.assertEqual(sms.size, sms2.size) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Основная причина удаления этой строки из теста заключается в том, что не гарантируется, что size и SharedMemory будут одинаковыми. Это решается платформой.

  • bpo-44895: libregrtest теперь очищает кэш типов позже, чтобы снизить риск ложного срабатывания при проверке утечек ссылок. Ранее кэш типов очищался слишком рано, и libregrtest вызывал ложную тревогу об утечке ссылок при очень специфических условиях. Исправление подготовили Ирит Катриэль и Виктор Стиннер.

  • bpo-45042: Исправлено, что тестовые классы, украшенные @hashlib_helper.requires_hashdigest, постоянно пропускались.

  • bpo-25130: Добавьте вызовы gc.collect() в тесты для поддержки PyPy.

  • bpo-45011: Сделали тесты, полагающиеся на _asyncio модуль расширения C необязательным, чтобы его можно было запускать на альтернативных реализациях Python. Исправление Сергея Сторчака.

  • bpo-44949: Исправьте автотесты истории test_readline: иногда символ новой строки не записывался в конце, поэтому не ожидайте его в выводе.

  • bpo-44891: Разрешить параметры с именами id() и obj * 1 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44852: Добавлена возможность оптового отключения DeprecationWarnings при запуске набора регрессионных тестов.

  • bpo-40928: Уведомление пользователей, выполняющих регрессионные тесты test_decimal на macOS, о потенциально безобидных сообщениях «malloc не может выделить регион», извергаемых test_decimal.

  • bpo-44734: Исправлена проблема точности плавающей точки в черепашьих тестах.

  • bpo-44708: При запуске регрессионных тестов с параметром -w теперь повторно запускаются только затронутые методы тестирования вместо повторного запуска всего тестового файла.

  • bpo-42095: Добавлены тесты взаимодействия для Apple plists: создание файлов plist с помощью Python plistlib и их разбор с помощью Apple plutil; и наоборот.

  • bpo-44647: Добавили постоянную переменную окружения с значением Unicode в регрессионные тесты, чтобы убедиться, что они справятся с этим случаем использования в будущем. Если ваше тестовое окружение сломается из-за этого, сообщите нам об ошибке и временно установите PYTHONREGRTEST_UNICODE_GUARD=0 в вашем тестовом окружении.

  • bpo-44515: Настройте недавно добавленные тесты contextlib, чтобы они не предполагали использование refcounted GC

  • bpo-44287: Исправьте asyncio test_popen() из test_windows_utils, используя более длительный таймаут. Используйте проверенный в боях таймаут test.support.SHORT_TIMEOUT, а не жестко закодированный таймаут в 10 секунд: по умолчанию он составляет 30 секунд, но на медленных билдботах его делают длиннее. Исправление от Виктора Стиннера.

  • bpo-44451: Разрешить параметры с именами DeprecationWarning и test.test_importlib.test_metadata_api.APITests.test_entry_points_by_index с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44363: Учет санитара адресов в test_capi. test_capi теперь проходит при запуске санитара адресов GCC.

  • bpo-44364: Добавьте не интегральные тесты для функции math.sqrt().

  • bpo-43921: Разрешить параметры с именами suppress_ragged_eofs=False и read() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43921: Исправьте test_pha_required_nocert() из test_ssl: отловите еще два случая EOF (когда метод recv() возвращает пустую строку). Исправление Виктора Стиннера.

  • bpo-44131: Добавьте test_frozenmain к test_embed для проверки Py_FrozenMain() C-функции. Исправление Виктора Стиннера.

  • bpo-31904: Игнорируйте случай строки ошибки в test_file_not_exists().

  • bpo-42083: Разрешить параметры с именами PyStructSequence_NewType и PyStructSequence_Desc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35753: Исправление сбоя в doctest, когда doctest разбирает модули, включающие разворачиваемые функции, пропуская эти функции.

  • bpo-30256: Разрешить параметры с именами multiprocessing и AutoProxy[Queue] с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Построить

  • bpo-45220: Избегать автоматической сборки с предварительными версиями Windows 11 SDK. Это можно отменить, установив переменную окружения DefaultWindowsSDKVersion перед сборкой.

  • bpo-45020: Замораживает модули stdlib, импортируемые во время запуска. Это обеспечивает значительное повышение производительности при запуске. При необходимости используйте ранее добавленный параметр командной строки «-X frozen_modules=off», чтобы принудительно импортировать исходные модули.

  • bpo-45188: Сборки для Windows теперь регенерируют замороженные модули в первой части сборки. Ранее регенерация происходила позже, что требовало перезапуска сборки, если какие-либо модули были изменены.

  • bpo-45163: Исправлена сборка платформы Haiku.

  • bpo-45067: Функция ncurses extended_color_content была введена в 2017 году

    (https://invisible-island.net/ncurses/NEWS.html#index-t20170401). Сайт

    Пакет ncurses-devel в CentOS 7 имел более старую версию ncurses, что приводило к ошибке компиляции. Для компиляции ncurses с расширенной поддержкой цвета необходимо проверить версию библиотеки ncurses >= 20170401.

  • bpo-45019: Генерировать строки в соответствующих файлах для замороженных модулей. До сих пор каждый из этих файлов приходилось редактировать вручную. Это изменение упрощает добавление и изменение замороженных модулей.

  • bpo-44340: Добавлена поддержка сборки с clang thin lto через –with-lto=thin/full. Исправление от Donghee Na и Brett Holman.

  • bpo-44535: Включите сборку с помощью установки Visual Studio 2022 под Windows.

  • bpo-43298: Улучшено сообщение об ошибке при сборке без установленного Windows SDK.

  • bpo-44381: Разрешить параметры с именами EnableControlFlowGuard и guard с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41282: Исправление поломки make install, из-за которой модули расширения стандартной библиотеки излишне и некорректно пересобирались на этапе установки cpython.

Windows

  • bpo-45375: Исправляет ошибку утверждения, связанную с поиском стандартной библиотеки в ненормализованных путях.

  • bpo-45022: Обновление релиза Windows для включения libffi 3.4.2

  • bpo-45007: Обновление до OpenSSL 1.1.1l в сборке Windows

  • bpo-44848: Обновление программы установки Windows для использования SQLite 3.36.0.

  • bpo-44572: Избегайте потребления стандартного ввода в модуле platform.

  • bpo-44582: Ускорить скорость инициализации mimetypes с помощью собственной реализации сканирования реестра.

  • bpo-41299: Разрешить параметры с именами threading и threading.Lock.acquire() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42686: Сборка sqlite3 с включенными математическими функциями. Исправление Эрленда Э. Аасланда.

  • bpo-40263: Это последующая ошибка из https://bugs.python.org/issue26903. После его применения мы сталкиваемся с проблемой смещения утверждения от одного к другому. Утверждение было некорректным.

macOS

  • bpo-45007: Обновите сборки программы установки macOS для использования OpenSSL 1.1.1l.

  • bpo-34602: При сборке CPython на macOS с ./configure --with-undefined-behavior-sanitizer --with-pydebug размер стека теперь увеличивается в четыре раза, чтобы весь набор тестов был пройден.

  • bpo-44848: Обновите программу установки macOS для использования SQLite 3.36.0.

  • bpo-44689: Разрешить параметры с именами ctypes.util.find_library() и find_library с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41972: Путь к пользовательскому заголовку сборки фреймворка в sysconfig изменен для добавления компонента „pythonX.Y“, чтобы соответствовать поведению distutils.

  • bpo-43109: Разрешите опции –with-lto configure работать с Xcode или инструментами командной строки, поставляемыми Apple.

  • bpo-34932: Добавляет поддержку socket.TCP_KEEPALIVE для macOS. Исправление от Shane Harvey.

IDLE

  • bpo-45296: В Windows измените сообщение о выходе из системы, чтобы оно предлагало Ctrl-D, который работает, вместо <Ctrl-Z Return>, который не работает в IDLE.

  • bpo-45193: Сделайте так, чтобы окна завершения снова появлялись на Ubuntu.

  • bpo-40128: В основном исправлены завершения на macOS, когда не используется tcl/tk 8.6.11 (как в 3.9). Добавленный вызов update_idletask должен быть безвреден и, возможно, полезен в других случаях.

  • bpo-33962: Переместите настройку пробела отступа с вкладки «Шрифт» на новую вкладку «Windows». Исправление Марка Розмана и Терри Яна Риди.

  • bpo-40468: Разделите диалог настроек на вкладке Общие на вкладки Windows и Shell/ED. Переместите источники справки, которые расширяют меню «Справка», на вкладку «Расширения». Освободите место для новых опций и сократите диалог. Благодаря последнему диалог лучше подходит для маленьких экранов.

  • bpo-41611: Избегайте не пойманных исключений в AutoCompleteWindow.winconfig_event().

  • bpo-41611: Исправление того, что IDLE иногда зависала при завершении работы с вкладками на macOS.

  • bpo-44010: Разрешить параметры с именами match и soft keywords с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44026: Включать предложения по исправлению опечаток интерпретатора в строку сообщения для NameErrors и AttributeErrors. Исправление Э. Пейна.

Инструменты/демоверсии

  • bpo-44786: Исправьте предупреждение о регулярных выражениях в скрипте c-analyzer.

  • bpo-44967: pydoc теперь возвращает ненулевой код состояния, когда модуль не может быть найден.

  • bpo-44978: Разрешите инструменту Argument Clinic работать со специальными методами __complex__.

  • bpo-43425: Удален демонстрационный проект „test2to3“, который демонстрировал использование lib2to3 для поддержки Python 2.x и Python 3.x из одного источника в пакете distutils. Исправление от Donghee Na

  • bpo-44074: Заставьте patchcheck автоматически определять правильное имя базовой ветки (ранее оно было жестко закодировано в „master“)

  • bpo-20291: Добавлена поддержка переменных позиционных параметров в Argument Clinic.

C API

  • bpo-41710: Функция PyThread_acquire_lock_timed() теперь ограничивает таймаут, если он слишком велик, а не прерывает процесс. Исправление Виктора Стиннера.

  • bpo-44687: Разрешить параметры с именами BufferedReader.peek() и ValueError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-45116: Добавьте макрос Py_ALWAYS_INLINE, чтобы попросить компилятор всегда инлайнить статическую инлайн-функцию. Компилятор может проигнорировать его и решить не инлайнить функцию. Исправление Виктора Стиннера.

  • bpo-45094: Добавьте макрос Py_NO_INLINE, чтобы отключить инлайнинг в функции. Исправление Виктора Стиннера.

  • bpo-45061: Разрешить параметры с именами bool и Py_DECREF(Py_True); с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42035: Добавьте новую функцию PyType_GetQualName() для получения квалифицированного имени типа.

  • bpo-41103: Возвращает удаление старого протокола буферов, поскольку они являются частью стабильного ABI.

  • bpo-44751: Разрешить параметры с именами crypt.h и Python.h с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42747: Разрешить параметры с именами Py_TPFLAGS_HAVE_VERSION_TAG и Py_TPFLAGS_HAVE_AM_SEND с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44530: Разрешить параметры с именами co_qualname и PyCodeObject с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Патч Габриэле Н. Торнетта

  • bpo-44441: Разрешить параметры с именами Py_RunMain() и PyImport_Inittab с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39947: Удалите 4 частные функции Trashcan C API, которые были сохранены только для обратной совместимости стабильного ABI с Python 3.8 и старше, поскольку Trashcan API не мог использоваться с ограниченным C API на Python 3.8 и старше. API мусорного бака был исключен из ограниченного C API в Python 3.9.

    Удаленные функции:

    • _PyTrash_deposit_object()

    • _PyTrash_destroy_chain()

    • _PyTrash_thread_deposit_object()

    • _PyTrash_thread_destroy_chain()

    PyThreadState: Разрешить параметры с именами _tstate->trash_delete_nesting и PyThreadState с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Исключите также константу PyTrash_UNWIND_LEVEL из API языка C.

    Патч Виктора Стиннера.

  • bpo-40939: Удалена документация по удаленному PyParser_* C API.

  • bpo-43795: Разрешить параметры с именами Содержание ограниченного API и PyFrameObject с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44378: Разрешить параметры с именами Py_IS_TYPE() и Py_TYPE() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39573: Разрешить параметры с именами Py_TYPE() и Py_SIZE() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44263: Разрешить параметры с именами PyType_Ready() и Py_TPFLAGS_HAVE_GC с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43795: Недокументированная функция Py_FrozenMain() удалена из Limited API.

  • bpo-44113: Утрачиваем следующие функции для настройки инициализации Python:

    • PySys_AddWarnOptionUnicode()

    • PySys_AddWarnOption()

    • PySys_AddXOption()

    • PySys_HasWarnOptions()

    • Py_SetPath()

    • Py_SetProgramName()

    • Py_SetPythonHome()

    • Py_SetStandardStreamEncoding()

    • _Py_SetProgramFullPath()

    PyConfig: Разрешить параметры с именами Python Initialization Configuration и PEP 587 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-44094: Разрешить параметры с именами PyErr_SetFromErrnoWithUnicodeFilename() и PyErr_SetFromWindowsErrWithUnicodeFilename() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43795: PyCodec_Unregister() теперь правильно экспортируется как функция в Windows Stable ABI DLL.

  • bpo-44029: Разрешить параметры с именами Py_UNICODE и PyUnicode_Encode с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42035: Добавьте новую функцию PyType_GetName() для получения короткого имени типа.

Python 3.10.0 beta 1

Дата выхода: 2021-05-03

Безопасность

  • bpo-43434: Разрешить параметры с именами sqlite3.Connection и sqlite3.connect с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43998: Разрешить параметры с именами ssl и SSLContext с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43882: Наличие символов новой строки или табуляции в части URL-адреса может привести к некоторым видам атак.

    В соответствии со спецификацией управления URL, определенной WHATWG urllib.parse(), теперь удаляются ASCII-строки и табуляции из URL, что предотвращает подобные атаки.

  • bpo-43472: Разрешить параметры с именами cpython.PyInterpreterState_New и _xxsubinterpreters с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43362: Исправление недействительного free в модуле _sha3. Проблема появилась в версии 3.10.0a1. Python 3.9 и более ранние версии не затронуты.

  • bpo-43762: Разрешить параметры с именами sqlite3.connect/handle() и sqlite3.Connection.enable_load_extension() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43756: Разрешить параметры с именами glob.glob/2 и glob.glob() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36384: Разрешить параметры с именами ipaddress и socket.inet_aton() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43075: Устранение уязвимости отказа в обслуживании с помощью регулярных выражений (ReDoS) в urllib.request.AbstractBasicAuthHandler. ReDoS-уязвимый regex имеет квадратичную сложность в худшем случае и позволяет вызвать отказ в обслуживании при идентификации подделанных недействительных RFC. Эта проблема ReDoS находится на стороне клиента и требует от удаленных злоумышленников контроля над HTTP-сервером.

  • bpo-42800: Теперь крючки аудита срабатывают при доступе к атрибутам frame.f_code, traceback.tb_frame и коду генератора/кадра.

  • bpo-37363: Добавьте события аудита в модуль http.client.

Ядро и встроенные модули

  • bpo-43977: Запретить классам быть одновременно последовательностью и отображением при сопоставлении с образцом.

  • bpo-43977: Разрешить параметры с именами tp_flags и collections.abc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43892: Восстановление правильной проверки сложных шаблонов литеральных значений при разборе блоков match.

  • bpo-43933: Установите frame.f_lineno в номер строки квей-слова „with“ при выполнении вызова __exit__.

  • bpo-43933: Если текущая позиция в кадре не имеет номера строки, то установите атрибут f_lineno в None, а не в -1, чтобы соответствовать PEP 626. Обычно это не должно быть возможным, но может возникнуть в некоторых необычных обстоятельствах.

  • bpo-43963: Импорт модуля _signal в подинтерпретатор больше не имеет побочных эффектов.

  • bpo-42739: Внутреннее представление таблиц номеров строк изменено, чтобы не использовать дозорные, а в API-функцию PyLineTable_InitAddressRange, работающую вне процесса, добавлен явный параметр длины. Это делает работу с таблицами номеров строк более надежной в некоторых обстоятельствах.

  • bpo-43908: Сделайте типы re неизменяемыми. Исправление Эрленда Э. Аасланда.

  • bpo-43908: Сделайте тип array.array неизменяемым. Исправление Эрленда Э. Аасланда.

  • bpo-43901: Измените объекты классов и модулей, чтобы они лениво создавали пустые списки аннотаций по требованию. Для обратной совместимости списки аннотаций хранятся в __dict__ объекта.

  • bpo-43892: Разрешить параметры с именами MatchValue и MatchSingleton с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42725: Разрешить параметры с именами await и yield с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43754: При выполнении структурного сопоставления шаблонов (PEP 634) захваченные имена теперь остаются несвязанными до тех пор, пока весь шаблон не будет успешно сопоставлен.

  • bpo-42737: Аннотации для сложных целей (все, кроме простых имен) больше не вызывают эффектов во время выполнения с from __future__ import annotations.

  • bpo-43914: SyntaxError исключения, вызванные интерпретатором, будут выделять весь диапазон ошибок выражения, содержащего синтаксическую ошибку, а не только место, где обнаружена проблема. Исправление Пабло Галиндо.

  • bpo-38605: Вернитесь к тому, чтобы сделать from __future__ import annotations значением по умолчанию. Это следует за решением Руководящего совета отложить изменения PEP 563 по крайней мере до Python 3.11. Дополнительную информацию о решении смотрите в оригинальном письме: https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/. Исправление Пабло Галиндо.

  • bpo-43475: Хеширование NaN-значений теперь зависит от идентичности объекта. Раньше они всегда хешировались на 0, даже если значения NaN не равны друг другу. Наличие одного и того же хэша для неравных значений приводило к нагромождению хэш-таблиц.

  • bpo-43859: Улучшено сообщение об ошибке для исключений IndentationError. Исправление от Пабло Галиндо

  • bpo-41323: Складывание кортежей констант в оптимизаторе байткода теперь повторно использует кортеж в таблице констант.

  • bpo-43846: Использование стека данных значительно сокращается для больших литералов и выражений вызова.

  • bpo-38530: Разрешить параметры с именами NameError и PyErr_Display() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43823: Улучшение синтаксических ошибок для недопустимых словарных литералов. Исправление от Pablo Galindo.

  • bpo-43822: Улучшение синтаксических ошибок в парсере при отсутствии запятых между выражениями. Исправление от Pablo Galindo.

  • bpo-43798: Узлы ast.alias теперь включают атрибуты метаданных исходного местоположения, например, lineno, col_offset.

  • bpo-43797: Улучшение сообщений об ошибках SyntaxError для некорректных сравнений. Исправление от Pablo Galindo.

  • bpo-43760: Перемещает флаг проверки того, включена ли трассировка, в стек C из кучи. Это должно ускорить диспетчеризацию в интерпретаторе.

  • bpo-43682: Разрешить параметры с именами @staticmethod и @classmethod с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43751: Исправлена ошибка, при которой anext(ait, default) ошибочно возвращала None.

  • bpo-42128: __match_args__ больше не может быть списком.

  • bpo-43683: Добавляет опкод GEN_START. Отмечает запуск генератора, в том числе async, или coroutine и обрабатывает отправку значений во вновь созданный генератор или coroutine.

  • bpo-43105: Importlib теперь разрешает относительные пути при создании объектов спецификации модуля из расположения файлов.

  • bpo-43682: Статические методы (@staticmethod) теперь можно вызывать как обычные функции. Исправление Виктора Стиннера.

  • bpo-42609: Разрешить параметры с именами "+0"*1000000 и RecursionError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38530: Разрешить параметры с именами AttributeError и PyErr_Display() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-44015: В @dataclass() вызывайте ошибку TypeError, если KW_ONLY указан более одного раза.

  • bpo-25478: В collections.Counter() добавлен метод total() для вычисления суммы подсчетов.

  • bpo-43733: Измените netrc.netrc, чтобы использовать кодировку UTF-8 перед использованием кодировки локали.

  • bpo-43979: Удалено ненужное осмысление списка перед циклом из urllib.parse.parse_qsl(). Исправление Кристофа Цвершке и Донгхи На.

  • bpo-43993: Обновите поставляемый в комплекте pip до версии 21.1.1.

  • bpo-43957: Разрешить параметры с именами TypeError и True с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42904: Разрешить параметры с именами typing.get_type_hints() и typing.get_type_hints() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43945: [Enum] Исправляем нестандартное поведение mixin format(): в 3.12 для вызова format() будет использоваться член enum, а не его значение.

  • bpo-41139: Утратить недокументированный cgi.log() API.

  • bpo-43937: Исправлена работа модуля turtle с корневым окном не по умолчанию.

  • bpo-43930: Обновление поставляемых pip до версии 21.1 и setuptools до версии 56.0.0

  • bpo-43907: Исправление ошибки в чистой реализации pickle на Python при использовании протокола 5, когда экземпляры bytearray, встречающиеся несколько раз в графе pickled-объектов, некорректно распаковывались в повторяющиеся копии объекта bytearray.

  • bpo-43926: Разрешить параметры с именами importlib.metadata и Description с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43920: OpenSSL 3.0.0: load_verify_locations() теперь возвращает последовательное сообщение об ошибке, когда cadata не содержит действительного сертификата.

  • bpo-43607: Разрешить параметры с именами urllib и \\?\ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43817: Разрешить параметры с именами inspect.get_annotations() и inspect.get_annotations() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    inspect.signature(): Разрешить параметры с именами inspect.from_callable() и inspect.from_function() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43284: platform.win32_ver определяет версию windows из sys.getwindowsversion().platform_version, которая, в свою очередь, определяет версию из kernel32.dll (которая может быть другой версии, чем сама Windows). Поэтому измените platform.win32_ver для определения версии с помощью частной функции _syscmd_ver модуля platform, чтобы вернуть точную версию.

  • bpo-42854: Разрешить параметры с именами ssl и SSL_read_ex с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42333: Модуль расширения порта _ssl для многофазной инициализации.

  • bpo-43880: ssl теперь поднимает DeprecationWarning для опций OP_NO_SSL/TLS*, старых версий TLS, старых протоколов и других функций, которые были устаревшими с Python 3.6, 3.7 или OpenSSL 1.1.0.

  • bpo-41559: Разрешить параметры с именами PEP 612 и types.GenericAlias с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43867: Разрешить параметры с именами multiprocessing и Server с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40443: Удаление неиспользуемых импортов: pyclbr больше не использует copy, а typing больше не использует ast. Исправление Виктора Стиннера.

  • bpo-43820: Удалите ненужную копию пространства имен, переданного в dataclasses.make_dataclass().

  • bpo-43787: Разрешить параметры с именами __iter__() и bz2.BZ2File с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43680: Утратили силу io.OpenWrapper и _pyio.OpenWrapper: вместо них используйте io.open и _pyio.open. До Python 3.9 _pyio.open не был статическим методом, а builtins.open имел значение OpenWrapper, чтобы не становиться связанным методом при установке на переменную класса. _io.open - это встроенная функция, тогда как _pyio.open - это функция Python. В Python 3.10 _pyio.open() теперь является статическим методом, а builtins.open() теперь io.open().

  • bpo-43680: Разрешить параметры с именами _pyio.open() и io.open() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41515: Разрешить параметры с именами KeyError и typing.get_type_hints() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43776: Разрешить параметры с именами subprocess.Popen и pathlib.Path с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42248: [Enum] гарантирует, что исключения, поднятые в _missing__, будут освобождены

  • bpo-43744: исправлена проблема, когда имя члена перечисления совпадало с началом имени частной переменной

  • bpo-43772: Исправлено возвращаемое значение TypeVar.__ror__. Исправление от Jelle Zijlstra.

  • bpo-43764: Добавьте параметр match_args в декоратор @dataclass для подавления генерации __match_args__.

  • bpo-43799: OpenSSL 3.0.0: определите OPENSSL_API_COMPAT 1.1.1 для подавления предупреждений об устаревании. Python требует API OpenSSL 1.1.1.

  • bpo-43478: Разрешить параметры с именами autospec=True и create_autospec(...) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43794: Добавьте константы ssl.OP_IGNORE_UNEXPECTED_EOF (OpenSSL 3.0.0)

  • bpo-43785: Разрешить параметры с именами bz2.BZ2File и gzip с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43789: OpenSSL 3.0.0: Не вызывайте функцию обратного вызова пароля второй раз, если первый вызов сигнализирует об ошибке.

  • bpo-43788: Разрешить параметры с именами ssl и make_ssl_data.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43766: Разрешить параметры с именами PEP 647 и typing с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25264: Разрешить параметры с именами os.path.realpath() и True с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43780: Разрешить параметры с именами importlib.metadata и entry_points() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • P.args: Разрешить параметры с именами P.kwargs и typing.ParamSpec с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43731: Разрешить параметры с именами encoding и logging.fileConfig() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43712: Разрешить параметры с именами encoding и errors с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38659: Разрешить параметры с именами simple_enum и enum с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43764: Разрешить параметры с именами __match_args__ и dataclasses с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43752: Разрешить параметры с именами sqlite3 и b"" с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43655: tkinter диалоговые окна теперь распознаются как диалоговые окна оконными менеджерами в macOS и X Window.

  • bpo-43723: Следующие методы threading теперь устарели и должны быть заменены:

    Патч от Jelle Zijlstra.

  • bpo-2135: Утрачиваем реализации find_module() и find_loader() в importlib и zipimport.

  • bpo-43534: Разрешить параметры с именами turtle.textinput() и turtle.numinput() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43532: Добавляет возможность указывать в классах данных поля, доступные только по ключевому слову. Эти поля станут аргументами только для ключевого слова в генерируемом __init__.

  • bpo-43522: Исправление проблемы с hostname_checks_common_name. OpenSSL не копирует флаги хоста из структуры SSL_CTX в структуру SSL.

  • bpo-8978: Разрешить параметры с именами tarfile.open() и lzma с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42967: Разрешить параметры с именами bytes и separator с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43296: Разрешить параметры с именами sqlite3 и sqlite3_value_blob() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43312: Разрешить параметры с именами sysconfig.get_preferred_scheme() и sysconfig.get_default_scheme() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43265: Разрешить параметры с именами sqlite3.Connection.backup() и unknown database <database name> с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41282: Разрешить параметры с именами distutils.command.install и sysconfig с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41282: Разрешить параметры с именами distutils.sysconfig и sysconfig с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43176: Исправлена обработка класса данных, который наследуется от замороженного класса данных без полей. Теперь он корректно определяется как ошибка.

  • bpo-43080: Разрешить параметры с именами pprint и dataclasses.dataclass с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39950: Разрешить параметры с именами pathlib.Path.hardlink_to() и link_to() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42904: Разрешить параметры с именами typing.get_type_hints() и PEP 563 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42269: Разрешить параметры с именами slots и dataclasses.dataclass с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39529: Разрешить параметры с именами asyncio.get_event_loop() и asyncio с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-18369: В модуль ssl добавлены классы Certificate и PrivateKey. Сертификаты и ключи теперь можно загружать и из буфера памяти.

  • bpo-41486: Разрешить параметры с именами bz2 и lzma с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31870: Функция ssl.get_server_certificate() теперь имеет параметр timeout.

  • bpo-41735: Исправление блокировки потоков в модуле zlib, которая в редких случаях может сбиться. Исправление от Ma Lin.

  • bpo-36470: Разрешить параметры с именами InitVar и replace() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40849: Выставляем ssl-флаг X509_V_FLAG_PARTIAL_CHAIN

  • bpo-35114: Разрешить параметры с именами ssl.RAND_status() и 1 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39906: Разрешить параметры с именами pathlib.Path.stat() и chmod() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39899: os.path.expanduser() теперь отказывается угадывать домашние каталоги Windows, если базовое имя домашнего каталога текущего пользователя не совпадает с его именем пользователя.

    pathlib.Path.expanduser(): Разрешить параметры с именами home() и RuntimeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36076: Добавлена поддержка SNI в ssl.get_server_certificate().

  • bpo-38490: В модуль статистики добавлены функции ковариации, корреляции Пирсона и простой линейной регрессии. Исправление сделано Тимотеушем Влодзько.

  • bpo-33731: Предоставьте функцию locale.localize(), которая преобразует нормализованную строку чисел в формат локали.

  • bpo-32745: Разрешить параметры с именами ctypes.c_wchar_p и ValueError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-43987: Добавьте документ «Annotations Best Practices» в качестве нового HOWTO.

  • bpo-43977: Разрешить параметры с именами Py_TPFLAGS_MAPPING и Py_TPFLAGS_SEQUENCE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43959: Документация по C-API PyContextVar была уточнена.

  • bpo-43938: Обновите документацию по классам данных, чтобы выразить, что FrozenInstanceError является производным от AttributeError.

  • bpo-43778: Исправьте расширение Sphinx glossary_search: создайте подкаталог _static/, если он не существует.

  • bpo-43755: Обновите документацию, чтобы отразить, что с Python 3.9 нерасшифрованные лямбда-выражения больше не могут быть частью выражения в предложении if в осмыслениях и генераторных выражениях.

  • bpo-43739: Исправление кода примера в Doc/extending/extending.rst для объявления и инициализации переменной pmodule правильного типа.

Тесты

  • bpo-43961: Разрешить параметры с именами os.replace() и os.rename() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43842: Исправление состояния гонки в SMTP-тесте test_logging. Не закрывайте файловый дескриптор (сокет) из другого потока, пока asyncore.loop() опрашивает файловый дескриптор. Исправление Виктора Стиннера.

  • bpo-43843: Разрешить параметры с именами test.libregrtest и threading.excepthook() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43811: Тестирует несколько версий OpenSSL на GitHub Actions. Используйте ccache для ускорения тестирования.

  • bpo-43791: OpenSSL 3.0.0: Отключите тестирование устаревших протоколов TLS 1.0 и 1.1. Тесты завершаются с ошибкой TLSV1_ALERT_INTERNAL_ERROR.

Построить

  • bpo-43567: Улучшено обновление сгенерированного кода (AST/tokens/opcodes/keywords) на Windows.

  • bpo-43669: Внедрите PEP 644. Для Python теперь требуется OpenSSL 1.1.1 или более новая версия.

Windows

  • bpo-35306: Добавляет дополнительные аргументы к функции os.startfile().

  • bpo-43538: Избегайте появления ошибок от pathlib.Path.exists() при передаче недопустимого имени файла.

  • bpo-38822: Разрешить параметры с именами os.stat() и os.path.exists() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26227: Разрешить параметры с именами socket.gethostbyaddr() и socket.gethostbyname_ex() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40432: Обновлен скрипт pegen regeneration под Windows, чтобы найти и использовать Python 3.8 или выше. До этого регенерация pegen уже требовала 3.8 или выше, но скрипт мог использовать более низкие версии Python.

  • bpo-43745: Фактически обновляет выпуск Windows до версии OpenSSL 1.1.1k. Более ранние выпуски были неправильно обозначены и на самом деле включали 1.1.1i.

  • bpo-43652: Обновление Tcl и Tk до версии 8.6.11 в программе установки Windows.

  • bpo-43492: Обновление программы установки Windows для использования SQLite 3.35.5.

  • bpo-30555: Исправление ошибок WindowsConsoleIO при наличии перенаправления fd. Исправление от Сегева Файнера.

macOS

  • bpo-42119: Разрешить параметры с именами /System/Library и /System/IOSSupport с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43568: Отказ от поддержки MACOSX_DEPLOYMENT_TARGET < 10.3

  • bpo-44009: Предоставьте исполняемый файл «python3.x-intel64» для надежного принудительного запуска сборок фреймворка macOS universal2 под эмуляцией Rosetta 2 Intel-64 на компьютерах Apple Silicon Mac. Это может быть полезно для тестирования или когда колеса universal2 еще не доступны.

  • bpo-43851: Сборка SQLite с помощью SQLITE_OMIT_AUTOINIT на macOS. Исправление от Эрленда Э. Аасланда.

  • bpo-43492: Обновите программу установки macOS для использования SQLite 3.35.4.

  • bpo-42235: Разрешить параметры с именами Mac/BuildScript/build-installer.py и --with-lto с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

IDLE

  • bpo-37903: Добавляет действия мыши на боковую панель оболочки. Левый щелчок и дополнительное перетаскивание выделяют одну или несколько строк, как в боковой панели номеров строк редактора. Правый щелчок после выделения вызывает контекстное меню с опцией «Копировать с подсказками». Это позволяет скопировать подсказки из боковой панели со строками выделенного текста.

  • bpo-43981: Исправьте утечку ссылок в test_sidebar и test_squeezer. Исправления от Terry Jan Reedy и Pablo Galindo

  • bpo-37892: Отступ при вводе IDLE Shell с помощью пробелов вместо табуляции

  • bpo-43655: Диалоговые окна IDLE теперь распознаются как диалоговые окна оконными менеджерами в macOS и X Window.

  • bpo-37903: Оболочка IDLE теперь показывает подсказки в отдельной боковой панели.

C API

  • bpo-43916: Добавьте новый флаг типа Py_TPFLAGS_DISALLOW_INSTANTIATION, чтобы запретить создание экземпляров типов. Исправление Виктора Стиннера.

  • bpo-43774: Разрешить параметры с именами PYMALLOC_DEBUG и Py_DEBUG с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43962: _PyInterpreterState_IDIncref() теперь вызывает _PyInterpreterState_IDInitref() и всегда увеличивает id_refcount. Ранее вызов _xxsubinterpreters.get_current() мог привести к несоответствию id_refcount, когда объект _xxsubinterpreters.InterpreterID был деаллоцирован. Исправление Виктора Стиннера.

  • bpo-28254: Разрешить параметры с именами PyGC_Enable() и PyGC_Disable() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43908: Разрешить параметры с именами Py_TPFLAGS_IMMUTABLETYPE и PyType_Ready() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43795: Разрешить параметры с именами PyMem_Calloc() и Py_LIMITED_API с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43868: Разрешить параметры с именами PyOS_ReadlineFunctionPointer() и python3.dll с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43795: Стабильный ABI и ограниченные определения API генерируются из центрального манифеста (PEP 652).

  • bpo-43753: Разрешить параметры с именами Py_Is(x, y) и x is y с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.10.0 alpha 7

Дата выхода: 2021-04-05

Безопасность

  • bpo-42988: Разрешить параметры с именами CVE-2021-3426 и getfile с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43285: ftplib больше не доверяет значению IP-адреса, возвращаемому сервером в ответ на команду PASV по умолчанию. Это не позволяет злонамеренному FTP-серверу использовать ответ для проверки комбинаций IPv4-адресов и портов в сети клиента.

    trust_server_pasv_ipv4_address: Разрешить параметры с именами ftplib.FTP и True с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43439: Разрешить параметры с именами gc.get_objects() и gc.get_referrers() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-27129: Обновление магического числа байткода CPython.

  • bpo-43672: Вызывает предупреждение ImportWarning при вызове find_loader().

  • bpo-43660: Исправление сбоя, возникающего при замене sys.stderr на вызываемый объект, который может удалить объект во время печати исключения. Исправление от Pablo Galindo.

  • bpo-27129: Интерпретатор байткода использует внутренние смещения инструкций, а не байтов. Это уменьшает количество необходимых инструкций EXTENDED_ARG и немного упрощает диспетчеризацию инструкций.

  • bpo-40645: Исправление утечки ссылок в расширении _hashopenssl. Исправление от Пабло Галиндо.

  • bpo-42134: Вызовы find_module() системой импорта теперь поднимают ImportWarning.

  • bpo-41064: Улучшена синтаксическая ошибка при неправильном использовании элементов с двойной звездой („**“) в f-строках. Исправление от Pablo Galindo.

  • bpo-43575: Разрешить параметры с именами map() и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42137: Разрешить параметры с именами __spec__ и ModuleType.__repr__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43452: Добавлены микрооптимизации в _PyType_Lookup() для улучшения производительности поиска в кэше в общем случае попаданий в кэш.

  • bpo-43555: Сообщать о смещении столбца для SyntaxError для недопустимых символов продолжения строки. Исправление Пабло Галиндо.

  • bpo-43517: Исправление ошибки обнаружения циклического импорта при использовании from pkg.mod import attr, что приводило к ложным срабатываниям в нетривиальном многопоточном коде.

  • bpo-43497: Выдавать SyntaxWarnings для утверждений с константами кортежей, это регрессия, появившаяся в python3.7

  • bpo-39316: Трассировка теперь имеет правильные номера строк для доступа к атрибутам, когда атрибут находится в другой строке, чем объект. Улучшена отладка и профилирование для многострочных цепочек методов.

  • bpo-35883: Python больше не выдает фатальную ошибку при запуске, если аргумент командной строки содержит недопустимый символ Юникода. Функция Py_DecodeLocale() теперь экранирует последовательности байтов, которые были бы декодированы как символы Юникода за пределами диапазона [U+0000; U+10ffff].

  • bpo-43410: Исправлена ошибка, приводившая к аварийному завершению работы парсера при выдаче синтаксических ошибок при чтении ввода из stdin. Исправление от Pablo Galindo

  • bpo-43406: Исправление возможного состояния гонки, когда PyErr_CheckSignals пытается выполнить обработчик сигналов, не относящийся к Python.

  • bpo-42128: Разрешить параметры с именами __match_args__ и struct sequence objects с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43390: Разрешить параметры с именами SA_ONSTACK и PyOS_setsig с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43287: Разрешить параметры с именами filter() и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37448: Добавляет карту памяти на основе радиксного дерева для отслеживания используемых областей obmalloc. Используется для замены старой реализации address_in_range(). Подход, основанный на радиксном дереве, позволяет легко увеличить размер пула за пределы размера страницы ОС. Увеличение размера пула и арены позволяет obmalloc обрабатывать значительно больший процент запросов из своих сверхбыстрых путей.

    Его преимущество также в том, что он устраняет небезопасное для памяти поведение предыдущей функции address_in_range(). Старая функция address_in_range() была помечена аннотациями _Py_NO_SANITIZE_ADDRESS, _Py_NO_SANITIZE_THREAD и _Py_NO_SANITIZE_MEMORY. Эти аннотации больше не нужны.

    Чтобы отключить карту радиксного дерева, установите флаг препроцессора следующим образом: -DWITH_PYMALLOC_RADIX_TREE=0.

    Соавтор: Тим Питерс <tim.peters@gmail.com>.

  • bpo-29988: Обрабатывает только асинхронные исключения и запросы на сброс GIL при возврате из вызова или на задних границах циклов. Убедитесь, что __exit__() всегда вызывается вместе с операторами, даже для прерываний.

Библиотека

  • bpo-43720: Документирование различных устареваний stdlib в imp, pkgutil и importlib.util для удаления в Python 3.12.

  • bpo-43433: xmlrpc.client.ServerProxy больше не игнорирует запрос и фрагмент в URL сервера.

  • bpo-31956: Разрешить параметры с именами index() и array.array с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40066: Разрешить параметры с именами repr() и str() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42136: Утрачиваем все методы module_repr(), найденные в importlib, поскольку их использование постепенно прекращается в Python 3.12.

  • bpo-35930: Вызов исключения, возникшего в экземпляре «будущего», создаст циклы ссылок.

  • bpo-41369: Завершите обновление вендорного libmpdec до версии 2.5.1. Исправление от Стефана Краха.

  • bpo-43422: Верните API _decimal C, который был добавлен в bpo-41324.

  • bpo-43577: Разрешить параметры с именами ssl.SSLContext и ssl.SSLContext.sni_callback() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43571: Теперь можно создавать MPTCP-сокеты с помощью IPPROTO_MPTCP

  • bpo-43542: Разрешить параметры с именами image/heic и image/heif с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40645: Модуль hmac теперь использует реализацию HMAC от OpenSSL, когда аргументом digestmod является имя хэша или встроенная хэш-функция.

  • bpo-43510: Разрешить параметры с именами PEP 597 и EncodingWarning с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43521: ast.unparse теперь могут отображать NaN и пустые множества.

  • bpo-42914: Разрешить параметры с именами pprint.pprint() и underscore_numbers с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41361: Вызовы rotate() теперь работают немного быстрее благодаря более быстрому разбору аргументов.

  • bpo-43423: subprocess.communicate() больше не вызывает ошибку IndexError при наличии пустого буфера ввода-вывода stdout или stderr во время тайм-аута в Windows.

  • bpo-27820: Исправлена давняя ошибка smtplib.SMTP, когда выполнение AUTH LOGIN с initial_response_ok=False приводило к неудаче.

    Причина в том, что SMTP.auth_login _всегда_ возвращает пароль, если ему предоставлена строка вызова, что не соответствует стандарту для AUTH LOGIN.

    Также исправлена ошибка с тестом для smtpd.

  • bpo-43445: Разрешить параметры с именами sys.stdlib_module_names и "_frozen_importlib" с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43245: Добавьте поддержку аргументов ключевых слов в ChainMap.new_child().

  • bpo-29982: Разрешить параметры с именами tempfile.TemporaryDirectory() и cleanup() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43428: Включить изменения из importlib_metadata 3.7:

    Повышение производительности при обнаружении распределений.

    entry_points возвращает только уникальные распределения.

    Представлен новый объект EntryPoints, содержащий набор точек входа с удобными методами для выбора точек входа по группе или имени. entry_points теперь возвращает этот объект, если заданы параметры выбора, но для совместимости продолжает возвращать объект dict. Пользователям рекомендуется полагаться на интерфейс выбора. Результат в виде объекта dict, вероятно, будет устаревшим в будущем.

    Добавлена функция packages_distributions, возвращающая сопоставление пакетов с дистрибутивами, которые их предоставляют.

  • bpo-43332: Разрешить параметры с именами http.client и set_tunnel() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43420: Улучшение производительности арифметики fractions.Fraction для больших компонентов. Внесено Сергеем Б. Кирпичевым.

  • bpo-43356: Разрешить передачу номера сигнала в _thread.interrupt_main().

  • bpo-43399: Исправление ElementTree.extend, не работающего на итераторах при использовании реализации Python

  • bpo-43369: Разрешить параметры с именами sqlite3 и sqlite3_column_text() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43368: Разрешить параметры с именами None и b'' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41282: Разрешить параметры с именами DeprecationWarning и import distutils с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42129: Разрешить параметры с именами importlib.resources и importlib_resources с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43295: Разрешить параметры с именами datetime.datetime.strptime() и ValueError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43125: Возвращает пустую строку, если base64mime.body_encode получает пустые байты

  • bpo-43084: Разрешить параметры с именами curses.window.enclose() и True с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42994: Добавьте типы MIME для opus, AAC, 3gpp и 3gpp2

  • bpo-14678: Добавьте метод invalidate_caches() в класс zipimport.zipimporter для поддержки importlib.invalidate_caches(). Исправление Десмонда Чонга.

  • bpo-42782: Fail fast в shutil.move(), чтобы избежать создания целевых каталогов при сбое.

  • bpo-40066: Разрешить параметры с именами repr() и str() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26053: Исправлена ошибка, при которой команда интерактивного запуска pdb передавала эхом параметры из командной строки оболочки, даже если они были переопределены в приглашении pdb.

  • bpo-24160: Исправлена ошибка, из-за которой точки останова не сохранялись в нескольких сеансах отладчика в интерактивном режиме pdb.

  • bpo-40701: Разрешить параметры с именами tempfile.tempdir и tempfile.gettempdir() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39342: Разрешить параметры с именами X509_V_FLAG_ALLOW_PROXY_CERTS и VERIFY_ALLOW_PROXY_CERTS с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31861: Добавляет builtins.aiter и builtins.anext. Патчи подготовили Джошуа Бронсон (@jab), Дэниел Поуп (@lordmauve) и Джастин Ванг (@justin39).

Документация

  • bpo-43199: Ответ на вопрос «Почему нет goto?» в FAQ по дизайну и истории.

  • bpo-43407: Разрешить параметры с именами time.monotonic() и time.perf_counter() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43354: Разрешить параметры с именами Fault.faultCode и int с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41933: Уточнена формулировка s * n в Общих операциях с последовательностями

Тесты

  • bpo-37945: Исправьте test_getsetlocale_issue1813() из test_locale: пропускайте тест, если setlocale() не работает. Исправление Виктора Стиннера.

  • bpo-41561: Добавьте обходное решение для пользовательской политики уровня безопасности OpenSSL в Ubuntu.

Построить

  • bpo-43179: Внедрение и корректное использование ALIGNOF_X вместо SIZEOF_X для кода, связанного с выравниванием, в оптимизированных строковых подпрограммах. Исправление Джессики Кларк.

  • bpo-43631: Обновите macOS, Windows и CI до версии OpenSSL 1.1.1k.

  • bpo-43617: Улучшите configure.ac: Проверяет наличие пакета autoconf-archive и удаляет наши копии макросов M4.

  • bpo-43466: Разрешить параметры с именами configure и --with-openssl-rpath с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43372: Разрешить параметры с именами _freeze_importlib и __hello__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Windows

  • bpo-43440: Разрешить параметры с именами sqlite3 и R*Tree с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

IDLE

  • bpo-42225: Документ о том, что IDLE может не работать на Unix либо из-за неправильно настроенных правил IP-маскарада, либо из-за неспособности отображать сложные цветные (неascii) символы.

C API

  • bpo-43688: Разрешить параметры с именами Py_DEBUG и Py_INCREF() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Ограниченный C API по-прежнему не поддерживается в специальной сборке --with-trace-refs (макрос``Py_TRACE_REFS``).

    Патч Виктора Стиннера.

  • bpo-43244: Удалите заголовочный файл pyarena.h с функциями:

    • PyArena_New()

    • PyArena_Free()

    • PyArena_Malloc()

    • PyArena_AddPyObject()

    Эти функции были недокументированы, исключены из ограниченного API C и использовались только компилятором. Исправление Виктора Стиннера.

  • bpo-43244: Удалите функции компилятора и парсера, использующие тип struct _mod, поскольку публичный API AST C был удален:

    • PyAST_Compile()

    • PyAST_CompileEx()

    • PyAST_CompileObject()

    • PyFuture_FromAST()

    • PyFuture_FromASTObject()

    • PyParser_ASTFromFile()

    • PyParser_ASTFromFileObject()

    • PyParser_ASTFromFilename()

    • PyParser_ASTFromString()

    • PyParser_ASTFromStringObject()

    Эти функции были недокументированы и исключены из ограниченного C API. Исправление Виктора Стиннера.

  • bpo-43244: Разрешить параметры с именами ast.h и asdl.h с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43541: Исправление регрессии PyEval_EvalCodeEx(): исправление подсчета ссылок на встроенные модули. Исправление от Виктора Стиннера.

  • bpo-43244: Удалите заголовочный файл symtable.h и недокументированные функции:

    • PyST_GetScope()

    • PySymtable_Build()

    • PySymtable_BuildObject()

    • PySymtable_Free()

    • Py_SymtableString()

    • Py_SymtableStringObject()

    Функция Py_SymtableString() по ошибке вошла в стабильный ABI, но ее нельзя было использовать, потому что заголовочный файл symtable.h был исключен из ограниченного API C.

    Модуль Python symtable остается доступным и неизменным.

    Патч Виктора Стиннера.

  • bpo-43244: Разрешить параметры с именами PyAST_Validate() и mod_ty с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.10.0 alpha 6

Дата выхода: 2021-03-01

Безопасность

  • bpo-42967: Устранение уязвимости отравления веб-кэша путем установки по умолчанию разделителя аргументов запроса на & и предоставления пользователю возможности выбрать пользовательский разделитель.

Ядро и встроенные модули

  • bpo-43321: Разрешить параметры с именами SystemError и PyArg_Parse*() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36346: Разрешить параметры с именами PyArg_Parse*() и DeprecationWarning с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43277: Разрешить параметры с именами PySet_CheckExact() и set с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42990: Разрешить параметры с именами types.FunctionType и "__builtins__" с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42990: Разрешить параметры с именами __builtins__ и __globals__['__builtins__'] с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43149: Улучшение сообщения об ошибке в парсере для групп исключений без круглых скобок. Исправление от Pablo Galindo.

  • bpo-43121: Исправлено некорректное сообщение SyntaxError о пропущенной запятой в литералах. Исправление от Пабло Галиндо.

  • bpo-42819: Разрешить параметры с именами readline и readline.read_init_file() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42808: Разрешить параметры с именами type(object) и vectorcall с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42217: Сделать так, чтобы компилятор объединял одинаковые объекты co_code и co_linetable в модуль, как это уже было сделано для co_consts.

  • bpo-41972: Разрешить параметры с именами str1 in str2 и str2.find(str1) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42128: Реализуйте PEP 634 (структурное сопоставление шаблонов). Исправление от Брандта Бухера.

  • bpo-40692: Разрешить параметры с именами concurrent.futures.ProcessPoolExecutor и multiprocess.synchronize() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38302: Разрешить параметры с именами object.__ipow__() и NotImplemented с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-43316: Приложение командной строки python -m gzip теперь корректно завершает работу при обнаружении неподдерживаемого расширения. Оно завершается с ненулевым кодом выхода и печатает сообщение об ошибке в stderr.

  • bpo-43317: Установите размер чанка для главной функции модуля gzip в io.DEFAULT_BUFFER_SIZE. Это немного быстрее, чем константа 1024 байта, которая использовалась ранее.

  • bpo-43146: Разрешить параметры с именами print_exception() и format_exception() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43260: Исправление TextIOWrapper не может вечно промывать внутренний буфер после записи очень большого текста.

  • bpo-43258: Предотвращение ненужного выделения контекста агрегатной функции sqlite3, когда ни одна строка не соответствует агрегатному запросу. Исправление Эрленда Э. Аасланда.

  • bpo-43251: Разрешить параметры с именами sqlite3 и sqlite3_column_name() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40956: Исправление segfault в sqlite3.Connection.backup(), если не был указан аргумент. Регрессия была внесена в PR 23838. Исправление авторства Эрленда Э. Аасланда.

  • bpo-43172: Разрешить параметры с именами readline.get_begidx() и readline.get_endidx() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43163: Исправлена ошибка в codeop, из-за которой он не запрашивал дополнительный ввод, когда многострочные фрагменты содержали незакрытые круглые скобки. Исправление от Pablo Galindo

  • bpo-43162: отменить неподдерживаемую возможность доступа к членам перечисления как к атрибутам других членов перечисления

  • bpo-43146: Исправление недавней регрессии в обработке аргумента None в функциях модуля traceback.

  • bpo-43102: Метод namedtuple __new__ имел значение __builtins__, установленное в None вместо действительного словаря. Это создавало проблемы для инструментов интроспекции.

  • bpo-43106: Разрешить параметры с именами O_EVTONLY и O_FSYNC с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42960: Разрешить параметры с именами resource.RLIMIT_KQUEUES и resource с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42151: Разрешить параметры с именами xml.etree.ElementTree и _elementree с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29753: В ctypes теперь правильно вычисляются упакованные битовые поля, а первый элемент упакованного битового поля теперь корректно уменьшается.

Документация

  • bpo-27646: Уточните, что „yield from <expr>“ работает с любыми итерируемыми, а не только с итераторами.

  • bpo-36346: Обновите некоторые устаревшие юникодовые API, которые документированы как «будут удалены в 4.0», до «3.12». Подробности см. в PEP 623.

Тесты

  • bpo-43288: Исправление test_importlib для корректного пропуска тестов файлов Unicode, если файловая система их не поддерживает.

Построить

  • bpo-43174: Сборка Windows теперь использует опцию компилятора /utf-8.

  • bpo-43103: Разрешить параметры с именами --without-static-libpython и libpythonMAJOR.MINOR.a с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-13501: Сценарий configure теперь может использовать libedit вместо readline с опцией командной строки --with-readline=editline.

  • bpo-42603: Заставляет скрипт configure использовать pkg-config для определения местоположения заголовков и библиотек Tcl/Tk, используемых для сборки tkinter.

    В macOS конфигурация Tcl/Tk, предоставленная pkg-config, будет предпочтительнее, чем фреймворки Tcl/Tk, установленные в /{System/,}Library/Frameworks. Если существуют обе конфигурации и предпочтение отдается последней, необходимо явно задать соответствующие параметры конфигурации --with-tcltk-*.

  • bpo-39448: Добавьте цель makefile «regen-frozen», которая регенерирует код для модуля frozen __hello__.

Windows

  • bpo-43155: Разрешить параметры с именами PyCMethod_New() и python3.lib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

macOS

  • bpo-41837: Обновите сборку программы установки macOS для использования OpenSSL 1.1.1j.

IDLE

  • bpo-43283: Документ о том, почему печать в оболочке IDLE часто медленнее, чем печать на системном терминале, и что ее можно ускорить, предварительно отформатировав одну строку перед печатью.

C API

  • bpo-43278: Всегда помещайте информацию о компиляторе и системе в первую строку приветственного сообщения REPL.

  • bpo-43270: Разрешить параметры с именами _PyErr_OCCURRED() и PyErr_Occurred() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35134: Переместите odictobject.h, parser_interface.h, picklebufobject.h, pydebug.h и pyfpe.h в каталог cpython/. Их нельзя включать напрямую, так как они уже включены в Python.h: Include Files.

  • bpo-35134: Переместите pyarena.h, pyctype.h и pytime.h в каталог cpython/. Их нельзя включать напрямую, так как они уже включены в Python.h: Include Files.

  • bpo-40170: Разрешить параметры с именами PyExceptionClass_Name() и PyTypeObject.tp_name с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43239: Разрешить параметры с именами PyCFunction_New() и -fvisibility=hidden с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40170: Разрешить параметры с именами PyIter_Check() и PyTypeObject.tp_iternext с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40170: Разрешить параметры с именами PyDescr_IsData() и PyTypeObject.tp_descr_set с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43181: Преобразуйте макрос PyObject_TypeCheck() в статическую инлайн-функцию. Исправление Эрленда Э. Аасланда.

Python 3.10.0 alpha 5

Дата выхода: 2021-02-02

Безопасность

  • bpo-42938: Разрешить параметры с именами ctypes.c_double и ctypes.c_longdouble с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-42990: Рефакторинг семейства функций PyEval_.

    • Добавлена новая функция _PyEval_Vector, упрощающая обращение к Python из C.

    • _PyEval_EvalCodeWithName удален

    • PyEval_EvalCodeEx сохраняется как часть API, но не используется внутренне

  • bpo-38631: Разрешить параметры с именами Py_FatalError() и SystemError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42997: Улучшено сообщение об ошибке при отсутствии «:» перед блоками. Исправление от Пабло Галиндо.

  • bpo-43017: Улучшено сообщение об ошибке в парсере при использовании непартезированных кортежей в осмыслениях. Исправление от Pablo Galindo.

  • bpo-42986: Исправление падения парсера при сообщении о синтаксических ошибках в f-строках с новыми строками. Исправление от Pablo Galindo.

  • bpo-40176: Синтаксические ошибки для нетерминированных строковых литералов теперь указывают на начало строки, а не сообщают о EOF/EOL.

  • bpo-42927: Разрешить параметры с именами LOAD_ATTR и __slots__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42864: Улучшение сообщений об ошибках в парсере, когда круглые скобки не закрыты. Исправление от Pablo Galindo.

  • bpo-42924: Разрешить параметры с именами bytearray и bytearray с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42882: Разрешить параметры с именами _PyUnicode_FromId() и Py_Initialize() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42827: Исправление сбоя при отработке строки ошибки SyntaxError в некоторых многострочных выражениях.

  • bpo-42823: frame.f_lineno корректен, даже если для frame.f_trace установлено значение True

  • bpo-37324: Разрешить параметры с именами Коллекции Абстрактные базовые классы и collections с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41994: Разрешить параметры с именами import и sys.modules с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27772: При форматировании строк предшествование поля width значением '0' больше не влияет на выравнивание строк по умолчанию.

Библиотека

  • bpo-43108: Исправлена утечка ссылок в модуле curses. Исправление от Пабло Галиндо

  • bpo-43077: Обновите поставляемые в комплекте pip до версии 21.0.1 и setuptools до версии 52.0.0.

  • bpo-41282: Утратить distutils в документации и добавить предупреждение при импорте.

  • bpo-43014: Повышение производительности tokenize на 20-30%. Патч от Энтони Соттила.

  • bpo-42323: Исправьте math.nextafter() для NaN на AIX.

  • bpo-42955: Добавьте sys.stdlib_module_names, содержащий список имен модулей стандартной библиотеки. Исправление Виктора Стиннера.

  • bpo-42944: Разрешить параметры с именами random.Random.sample и counts с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42934: Разрешить параметры с именами TracebackException и compact с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42931: Разрешить параметры с именами randbytes() и random.__all__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38250: [Enum] Флаги, состоящие из одного бита, теперь считаются каноническими и будут единственными флагами, возвращаемыми при перечислении и итерации над классом Flag или членом Flag. Многобитовые флаги считаются псевдонимами; они будут возвращаться при поиске и операциях, результатом которых является их значение. Итерация для членов Flag и Flag происходит в порядке определения.

  • bpo-42877: Разрешить параметры с именами compact и traceback.TracebackException с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42923: Разрешить параметры с именами Py_FatalError() и faulthandler с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42848: Удалили рекурсию из TracebackException, чтобы позволить ему обрабатывать длинные цепочки исключений.

  • bpo-42901: Разрешить параметры с именами EnumMeta.__new__ и _proto_member.__set_name__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42780: Исправьте os.set_inheritable() для файловых дескрипторов O_PATH в Linux.

  • bpo-42866: Исправление утечки ссылок в функции getcodec() кодеков CJK. Исправление от Виктора Стиннера.

  • bpo-42846: Переведите 6 модулей расширения кодеков CJK (_codecs_cn, _codecs_hk, _codecs_iso2022, _codecs_jp, _codecs_kr и _codecs_tw) на API многофазной инициализации (PEP 489). Исправление Виктора Стиннера.

  • bpo-42851: убрать поддержку __init_subclass__ для членов Enum

  • bpo-42834: Сделайте внутренние кэши модуля _json совместимыми с субинтерпретаторами.

  • bpo-41748: Исправлены правила разбора HTMLParser для атрибутов элементов, содержащих запятые с пробелами. Исправление от Карла Дубоста.

  • bpo-40810: Требуется SQLite 3.7.15 или более новая версия. Исправление от Erlend E. Aasland.

  • bpo-1635741: Переведите модуль расширения _multibytecodec (кодеки CJK) на многофазную инициализацию (PEP 489). Исправление Эрленда Э. Аасланда.

  • bpo-42802: Разрешить параметры с именами bdist_wininst и bdist_wheel с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24464: Недокументированная встроенная функция sqlite3.enable_shared_cache теперь устарела и планируется к удалению в Python 3.12. Документация по SQLite3 настоятельно не рекомендует ее использовать. Исправление Эрленда Э. Аасланда.

  • bpo-42384: Сделайте так, чтобы pdb заполнял sys.path[0] точно так же, как и при обычном выполнении python.

  • bpo-42383: Исправление pdb: ранее pdb не мог перезапустить цель отладки, если она была указана с использованием относительного пути и текущий каталог изменился.

  • bpo-42005: Разрешить параметры с именами cProfile и profile с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41604: Не уменьшайте счетчик ссылок предыдущего user_ptr, когда set_panel_userptr не работает.

  • bpo-41149: Разрешить параметры с именами False и Threading.thread с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38307: Добавьте атрибут „end_lineno“ к объектам Class и Function, которые появляются в дереве, возвращаемом функциями pyclbr. Этот атрибут и существующий атрибут „lineno“ определяют границы утверждений class и def. Исправление от Aviral Srivastava.

  • bpo-39273: Разрешить параметры с именами BUTTON5_* и curses с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33289: Исправьте вызов tkinter.colorchooser, чтобы вернуть RGB-триплет интов вместо плавающих значений. Исправление от Cheryl Sabella.

Документация

  • bpo-40304: Исправьте doc для type(name, bases, dict). Исправление Бориса Верховского и Эрика Араужо.

  • bpo-42811: Обновлена документация importlib.util.resolve_name(), чтобы использовать __spec__.parent вместо __package__. (Спасибо Яиру Фриду.)

Тесты

  • bpo-40823: Разрешить параметры с именами unittest.TestLoader().loadTestsFromTestCase() и unittest.makeSuite() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40810: Разрешить параметры с именами sqlite3 и CheckTraceCallbackContent с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Построить

  • bpo-43031: Разрешить параметры с именами --timeout=$(TESTTIMEOUT) и ./python -m test --pgo с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36143: Разрешить параметры с именами make regen-all и regen-keyword с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42874: Убраны флаги grep -q и -E в секции проверки tzpath сценария configure, чтобы улучшить работу пользователей некоторых платформ (в частности, Solaris 10).

  • bpo-31904: Добавление пути поиска библиотеки по wr-cc в add_cross_compiling_paths() для VxWorks.

  • bpo-42856: Разрешить параметры с именами --with-wheel-pkg-dir=PATH и ./configure с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Некоторые политики упаковки дистрибутивов Linux рекомендуют не связывать зависимости. Например, Fedora устанавливает пакеты wheel в каталог /usr/share/python-wheels/ и не устанавливает пакет ensurepip._bundled.

Windows

  • bpo-41837: Обновлена программа установки Windows для включения OpenSSL 1.1.1i

  • bpo-42584: Обновление программы установки Windows для использования SQLite 3.34.0.

macOS

  • bpo-42504: Убедитесь, что значение sysconfig.get_config_var(„MACOSX_DEPLOYMENT_TARGET“) всегда является строкой, даже если значение можно разобрать как целое число.

IDLE

  • bpo-43008: Заставляет IDLE вызывать sys.excepthook() в обычном, двухпроцессном режиме. Исправление Кена Хилтона.

  • bpo-33065: Исправление проблемы отладки пользовательских классов с методом __repr__.

  • bpo-23544: Отключает Debug=>Stack Viewer, когда запущен пользовательский код или активен отладчик, чтобы предотвратить зависание или крах. Исправление от Zackery Spytz.

  • bpo-32631: Доработайте модуль расширения примера zzdummy: сделайте так, чтобы пункты меню работали; добавьте документацию и тесты со 100% покрытием.

C API

  • bpo-42979: Разрешить параметры с именами sq_length и __len__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-43030: Разрешить параметры с именами Py_UNICODE_ISSPACE() и wchar_t с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.10.0 alpha 4

Дата выхода: 2021-01-04

Ядро и встроенные модули

  • bpo-42814: Исправьте неопределенное поведение в Objects/genericaliasobject.c.

  • bpo-42806: Исправление смещения столбцов для узлов f-строк ast, окруженных круглыми скобками, и для узлов, порождающих несколько строк. Исправление от Пабло Галиндо.

  • bpo-40631: Исправление регрессии, при которой единственное выражение со звездочкой в парентезе было допустимой целью присваивания.

  • bpo-27794: Улучшено сообщение об ошибке при неудачных записях/удалениях объектов свойств. Теперь, когда это возможно, отображается имя атрибута. Патч предоставлен Юрием Карабасом.

  • bpo-42745: Сделать кэш поиска атрибутов типа индивидуальным для каждого интерпретатора. Исправление Виктора Стиннера.

  • bpo-42246: Переходы к переходам не устраняются, если это нарушает PEP 626.

  • bpo-42246: Разрешить параметры с именами f_lasti и f_lineno с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32381: Разрешить параметры с именами # coding: latin1 и -c с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30858: Улучшена локализация ошибок в выражениях, содержащих присваивания. Исправление Пабло Галиндо и Лисандроса Николау.

  • bpo-42615: Удаление команд перехода, ставших лишними в результате удаления недоступных блоков байткода

  • bpo-42639: Разрешить параметры с именами atexit и atexit с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32381: Разрешить параметры с именами .pyc и PyRun_SimpleFileExFlags() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42195: Разрешить параметры с именами __args__ и typing.Callable с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40137: Преобразуйте модуль functools для использования PyType_FromModuleAndSpec().

  • bpo-40077: Преобразуйте array для использования типов кучи и установите состояние модуля для них.

  • bpo-42008: Исправьте посев _random.Random().

  • bpo-1635741: Разрешить параметры с именами pyexpat и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40521: Сделать словарь интернированных строк Unicode совместимым с субинтерпретаторами. Исправление Виктора Стиннера.

  • bpo-39465: Сделайте функцию _PyUnicode_FromId() совместимой с субинтерпретаторами. Теперь каждый интерпретатор имеет массив объектов идентификаторов (интернированных строк, декодированных из UTF-8). Исправление Виктора Стиннера.

Библиотека

  • bpo-42257: Обработка пустой строки в переменной executable в platform.libc_ver()

  • bpo-42772: randrange() теперь выдает ошибку TypeError, если шаг указан без аргумента stop. Ранее она молча игнорировала аргумент step.

  • bpo-42759: Разрешить параметры с именами tkinter.Variable и tkinter.font.Font с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42756: Настройка сокета LMTP Unix-домена на использование глобального таймаута сокета по умолчанию, если таймаут не указан явно.

  • bpo-23328: Разрешить символ / в полях имени пользователя и пароля в окружении _PROXY.

  • bpo-42740: Разрешить параметры с именами typing.get_args() и typing.get_origin() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42655: subprocess extra_groups теперь корректно передается в системный вызов setgroups().

  • bpo-42727: Разрешить параметры с именами EnumMeta.__prepare__ и **kwds с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38308: Добавьте необязательные веса в statistics.harmonic_mean().

  • bpo-42721: Разрешить параметры с именами tkinter.simpledialog и tkinter.messagebox с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25246: Оптимизировано collections.deque.remove().

  • bpo-35728: Добавлен корневой параметр в tkinter.font.nametofont().

  • bpo-15303: tkinter поддерживает теперь виджеты с булевым значением False.

  • bpo-42681: Исправлена проверка диапазона для цвета и номера пары в curses.

  • bpo-42685: Улучшено размещение простых окон запросов в Tkinter (таких как tkinter.simpledialog.askinteger()). Теперь они центрируются по центру родительского окна, если оно указано и показано, в противном случае - по центру экрана.

  • bpo-9694: В справке Argparse больше не используется путаная фраза «необязательные аргументы». Вместо нее используется «опции».

  • bpo-1635741: Разрешить параметры с именами _thread и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37961: Исправление сбоя в tracemalloc.Traceback.__repr__() (исправлено в Python 3.9).

  • bpo-42630: Разрешить параметры с именами tkinter и RuntimeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42639: Разрешить параметры с именами atexit._run_exitfuncs() и sys.unraisablehook с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42644: Разрешить параметры с именами logging.disable и logging.setLevel с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42639: При выходе из Python, если обратный вызов, зарегистрированный в atexit.register(), не работает, его исключение теперь записывается в журнал. Ранее в журнал записывались только некоторые исключения, а последнее исключение всегда молча игнорировалось.

  • bpo-36541: Исправлена lib2to3.pgen2 для разбора синтаксиса аргументов PEP-570 «только позиция».

  • bpo-42382: Разрешить параметры с именами importlib.metadata и EntryPoint с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41877: Добавлена проверка на неправильное написание autospect, auto_spec и set_spec, передаваемых в качестве аргументов в patch, patch.object и create_autospec.

  • bpo-39717: Разрешить параметры с именами from None и from e с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41877: AttributeError для предполагаемых опечаток в утверждениях на макетах теперь указывается, что причиной являются опечатки в утверждениях, а также что делать, если опечатка на самом деле является предполагаемым именем атрибута. Документ unittest.mock также обновлен, чтобы отразить текущий набор распознанных опечаток.

  • bpo-41559: Разрешить параметры с именами PEP 612 и ParamSpec с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42385: StrEnum: исправьте _generate_next_value_, чтобы он возвращал str

  • bpo-31904: Определите THREAD_STACK_SIZE для VxWorks.

  • bpo-34750: [Enum] _EnumDict.update() теперь поддерживается.

  • bpo-42517: Enum: приватные имена не становятся членами / не генерируют ошибок - они остаются обычными атрибутами

  • bpo-42678: Разрешить параметры с именами Enum и __init_subclass__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28964: ast.literal_eval() добавляет информацию о номере строки (если она доступна) в сообщение об ошибке для неверно сформированных узлов.

  • bpo-42470: random.sample() больше не предупреждает о последовательности, которая также является множеством.

  • bpo-31904: posixpath.expanduser() возвращает входной путь без изменений, если домашний каталог пользователя None на VxWorks.

  • bpo-42388: Исправьте поведение subprocess.check_output(…, input=None) при text=True, чтобы оно соответствовало поведению документации и universal_newlines=True.

  • bpo-34463: Разрешить параметры с именами traceback и traceback с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42393: Разрешить параметры с именами OverflowError и socket.ntohs() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42222: Разрешить параметры с именами random.randrange() и range() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    • Для проверки и преобразования целых чисел в randrange() теперь используется operator.index().

    • Нецелые аргументы в randrange() устарели.

    • Значение ValueError устарело в пользу TypeError.

    • Теперь он работает немного быстрее, чем раньше.

    (Предоставлено Раймондом Хеттингером и Сергеем Сторчакой).

  • bpo-42163: Восстановление совместимости для uname_result вокруг deepcopy и _replace.

  • bpo-42090: Разрешить параметры с именами zipfile.Path.joinpath и pathlib.Path.joinpath с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Перенесите модуль _csv в API многофазной инициализации (PEP 489).

  • bpo-42059: Разрешить параметры с именами typing.TypedDict и total с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41960: Разрешить параметры с именами globalns и localns с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41907: Разрешить параметры с именами format() и IntFlag с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41891: Убедитесь, что asyncio.wait_for ожидает завершения задачи

  • bpo-24792: Исправлена ошибка, из-за которой zipimporter иногда сообщал неверную причину ошибок импорта.

  • bpo-31904: Исправьте модули site и sysconfig для VxWorks RTOS, не имеющей домашних каталогов.

  • bpo-41462: Добавьте os.set_blocking() поддержку VxWorks RTOS.

  • bpo-40219: Опустите фиктивный виджет tkinter.ttk.LabeledScale, чтобы не скрывать часть содержимого ярлыка.

  • bpo-37193: Исправлена утечка памяти в socketserver.ThreadingMixIn, появившаяся в Python 3.7.

  • bpo-39068: Разрешить параметры с именами a85encode() и b85encode() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-17140: Добавьте документацию для класса multiprocessing.pool.ThreadPool.

  • bpo-34398: Заметное отображение списков из глоссария в результатах поиска документации. Исправление Аммара Аскара.

Тесты

  • bpo-42794: Обновите test_nntplib, чтобы использовать официальное имя группы news.aioe.org для тестирования. Исправление от Donghee Na.

  • bpo-31904: Пропустите некоторые тесты asyncio на VxWorks.

  • bpo-42641: Улучшите test_select.test_select(): теперь это занимает 500 миллисекунд, а не 10 секунд. Используйте Python, а не оболочку, чтобы сделать тест более переносимым.

  • bpo-31904: Пропустите некоторые тесты в _test_all_chown_common() на VxWorks.

  • bpo-42199: Исправьте помощник байткода assertNotInBytecode.

  • bpo-41443: Добавьте больше проверки атрибутов в test_posix.py

  • bpo-31904: Отключение os.popen и тестов на воздействие на VxWorks

  • bpo-41439: Перенос test_ssl и test_uuid в VxWorks RTOS.

Построить

  • bpo-42692: Исправление проверки __builtin_available на старых компиляторах. Исправление Джошуа Рота.

  • bpo-27640: Разрешить параметры с именами --disable-test-modules и configure с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42604: Теперь все платформы используют значение переменной сборки «EXT_SUFFIX», полученное из SOABI (например, в freeBSD «EXT_SUFFIX» теперь «.cpython-310d.so», а не «.so»). Ранее только Linux, Mac и VxWorks использовали значение для «EXT_SUFFIX», включающее «SOABI».

  • bpo-42598: Исправление неявных объявлений функций в configure, которые могли приводить к некорректным проверкам конфигурации. Исправление внесено Джошуа Ротом.

  • bpo-31904: Включите libpython3.so для VxWorks.

  • bpo-29076: Добавьте поддержку оболочки fish shell в программу установки macOS.

macOS

  • bpo-42361: Обновление сборки программы установки macOS для использования Tcl/Tk 8.6.11 (rc2, ожидается финальный релиз).

  • bpo-41837: Обновите сборку программы установки macOS для использования OpenSSL 1.1.1i.

  • bpo-42584: Обновите программу установки macOS для использования SQLite 3.34.0.

Инструменты/демоверсии

  • bpo-42726: Исправлена проблема совместимости с Python 3 при работе gdb/libpython.py со словарями атрибутов.

  • bpo-42613: Исправьте freeze.py, чтобы инструмент использовал директории prope config и library. Исправление от Виктора Стиннера.

C API

  • bpo-42591: Разрешить параметры с именами Py_FrozenMain() и -fvisibility=hidden с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32381: Разрешить параметры с именами _Py_fopen() и _Py_wfopen() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Порт resource модуля расширения в состояние модуля

  • bpo-42111: Обновите модуль xxlimited, чтобы он стал лучшим примером использования ограниченного API на языке C.

  • bpo-40052: Исправление предупреждения/ошибки сборки выравнивания в функции PyVectorcall_Function(). Исправление от Andreas Schneider, Antoine Pitrou и Petr Viktorin.

Python 3.10.0 alpha 3

Дата выхода: 2020-12-07

Безопасность

  • bpo-40791: Разрешить параметры с именами volatile и hmac.compare_digest с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-42576: Разрешить параметры с именами types.GenericAlias и TypeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42536: Некоторые встроенные и стандартные библиотечные типы теперь гарантируют, что их внутренние кортежи результатов всегда отслеживаются по garbage collector:

    Ранее они могли стать неотслеживаемыми в результате предыдущей сборки мусора. Исправление от Брандта Бухера.

  • bpo-42500: Улучшена обработка исключений вблизи предела рекурсии. Преобразует ряд фатальных ошибок в RecursionErrors.

  • bpo-42246: PEP 626: После возврата атрибут f_lineno кадра всегда является последней выполненной строкой.

  • bpo-42435: Ускоряет сравнение байтовых объектов с небайтовыми, если указана опция -b. Ускорить сравнение объектов bytarray с объектами, не являющимися буферами.

  • bpo-1635741: Разрешить параметры с именами _warnings и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41686: Разрешить параметры с именами SIGINT и _PyOS_SigintEvent() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42381: Разрешение выражений присваивания в литералах множеств и осмыслениях множеств в соответствии с PEP 572. Исправление от Пабло Галиндо.

  • bpo-42202: Измените внутреннее представление аннотаций параметров функций на кортеж строк. Патч предоставлен Юрием Карабасом.

  • bpo-42374: Исправление регрессии, возникшей в новом парсере, когда в выражениях-генераторах не разрешалось использовать оператор моржа, не имеющий родительских отношений.

  • bpo-42316: Разрешить моржа без родительского падежа в подскриптных индексах.

  • bpo-42349: Убедитесь, что фронт-енд компилятора выдает хорошо сформированный граф потока управления. Будьте более агрессивны в бэкэнд-компиляторе, поскольку теперь это безопасно.

  • bpo-42296: В Windows исправлена регрессия в обработке сигналов, которая не позволяла прервать программу с помощью CTRL+C. Обработчик сигналов может быть запущен в потоке, отличном от потока Python, и в этом случае тест, определяющий, может ли поток обрабатывать сигналы, неверен.

  • bpo-42332: Объекты types.GenericAlias теперь могут быть объектами weakrefs.

  • bpo-42282: Оптимизация константных подвыражений, которые появляются как часть именованных выражений (ранее AST-оптимизатор не опускался в именованные выражения). Исправление Ника Коглана.

  • bpo-42266: Исправлена ошибка в кэше опкодов LOAD_ATTR, которая не позволяла исправить атрибут уровня класса, чтобы сделать его дескриптором. Исправление Пабло Галиндо.

  • bpo-40077: Преобразуйте queue для использования типов кучи.

  • bpo-42246: Улучшена точность событий трассировки линий и атрибута f_lineno объектов Frame. Подробности см. в PEP 626.

  • bpo-40077: Преобразуйте mmap для использования типов кучи.

  • bpo-42233: Разрешить параметры с именами GenericAlias и union type expressions с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26131: Разрешить параметры с именами ImportWarning и load_module() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-5054: CGIHTTPRequestHandler.run_cgi() Неправильно разобран HTTP_ACCEPT. Замените специальный метод getallmatchingheaders на общий метод get_all и добавьте соответствующие тесты.

    Оригинальный патч Мартина Пантера. Изменено Сентхилом Кумараном.

  • bpo-42562: Исправлена проблема, когда dis не мог разобрать функцию, не имеющую номеров строк. Исправление предоставлено Юрием Карабасом.

  • bpo-17735: Разрешить параметры с именами inspect.findsource() и OSError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42116: Исправьте обработку комментариев в конце страницы inspect.getsource().

  • bpo-42532: Разрешить параметры с именами __bool__ и spec_arg с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38200: Добавлена функция itertools.pairwise()

  • bpo-41818: Исправьте test_master_read() так, чтобы она успешно работала на всех платформах, которые либо поднимают OSError, либо возвращают b«» при чтении с master.

  • bpo-42487: ChainMap.__iter__ больше не вызывает __getitem__ на нижележащих картах

  • bpo-42482: TracebackException больше не содержит ссылку на объект трассировки исключения. Следовательно, экземпляры TracebackException для эквивалентных, но неравных исключений теперь сравниваются как равные.

  • bpo-41818: Сделайте так, чтобы test_openpty() избегала неожиданного успеха из-за того, что количество строк и/или количество столбцов == 0.

  • bpo-42392: Разрешить параметры с именами asyncio.subprocess и asyncio.tasks с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42392: Разрешить параметры с именами asyncio.open_connection и asyncio.start_server с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28468: Разрешить параметры с именами platform.freedesktop_os_release() и os-release с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42299: Удален модуль formatter, который был устаревшим в Python 3.4. Он несколько устарел, мало используется и не тестируется. Изначально планировалось удалить его в Python 3.6, но удаление было отложено до выхода Python 2.7 EOL. Существующие пользователи должны скопировать все классы, которые они используют, в свой код. Исправление сделано Донгхи На и Терри Дж. Риди.

  • bpo-26131: Утрачиваем функцию zipimport.zipimporter.load_module() в пользу exec_module().

  • bpo-41818: Обновлены тесты для библиотеки pty. test_basic() заменена на test_openpty(); дополнительно проверяется, правильно ли устанавливаются slave termios и slave winsize с помощью pty.openpty(). Чтобы добавить поддержку FreeBSD, NetBSD, OpenBSD и Darwin, добавлена test_master_read(), которая демонстрирует, что pty.spawn() не должен зависеть от OSError для выхода из цикла копирования.

  • bpo-42392: Разрешить параметры с именами __init__ и asyncio.locks с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-15450: Разрешить параметры с именами filecmp.dircmp и filecmp.dircmp.subdirs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42413: Разрешить параметры с именами socket.timeout и TimeoutError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31904: Поддержка сигнального модуля на VxWorks.

  • bpo-42406: Разрешить параметры с именами pickle.whichmodule и multiprocessing с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42403: Разрешить параметры с именами importlib и importlib._bootstrap_external с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Преобразование типов модуля _sre в типы кучи (PEP 384). Исправление Эрленда Э. Аасланда.

  • bpo-42375: обновление модуля подпроцессов для поддержки DragonFlyBSD.

  • bpo-41713: Разрешить параметры с именами _signal и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37205: Разрешить параметры с именами time.time() и time.perf_counter() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42328: Разрешить параметры с именами tkinter.ttk.Style.map() и Style.map() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42345: Исправление различных проблем с обработкой параметров typing.Literal (flatten, deduplicate, use type to cache key). Патч предоставлен Юрием Карабасом.

  • bpo-37205: Разрешить параметры с именами time.perf_counter() и time.monotonic() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42318: Исправлена поддержка не-BMP символов в tkinter на macOS.

  • bpo-42350: Исправьте класс threading.Thread на fork: ничего не делать, если поток уже остановлен (например, fork вызывается при выходе из Python). Ранее ошибка записывалась в журнал дочернего процесса.

  • bpo-42333: Перенос модуля расширения _ssl в кучу типов.

  • bpo-42014: Разрешить параметры с именами onerror и shutil.rmtree с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42237: Исправьте os.sendfile() на illumos.

  • bpo-42308: Разрешить параметры с именами threading.__excepthook__ и threading.excepthook() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42131: Реализуйте методы PEP 451/spec в zipimport.zipimporter: find_spec(), create_module() и exec_module().

    Это также позволяет документировать устаревание find_loader(), find_module() и load_module().

  • bpo-41877: Макетные объекты, которые не являются небезопасными, теперь будут вызывать ошибку AttributeError при обращении к атрибуту с префиксом asert, aseert или assrt, в дополнение к тому, что это уже происходит для префиксов assert или assret.

  • bpo-42264: Разрешить параметры с именами sqlite3.OptimizedUnicode и str с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42251: Разрешить параметры с именами threading.gettrace() и threading.getprofile() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42249: Исправлена запись двоичных Plist-файлов размером более 4 ГБ.

  • bpo-42236: Разрешить параметры с именами os.device_encoding() и 'UTF-8' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41754: webbrowser: Игнорировать NotADirectoryError при вызове xdg-settings.

  • bpo-42183: Исправление ошибки переполнения стека для asyncio Task или Future repr().

    Переполнение происходит при некоторых обстоятельствах, когда Task или Future рекурсивно возвращают сами себя.

  • bpo-42140: Улучшите функцию asyncio.wait, чтобы набор фьючерсов создавался только один раз.

  • bpo-42133: Разрешить параметры с именами __spec__.loader и __loader__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26131: Разрешить параметры с именами load_module() и importlib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39825: Разрешить параметры с именами sysconfig.get_config_var('EXT_SUFFIX') и platform_tag.extension с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26389: Разрешить параметры с именами traceback.format_exception() и traceback.format_exception_only() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41889: Enum: исправлена регрессия, связанная с наследованием многократно наследуемого enum

  • bpo-41861: Преобразуйте sqlite3 для использования типов кучи (PEP 384). Исправление Эрленда Э. Аасланда.

  • bpo-40624: Добавлена поддержка оператора XPath != в xml.etree

  • bpo-28850: Разрешить параметры с именами pprint.PrettyPrinter.format() и pprint._safe_repr() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41625: Разрешить параметры с именами splice() и os.splice() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34215: Разрешить параметры с именами asyncio.IncompleteReadError и expected с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41543: Добавьте поддержку асинхронного менеджера контекста для contextlib.nullcontext.

  • bpo-21041: pathlib.PurePath.parents теперь поддерживает отрицательную индексацию. Патч внесен Ярославом Панковичем.

  • bpo-41332: Добавлен недостающий метод connect_accepted_socket() в asyncio.AbstractEventLoop.

  • bpo-12800: Извлечение симлинка из tarball должно завершиться успешно и перезаписать симлинк, если он уже существует. Исправление заключается в удалении существующего файла или симлинка перед извлечением. Основано на исправлении Криса Атли, Джеффри Кинчера и Сентхила Кумарана.

  • bpo-40968: Разрешить параметры с именами urllib.request и http.client с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41001: Добавьте os.eventfd(), чтобы обеспечить низкоуровневый интерфейс для файлового дескриптора уведомлений о событиях в Linux.

  • bpo-40816: Добавьте AsyncContextDecorator в contextlib для поддержки асинхронного менеджера контекста в качестве декоратора.

  • bpo-40550: Исправление проблемы времени проверки/времени действия в subprocess.Popen.send_signal.

  • bpo-39411: Разрешить параметры с именами is_async и pyclbr с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35498: Добавьте поддержку срезов в pathlib.PurePath.parents.

Документация

  • bpo-42238: Предварительно мы планируем деприватизировать make suspicious, сначала удалив его из сборок CI и документации, но оставив его для ручного использования.

  • bpo-42153: Исправьте URL для документов протокола IMAP.

  • bpo-41028: Переключатели языков и версий, ранее поддерживаемые в каждой ветке cpython, теперь обрабатываются docsbuild-script.

Тесты

  • bpo-41473: Повторное включение test_gdb на gdb 9.2 и новее: https://bugzilla.redhat.com/show_bug.cgi?id=1866884 ошибка исправлена в gdb 10.1.

  • bpo-42553: Разрешить параметры с именами test_asyncio.test_call_later() и call_later() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31904: Исправьте test_netrc на VxWorks: создание временных каталогов с помощью temp_cwd().

  • bpo-31904: пропустить test_getaddrinfo_ipv6_scopeid_symbolic и test_getnameinfo_ipv6_scopeid_symbolic на VxWorks

  • bpo-31904: пропустить test_test из test_mailcap на VxWorks

  • bpo-31904: добавьте требование оболочки для test_pipes

  • bpo-31904: пропустите некоторые тесты, связанные с fifo на VxWorks

  • bpo-31904: Исправление ошибок в test_doctest.py для VxWorks.

  • bpo-40754: Включите модуль _testinternalcapi в программу установки Windows для тестового набора

  • bpo-41561: test_ssl: пропускать test_min_max_version_mismatch, когда TLS 1.0 недоступен

  • bpo-31904: Исправление сбоев в работе модулей os для VxWorks RTOS.

  • bpo-31904: Исправление тестовых случаев fifo для VxWorks RTOS.

Построить

  • bpo-31904: удалите зависимость libnet из detect_socket() для VxWorks

  • bpo-42398: Исправление состояния гонки в «make regen-all» при использовании опции make -jN для параллельного запуска заданий. Скрипт clinic.py теперь использует только атомарную запись для записи файлов. При перемещении сгенерированные файлы теперь остаются неизменными, если их содержимое не меняется, чтобы не менять время модификации файла.

  • bpo-41617: Разрешить параметры с именами pycore_bitutils.h и __builtin_bswap16() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38823: Разрешить параметры с именами _ctypes и wchar_t с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42087: Поддержка была удалена для AIX 5.3 и ниже. См. bpo-40680.

  • bpo-40998: Устранены три предупреждения компилятора, обнаруженные средством очистки неопределенного поведения (ubsan).

Windows

  • bpo-42120: Разрешить параметры с именами copysign и _copysign с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38506: Программа запуска Windows теперь правильно обрабатывает Python 3.10 при отображении установленных версий Python.

macOS

  • bpo-42504: Исправление сборки на macOS Big Sur, когда MACOSX_DEPLOYMENT_TARGET=11

  • bpo-41116: Убедитесь, что distutils.unixxcompiler.find_library_file может находить системные библиотеки на macOS 11.

  • bpo-41100: Добавлена поддержка macOS 11 и систем Apple Silicon.

    Теперь можно собирать двоичные файлы «Universal 2», используя «–enable-universalsdk –with-universal-archs=universal2».

    Двоичные файлы, собранные на более поздних версиях macOS, могут быть развернуты обратно на более старые версии (проверено до macOS 10.9) при использовании правильной цели развертывания. Это проверено с помощью Xcode 11 и более поздних версий.

  • bpo-42232: В модуль mmap добавлены специфические для Дарвина опции madvise.

  • bpo-38443: Разрешить параметры с именами --enable-universalsdk и --with-universal-archs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

IDLE

  • bpo-42508: Сохраните работу IDLE на macOS. Устранение устаревшего обходного пути, который не позволял запускать файлы с ярлыками при использовании новых универсальных установщиков2, созданных на macOS 11.

  • bpo-42426: Исправлено сообщение о смещении ошибки RE в searchengine.

  • bpo-42415: Чаще получайте документацию для подсказок IDLE, используя inspect.getdoc.

Инструменты/демоверсии

  • bpo-42212: Скрипт smelly.py теперь также проверяет динамическую библиотеку Python и модули расширения, а не только статическую библиотеку Python. Также сделайте скрипт более подробным: объясните, что он делает.

  • bpo-36310: Разрешить параметры с именами Tools/i18n/pygettext.py и gettext с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

C API

  • bpo-42423: Разрешить параметры с именами PyType_FromSpecWithBases() и PyType_FromModuleAndSpec() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами select и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Перенос модуля расширения _posixsubprocess для многофазной инициализации (PEP 489).

  • bpo-1635741: Порт модуля расширения _posixshmem для многофазной инициализации (PEP 489)

  • bpo-1635741: Модуль расширения Port _struct для многофазной инициализации (PEP 489)

  • bpo-1635741: Разрешить параметры с именами spwd и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами gc и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Модуль расширения порта _queue для многофазной инициализации (PEP 489)

  • bpo-39573: Разрешить параметры с именами Py_TYPE() и Py_SIZE() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами symtable и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами grp и pwd с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Модуль расширения порта _random для многофазной инициализации (PEP 489)

  • bpo-1635741: Порт модуля расширения _hashlib для многофазной инициализации (PEP 489)

  • bpo-41713: Разрешить параметры с именами PyOS_InitInterrupts() и PyConfig.install_signal_handlers с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40170: Разрешить параметры с именами Py_TRASHCAN_BEGIN и _PyTrash_cond() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42260: Разрешить параметры с именами Py_GetPath() и Py_GetPrefix() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42260: Разрешить параметры с именами PyConfig_Read() и PyConfig.argv с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42262: Разрешить параметры с именами Py_NewRef() и Py_XNewRef() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42260: Разрешить параметры с именами Py_Initialize() и sys с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41832: Разрешить параметры с именами PyType_FromModuleAndSpec() и tp_doc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами PyModule_AddObjectRef() и PyModule_AddObject() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42171: Разрешить параметры с именами METH_FASTCALL и PyModule_AddType() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42085: Добавьте специальную запись в PyAsyncMethods для отправки значений

  • bpo-41073: PyType_GetSlot() теперь могут принимать статические типы.

  • bpo-30459: Разрешить параметры с именами PyList_SET_ITEM() и PyTuple_SET_ITEM() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.10.0 alpha 2

Дата выхода: 2020-11-03

Безопасность

  • bpo-42103: Предотвращена потенциальная DoS-атака через истощение процессора и оперативной памяти при обработке вредоносных файлов Apple Property List в двоичном формате.

  • bpo-42051: Модуль plistlib больше не принимает объявления сущностей в XML-файлах plist, чтобы избежать уязвимостей XML. Это не должно повлиять на пользователей, поскольку объявления сущностей не используются в обычных plist-файлах.

Ядро и встроенные модули

  • bpo-42236: Если функция nl_langinfo(CODESET) возвращает пустую строку, Python теперь использует UTF-8 в качестве кодировки файловой системы. Исправление Виктора Стиннера.

  • bpo-42218: Исправлена ошибка в парсере PEG, которая приводила к сбоям в режиме отладки. Теперь ошибки проверяются в леворекурсивных правилах, чтобы избежать случаев, когда такие ошибки не обрабатываются вовремя и проявляются в виде дальних сбоев в других местах.

  • bpo-42214: Исправлено возможное падение парсера PEG при проверке наличия токена „!=“ в правиле barry_as_flufl. Автор исправления - Пабло Галиндо.

  • bpo-42206: Распространяйте и поднимайте ошибки, вызванные PyAST_Validate() в парсере.

  • bpo-41796: Внутреннее состояние модуля ast теперь зависит от интерпретатора. Исправление Виктора Стиннера.

  • bpo-42143: Исправлена обработка ошибок при создании PyFunctionObject, которые приводили к операциям с неинициализированной памятью. Исправление от Йонатана Гольдшмидта.

  • bpo-41659: Разрешить параметры с именами primary и a {b} с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42150: Исправление возможного переполнения буфера в новом парсере при проверке строк продолжения. Исправление от Пабло Галиндо.

  • bpo-42123: Запустите парсер два раза. При первом запуске отключите все правила, которые генерируют только лучшие сообщения об ошибках, чтобы увеличить производительность. Если произошел сбой разбора, запустите парсер во второй раз с включенными правилами.

  • bpo-42093: Инструкция LOAD_ATTR теперь использует новый механизм «кэш на опкод» и теперь работает примерно на 36 % быстрее. Патч от Пабло Галиндо и Юрия Селиванова.

  • bpo-42030: Поддержка устаревшей поддержки загрузки общих библиотек, специфичной для AIX, была удалена. Все версии AIX, начиная с 4.3, поддерживают и по умолчанию используют вместо этого обычный механизм Unix.

  • bpo-41984: Сборщик мусора теперь отслеживает все пользовательские классы. Исправление от Брандта Бухера.

  • bpo-41993: Исправлена потенциальная проблема с удалением не полностью инициализированного модуля из sys.modules при неудачном импорте.

  • bpo-41979: Распаковка звезд теперь разрешена для целей предмета в парсере PEG.

  • bpo-41974: Разрешить параметры с именами __int__ и __float__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41902: Разрешить параметры с именами sq_item и mp_subscript с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41894: Если при загрузке нативного модуля происходит сбой загрузки, предотвратите возможную ошибку UnicodeDecodeError при работе не в локали UTF-8, декодируя сообщение об ошибке загрузки с использованием кодировки текущей локали.

  • bpo-41902: Микрооптимизация для range.index, если шаг равен 1. Патч от Donghee Na.

  • bpo-41435: Добавьте функцию sys._current_exceptions() для получения словаря, отображающего идентификатор каждого потока на самое верхнее исключение, активное в этом потоке на момент вызова функции.

  • bpo-38605: Разрешить параметры с именами from __future__ import annotations и PEP 563 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-35455: Разрешить параметры с именами thread_time() и gethrvtime() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42233: Разрешить параметры с именами repr() и typing с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29566: binhex.binhex() последовательно пишет окончания строк macOS 9.

  • bpo-26789: Разрешить параметры с именами logging.FileHandler и open() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42157: Разрешить параметры с именами unicodedata.ucnhash_CAPI и _PyUnicode_Name_CAPI с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42157: Разрешить параметры с именами unicodedata и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42146: Разрешить параметры с именами subprocess.Popen() и user с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42103: Разрешить параметры с именами InvalidFileException и RecursionError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41490: Разрешить параметры с именами importlib.resources и .path с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41052: Пикирование типов кучи, реализованных на C с протоколами 0 и 1, теперь приводит к ошибке, а не к выдаче некорректных данных.

  • bpo-42089: В importlib.metadata.PackageNotFoundError сделайте ссылку на отсутствие метаданных пакета, чтобы улучшить пользовательский опыт.

  • bpo-41491: plistlib: исправление разбора XML-плистов с шестнадцатеричными целыми значениями

  • bpo-42065: Исправление некорректно оформленной ошибки при вызове _codecs.charmap_decode() с отображаемым значением вне диапазона допустимых кодовых точек Unicode. PR Макса Бернштейна.

  • bpo-41966: Исправление забора чистых подклассов Python datetime.time. Исправление от Дина Инвуда.

  • bpo-19270: sched.scheduler.cancel() теперь отменяет правильное событие, если два события с одинаковым приоритетом запланированы на одно и то же время. Исправление от Bar Harel.

  • bpo-28660: Разрешить параметры с именами textwrap.wrap() и break_long_words=True с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35823: Разрешить параметры с именами vfork() и fork() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42043: Разрешить параметры с именами zipfile.Path и zipfile.Path.is_file() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42021: Исправьте возможные утечки ссылок в модуле sqlite3 init.

  • bpo-39101: Исправлено зависание тестов, использующих IsolatedAsyncioTestCase, на BaseExceptions.

  • bpo-41976: Разрешить параметры с именами ctypes.util.find_library() и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41943: Исправлена ошибка, при которой TestCase.assertLogs неправильно фильтровал сообщения по уровню.

  • bpo-41923: Разрешить параметры с именами PEP 613 и typing.TypeAlias с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41905: Новая функция в abc: update_abstractmethods для повторного вычисления статуса абстрактного класса. Кроме того, dataclass был изменен для вызова этой функции.

  • bpo-23706: Добавлен параметр newline в pathlib.Path.write_text().

  • bpo-41876: Класс шрифта Tkinter repr использует имя шрифта

  • bpo-41831: Разрешить параметры с именами str() и type с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39337: encodings.normalize_encoding() теперь игнорирует символы, отличные от ASCII.

  • bpo-41747: Разрешить параметры с именами dataclasses.dataclass() и __qualname__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30681: Обработка исключений, вызванных непарсируемыми заголовками даты при использовании политики электронной почты «по умолчанию». Исправления от Tim Bell, Georges Toth

  • bpo-41586: Добавьте F_SETPIPE_SZ и F_GETPIPE_SZ в модуль fcntl. Позволяет устанавливать размер труб в subprocess.Popen.

  • bpo-41229: Разрешить параметры с именами contextlib.aclosing и contextlib.closing с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-16396: Разрешите импортировать ctypes.wintypes на системы, отличные от Windows.

  • bpo-4356: Добавьте ключевую функцию в модуль bisect.

  • bpo-40592: Разрешить параметры с именами shutil.which() и PATHEXT с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40492: Разрешить параметры с именами --outfile и cProfile с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34204: Разрешить параметры с именами shelve и pickle.DEFAULT_PROTOCOL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27321: Исправлено исключение KeyError, когда при сплющивании письма в строку пытались заменить несуществующий заголовок Content-Transfer-Encoding.

  • bpo-38976: Модуль http.cookiejar теперь поддерживает разбор куки-файлов в файлах cookiejar в стиле CURL через MozillaCookieJar на всех платформах. Ранее при загрузке cookiejar с такими записями они молча игнорировались.

    Кроме того, атрибут HTTP Only сохраняется в объекте и будет корректно записан в файл, если объект MozillaCookieJar будет впоследствии сброшен.

Документация

  • bpo-42061: Функциональность документа __format__ для IP-адресов.

  • bpo-41910: Документируйте реализацию по умолчанию object.__eq__.

  • bpo-42010: Разрешить параметры с именами classes и types с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41805: Разрешить параметры с именами generic alias type и types.GenericAlias с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39693: Исправьте документацию по извлечению tarfile

  • bpo-39416: Документируйте некоторые ограничения на строковые представления по умолчанию для числовых классов.

Тесты

  • bpo-41739: Исправьте test_logging.test_race_between_set_target_and_flush(): теперь тест ожидает завершения всех потоков, чтобы избежать утечки запущенных потоков.

  • bpo-41970: Избегайте сбоя теста в test_lib2to3, если модуль уже импортирован на момент выполнения теста. Исправление Пабло Галиндо.

  • bpo-41944: Тесты для кодеков CJK больше не вызывают eval() для содержимого, полученного по HTTP.

  • bpo-41306: Исправлена ошибка в test_tk.test_widgets.ScaleTest, возникавшая при выполнении теста с Tk 8.6.10.

Построить

  • bpo-38980: Разрешить параметры с именами -fno-semantic-interposition и --enable-optimizations с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Windows

  • bpo-38439: Обновляет иконки для IDLE в пакете Windows Store.

  • bpo-38252: Использование 8-байтового шага для определения последовательности ASCII в 64-битной сборке Windows.

  • bpo-39107: Обновление Tcl и Tk до версии 8.6.10 в программе установки Windows.

  • bpo-41557: Обновление программы установки Windows для использования SQLite 3.33.0.

  • bpo-38324: Избегайте ошибок Unicode при обращении к определенным данным локали в Windows.

macOS

  • bpo-41471: Игнорировать недопустимые длины префиксов в исключениях системного прокси.

IDLE

  • bpo-33987: В основном завершено использование виджетов ttk, в основном для редактора, настроек и поиска. Некоторые исправления от Марка Розмана.

  • bpo-40511: Ввод открывающей и закрывающей скобок внутри скобок вызова функции больше не будет приводить к ненужному «миганию» уже открытой скобки, например, при вводе строкового литерала.

  • bpo-38439: Добавляет значок IDLE размером 256×256 пикселей в файл Windows .ico. Создано Эндрю Кловером. Удалите из файла .ico вариации gif с низким содержанием цвета.

C API

  • bpo-42157: Разрешить параметры с именами _PyUnicode_Name_CAPI и unicodedata.ucnhash_CAPI с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-42015: Разрешить параметры с именами PyMethodDef и self с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40423: Разрешить параметры с именами subprocess и os.closerange с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41845: PyObject_GenericGetDict() снова доступен в ограниченном API при использовании версии 3.10 или более поздней.

  • bpo-40422: Добавьте функцию _Py_closerange, чтобы обеспечить эффективное закрытие диапазона файловых дескрипторов.

  • bpo-41986: Разрешить параметры с именами Py_FileSystemDefaultEncodeErrors и Py_UTF8Mode с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41756: Добавьте функцию PyIter_Send, чтобы можно было отправлять значение в генератор/корутин/итератор, не вызывая исключения StopIteration для сигнала возврата.

  • bpo-41784: Добавлена PyUnicode_AsUTF8AndSize в ограниченный C API.

Python 3.10.0 alpha 1

Дата выхода: 2020-10-05

Безопасность

  • bpo-41304: Разрешить параметры с именами python3x._pth и bpo-29778 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41162: Крючки аудита теперь очищаются позже во время финализации, чтобы не пропустить события.

  • bpo-29778: Разрешить параметры с именами python3.dll и CVE-2020-15523 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41004: Методы __hash__() ipaddress.IPv4Interface и ipaddress.IPv6Interface некорректно генерировали постоянные значения хэша 32 и 128 соответственно. Это приводило к постоянным хэш-коллизиям. Исправление использует hash() для генерации хэш-значений для кортежа (адрес, длина маски, сетевой адрес).

  • bpo-39603: Предотвращение инъекций в http-заголовки путем отклонения управляющих символов в http.client.putrequest(…).

Ядро и встроенные модули

  • bpo-41909: Разрешить параметры с именами issubclass() и isinstance() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41922: Разрешить параметры с именами reversed() и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41873: Разрешить параметры с именами float() и vectorcall с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41870: Разрешить параметры с именами bool() и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами _bisect и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39934: Корректный подсчет управляющих блоков в „except“ в компиляторе. Гарантирует, что для глубоко вложенных именованных обработчиков исключений произойдет синтаксическая ошибка, а не фатальная.

  • bpo-41780: Разрешить параметры с именами __dir__() и types.GenericAlias с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами _lsprof и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами cmath и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами _scproxy и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами termios и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Преобразуйте типы модулей расширения _sha256 в типы кучи.

  • bpo-41690: Исправление возможного переполнения стека в парсере при разборе функций и классов с большим количеством аргументов. Исправление от Pablo Galindo.

  • bpo-1635741: Разрешить параметры с именами _overlapped и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами _curses_panel и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами _opcode и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41681: Разрешить параметры с именами , и str.format() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41675: Разрешить параметры с именами signal.siginterrupt() и sigaction() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41670: Предотвращает пропуск трассировки строк на платформах, не скомпилированных с USE_COMPUTED_GOTOS. Исправлена проблема, из-за которой некоторые строки, вложенные в блок try-except, не трассировались на Windows.

  • bpo-41654: Исправление сбоя, возникавшего при уничтожении подклассов MemoryError. Исправление от Пабло Галиндо.

  • bpo-1635741: Разрешить параметры с именами zlib и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41631: Разрешить параметры с именами _ast и __import__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40077: Разрешить параметры с именами _operator и PyType_FromSpec() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1653741: Перенос _sha3 в многофазный init. Преобразование статических типов в типы кучи.

  • bpo-1635741: Разрешить параметры с именами _blake2 и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41533: Разрешить параметры с именами va_build_stack и do_mkstack с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41531: Исправлена ошибка, из-за которой при компиляции литералов dict, содержащих более 0xFFFF элементов, ключи выпадали. Исправление от Пабло Галиндо.

  • bpo-41525: Теперь вывод python --help содержит только символы ASCII.

  • bpo-1635741: Разрешить параметры с именами _sha1 и _sha512 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41431: Разрешить параметры с именами dict_merge() и dict(d) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41428: Реализация PEP 604. Это поддерживает (int | str) и т. д. вместо Union[str, int].

  • bpo-41340: Удалена реализация fallback для strdup.

  • bpo-38156: Правильно обрабатывайте прерывания, приходящие после EOF в PyOS_StdioReadline.

  • bpo-41342: round() с целочисленным аргументом теперь работает быстрее (9–60%).

  • bpo-41334: Разрешить параметры с именами str() и bytes() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41295: Устранение регрессии в CPython 3.8.4, когда определение «__setattr__» в мультинаследовании и вызов вверх по иерархической цепочке могли завершиться неудачей, если встроенные/расширяемые типы были вовлечены в базовые типы.

  • bpo-41323: Оптимизация байткода выполняется непосредственно на графе потока управления. В некоторых случаях это приводит к созданию более компактных объектов кода.

  • bpo-41247: Всегда кэшировать держатель цикла при выполнении asyncio.set_running_loop.

  • bpo-41252: Исправление неправильного подсчета ссылок в _ssl.c _servername_callback().

  • bpo-1635741: Порт multiprocessing для многофазной инициализации

  • bpo-1635741: Порт winapi для многофазной инициализации

  • bpo-41215: Использование не-NULL значений по умолчанию в списке ключевых слов парсера PEG для устранения ошибки, которая мешала правильному компилированию Python при использовании компилятора XLC. Исправление от Пабло Галиндо.

  • bpo-41218: В Python 3.8.3 была регрессия, при которой компиляция с ast.PyCF_ALLOW_TOP_LEVEL_AWAIT агрессивно помечала списочное понимание как CO_COROUTINE. Теперь только списковые компиляции, использующие async/await, будут помечены как таковые.

  • bpo-1635741: Порт faulthandler для многофазной инициализации.

  • bpo-1635741: Порт sha256 для многофазной инициализации

  • bpo-41175: Защищает от разыменования указателя NULL внутри объекта bytearrayobject, вызванного операцией bytearray() + bytearray().

  • bpo-41100: добавьте arm64 к допустимым аркам Mac OS в mpdecimal.h

  • bpo-41094: Исправление ошибок декодирования с аудитом при открытии файлов с не-ASCII именами на локали не-UTF-8.

  • bpo-39960: «Хакчек», предотвращающий обход __setattr__() типа путем вызова метода суперкласса, был переписан для разрешения кучи типов, реализованных в C.

  • bpo-41084: Префикс сообщения об ошибке с „f-string: „ при разборе выражения f-string, которое бросает SyntaxError.

  • bpo-40521: Пустые фростенсеты больше не являются синглтонами.

  • bpo-41076: Предварительно передайте парсеру местоположение выражения f-строки, а не саму f-строку, что позволяет нам пропустить перестановку местоположения узлов AST после завершения парсинга.

  • bpo-41056: Исправлена ссылка на деаллоцированное пространство стека во время запуска при построении sys.path с использованием относительной симлинки, когда код был предоставлен через -c. (обнаружено через Coverity)

  • bpo-41061: Исправление некорректных выражений и утверждений в коде и тестах hashtable.

  • bpo-41052: Отказ от сериализации/десериализации для _random.Random

  • bpo-40939: Разрешить параметры с именами PyPegen* и PyParser* с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35975: Стефан Бехнель сообщил, что cf_feature_version используется даже тогда, когда PyCF_ONLY_AST не установлен. Это противоречит намерениям и задокументированному поведению, так что это исправлено.

  • bpo-40939: Удалите оставшиеся файлы старого парсера и модуля symbol.

  • bpo-40077: Разрешить параметры с именами _bz2 и PyType_FromSpec() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41006: Модуль encodings.latin_1 больше не импортируется при запуске. Теперь он импортируется только тогда, когда речь идет о кодировке файловой системы или кодировке stdio.

  • bpo-40636: Разрешить параметры с именами zip() и PEP 618 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Порт _gdbm для многофазной инициализации.

  • bpo-40985: Исправлена ошибка, из-за которой текст SyntaxError был пустым, когда файл заканчивался строкой, завершающейся символом продолжения строки (т.е. обратным слешем). Текст ошибки должен содержать текст последней строки.

  • bpo-40958: Исправление возможного переполнения буфера в парсере PEG при сборе информации для выдачи синтаксических ошибок. Исправление от Pablo Galindo.

  • bpo-1635741: Порт _dbm для многофазной инициализации.

  • bpo-40957: Исправьте утечку в _Py_fopen_obj() при сбое PySys_Audit()

  • bpo-40950: Разрешить параметры с именами nis и PEP 3121 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40947: Разрешить параметры с именами Path Configuration и PyConfig.platlibdir с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40939: Удалите старый парсер, модуль parser и весь связанный с ним код поддержки, параметры командной строки и переменные окружения. Исправление от Пабло Галиндо.

  • bpo-40847: Разрешить параметры с именами NEWLINE и SyntaxError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40890: Разрешить параметры с именами mapping и types.MappingProxyType с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40889: Улучшена производительность операций симметричной разности на представлениях элементов словаря. Исправление Денниса Суини.

  • bpo-40904: Исправление возможного сегфайта в новом парсере PEG при разборе f-строки, содержащей оператор yield без значения (f"{yield}"). Исправление от Pablo Galindo

  • bpo-40903: Исправлена возможная ошибка сегментации в новом парсере PEG при выдаче сообщений об ошибках для некорректных присваиваний вида p=p=. Исправление от Pablo Galindo

  • bpo-40880: Исправление некорректного чтения памяти в новом парсере при проверке новых строк в строковых литералах. Исправление от Пабло Галиндо.

  • bpo-40883: Исправление утечки памяти при разборе f-строк в новом парсере. Исправление от Pablo Galindo

  • bpo-40870: Разрешить параметры с именами ValueError и True с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40854: Разрешить параметры с именами sys.platlibdir и PYTHONPLATLIBDIR с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40826: Исправьте использование GIL в PyOS_Readline(): заблокируйте GIL для установки исключения и передайте состояние потока Python при проверке наличия ожидающего сигнала.

  • bpo-1635741: Порт fcntl для многофазной инициализации.

  • bpo-19468: Удалите ненужную проверку экземпляра в importlib.reload(). Исправление от Furkan Önder.

  • bpo-40824: Разрешить параметры с именами __iter__ и TypeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40792: Разрешить параметры с именами start и stop с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40780: Исправление углового случая, когда при форматировании строки float в стиле g не удалялись нули в конце строки.

  • bpo-38964: Разрешить параметры с именами SyntaxError и SyntaxError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40750: Поддержка флага отладки «-d» в новом парсере PEG. Исправление от Пабло Галиндо

  • bpo-40217: Экземпляры типов, созданных с помощью PyType_FromSpecWithBases(), больше не будут автоматически обращаться к объекту своего класса при обходе ссылок в сборщике мусора. Пользователь должен вручную обращаться к классу объекта. Исправление Пабло Галиндо.

  • bpo-39573: Py_TYPE() заменена на встроенную статическую функцию. Исправление от Donghee Na.

  • bpo-40696: Исправление зависания, которое может возникнуть после generator.throw() из-за цикла в цепочке контекста исключений.

  • bpo-40521: Каждый интерпретатор теперь имеет свои собственные свободные списки, синглтоны и кэши:

    • Свободные списки: float, tuple, list, dict, frame, context, асинхронный генератор, MemoryError.

    • Синглеты: пустой кортеж, пустая байтовая строка, пустая строка Unicode, одиночный байтовый символ, одиночный символ Unicode (latin1).

    • Кэш-память с кусочками.

    Они больше не являются общими для всех переводчиков.

  • bpo-40679: Разрешить параметры с именами TypeError и qualified name с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29590: Разрешить параметры с именами generator.throw() и yield from с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-4022: Улучшение производительности генераторов за счет отказа от внутренней функции StopIteration.

  • bpo-1635741: Порт mmap для многофазной инициализации.

  • bpo-1635741: Порт _lzma для многофазной инициализации.

  • bpo-37999: Разрешить параметры с именами Decimal и Fraction с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29882: Добавьте int.bit_count(), подсчитывая количество единиц в двоичном представлении целого числа. Исправление Никласа Фиекаса.

  • bpo-36982: Использовать функции расширенного цвета ncurses, если они доступны для поддержки терминалов с 256 цветами, и добавить новую функцию curses.has_extended_color_support(), чтобы указать, обеспечивается ли поддержка расширенного цвета базовой библиотекой ncurses.

  • bpo-19569: Разрешить параметры с именами _Py_COMP_DIAG_PUSH и _Py_COMP_DIAG_IGNORE_DEPR_DECLS с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26680: Тип int теперь поддерживает метод x.is_integer() для совместимости с float.

Библиотека

  • bpo-41900: C14N 2.0 Сериализация в xml.etree.ElementTree не удалась для атрибутов без префиксов, когда было определено пространство имен по умолчанию.

  • bpo-41887: Разрешить параметры с именами ast.literal_eval() и eval() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41773: Разрешить параметры с именами random.choices() и ValueError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41840: Исправление ошибки в модуле symtable, из-за которой глобальные переменные в масштабе модуля не сообщались как локальные и глобальные. Исправление Пабло Галиндо.

  • bpo-41842: Добавьте функцию codecs.unregister() для снятия с регистрации функции поиска кодеков.

  • bpo-40564: В zipfile.Path мутируйте переданный тип объекта ZipFile вместо того, чтобы создавать копию. Предотвращает проблемы, когда и локальная копия, и копия вызывающей стороны пытаются закрыть один и тот же файловый хэндл.

  • bpo-40670: Более надежная проверка утверждений в timeit.Timer. Теперь она принимает «пустые» утверждения (только пробелы и комментарии) и отвергает утверждения с неправильным отступом.

  • bpo-41833: Конструктор threading.Thread теперь использует имя цели, если указан аргумент target, но опущен аргумент name.

  • bpo-41817: исправить tkinter.EventType Enum, чтобы все члены были строками, и ни один не был кортежем

  • bpo-41810: Разрешить параметры с именами types.EllipsisType и types.NotImplementedType с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41815: Исправление ошибки SQLite3 segfault при резервном копировании закрытой базы данных. Патч предоставлен Питером Дэвидом Маккормиком.

  • bpo-41816: Добавлена функция StrEnum: она гарантирует, что все члены уже являются строками или кандидатами в строки

  • bpo-41517: исправлена ошибка, позволяющая расширять Enums с помощью множественного наследования

  • bpo-39587: используйте правильный тип данных mix-in при построении Enums

  • bpo-41792: Добавьте функцию is_typeddict в typing.py, чтобы проверить, является ли тип классом TypedDict

    Раньше не было возможности проверить это без использования приватного API. Смотрите relevant issue in python/typing.

  • bpo-41789: Разрешить параметры с именами object и Enum с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32218: Разрешить параметры с именами enum.Flag и enum.IntFlag с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39651: Разрешить параметры с именами call_soon_threadsafe() и asyncio.ProactorEventLoop с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами mashal и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами _string и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41732: Разрешить параметры с именами iterator и memoryview с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41720: Исправлено turtle.Vec2D.__rmul__() для аргументов, которые не являются int или float.

  • bpo-41696: Разрешить параметры с именами asyncio.run() и PYTHONASYNCIODEBUG с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41687: Исправьте реализацию sendfile для совместимости с Solaris.

  • bpo-41662: Разрешить параметры с именами __len__() и sqlite3 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39010: Разрешить параметры с именами ProactorEventLoop и ConnectionResetErrors с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41638: Разрешить параметры с именами ProgrammingError и sqlite3 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41662: Исправлено падение при мутации списка параметров во время итерации в sqlite3.

  • bpo-41513: Улучшена точность math.hypot(). Каждый шаг вычисляется с дополнительной точностью, так что результат теперь почти всегда правильно округляется.

  • bpo-41609: Команда pdb whatis корректно сообщает о методах экземпляра как о „Method“, а не как о „Function“.

  • bpo-39994: Исправлена работа pprint с подклассами dict, переопределяющими __repr__.

  • bpo-32751: При отмене задания по таймауту asyncio.wait_for() теперь будет ждать завершения отмены и в том случае, если timeout <= 0, как это происходит при положительных таймаутах.

  • bpo-37658: asyncio.wait_for() теперь правильно обрабатывает гонки между отменой себя и завершением обернутого ожидаемого.

  • bpo-40782: Измените метод asyncio.AbstractEventLoop.run_in_executor, чтобы он не был корутином.

  • bpo-41520: Исправление регрессии codeop, которая не позволяла превратить предупреждения о компиляции в ошибки.

  • bpo-41528: черепаха использует функции математического модуля для преобразования градусов в радианы и наоборот, а также для вычисления нормы вектора

  • bpo-41513: Небольшое алгоритмическое улучшение math.hypot() и math.dist(), дающее небольшой прирост в скорости и точности.

  • bpo-41503: Исправлена гонка между setTarget и flush в logging.handlers.MemoryHandler.

  • bpo-41497: Исправление потенциальной ошибки UnicodeDecodeError в модуле dis.

  • bpo-41467: Разрешить параметры с именами recv_into() и BrokenPipeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41425: Сделайте пример tkinter doc запускаемым.

  • bpo-41421: Внесено алгебраическое упрощение в random.paretovariate(). Теперь она чуть меньше подвержена ошибкам округления и работает чуть быстрее. Вводы, которые раньше вызывали ошибку деления на ноль, теперь вызывают ошибку переполнения.

  • bpo-41440: Добавьте os.cpu_count() поддержку VxWorks RTOS.

  • bpo-41316: Исправьте модуль tarfile, чтобы в заголовок сжатия GZIP записывалось только основное имя TAR-файла.

  • bpo-41384: Вызывать TclError вместо TypeError, когда в tkinter.OptionMenu передается неизвестная опция.

  • bpo-41317: Используйте add_done_callback() в asyncio.loop.sock_accept() для ранней отписки читателя при отмене.

  • bpo-41364: Уменьшить накладные расходы на импорт uuid.

  • bpo-35328: Разрешить параметры с именами VIRTUAL_ENV_PROMPT и venv с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41341: Разрешить параметры с именами typing.ForwardRef и get_type_hints с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41344: Разрешить параметры с именами shared_memory.SharedMemory и size=0 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41333: collections.OrderedDict.pop() теперь в 2 раза быстрее.

  • bpo-41288: Развертка недействительного опкода NEWOBJ_EX в реализации C теперь вызывает UnpicklingError вместо аварийного завершения.

  • bpo-39017: Избегайте бесконечного цикла при чтении специально созданных файлов TAR с помощью модуля tarfile (CVE-2019-20907).

  • bpo-41273: Разрешить параметры с именами _ProactorReadPipeTransport и recv_into с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41235: Исправьте обработку ошибок в ssl.SSLContext.load_dh_params().

  • bpo-41207: В distutils.spawn восстановите ожидание того, что DistutilsExecError будет подниматься, если команда не найдена.

  • bpo-29727: Разрешить параметры с именами array.array и MutableSequence с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39168: Разрешить параметры с именами __new__ и typing.Generic с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41194: Исправьте ошибку в модуле _ast: он больше не может быть загружен более одного раза. Теперь он использует глобальное состояние, а не состояние модуля.

  • bpo-41195: Добавьте атрибут ssl.SSLContext.security_level, доступный только для чтения, для получения уровня безопасности контекста.

  • bpo-41193: Разрешить параметры с именами write_history() и OSError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41182: селектор: использовать DefaultSelector в зависимости от реализации

  • bpo-41161: Для модуля decimal теперь требуется libmpdec-2.5.0. Пользователям –with-system-libmpdec следует обновить системную библиотеку.

  • bpo-40874: Для модуля decimal теперь требуется libmpdec-2.5.0.

  • bpo-41138: Исправлен CLI модуля trace для исходных файлов Python с кодировкой, отличной отUTF-8.

  • bpo-31082: Используйте термин «iterable» в docstring для functools.reduce().

  • bpo-40521: Удалите фрилист из collections.deque().

  • bpo-31938: Исправьте сигнатуры значений по умолчанию для нескольких функций в модуле select - автор Энтони Соттил.

  • bpo-41068: Исправлено чтение файлов с именами, отличными от ASCII, из ZIP-архива непосредственно после их записи.

  • bpo-41058: pdb.find_function() теперь правильно определяет кодировку исходного файла.

  • bpo-41056: Недействительные значения дескрипторов файлов теперь не передаются в os.fpathconf (обнаружено Coverity).

  • bpo-41056: Исправление разыменования указателя NULL в модуле ssl при ошибке MemoryError в обратном вызове keylog. (обнаружено Coverity)

  • bpo-41056: Исправлена ситуация, когда ошибка MemoryError в модуле zoneinfo могла не сообщаться или не сообщаться в ее источнике. (найдено Coverity)

  • bpo-41048: Функция mimetypes.read_mime_types() читает файл правил, используя кодировку UTF-8, а не кодировку локали. Исправление от Srinivas Reddy Thatiparthy.

  • bpo-41043: Исправлено использование glob() в stdlib: литеральная часть пути теперь всегда корректно экранируется.

  • bpo-41025: Исправлена проблема, не позволяющая подклассифицировать реализацию zoneinfo.ZoneInfo на языке C.

  • bpo-35018: Добавьте класс xml.sax.handler.LexicalHandler, который присутствует в других реализациях SAX XML.

  • bpo-41002: Улучшает производительность HTTPResponse.read с заданным количеством. Исправление от Брюса Мерри.

  • bpo-40448: Разрешить параметры с именами ensurepip и pip с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40967: Разрешить параметры с именами asyncio.Task.current_task() и asyncio.Task.all_tasks() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40924: Убедитесь, что importlib.resources.path возвращает существующий путь для читателя ресурсов SourceFileLoader. Позволяет избежать регрессии, выявленной в master, пока разрабатывается долгосрочное решение.

  • bpo-40955: Исправлена незначительная утечка памяти в модуле subprocess при указании extra_groups.

  • bpo-40855: Функции стандартного отклонения и дисперсии в модуле статистики игнорировали свои аргументы mu и xbar.

  • bpo-40939: Используйте новый парсер PEG при генерации модуля stdlib keyword.

  • bpo-23427: Добавьте атрибут sys.orig_argv: список исходных аргументов командной строки, передаваемых исполняемому файлу Python.

  • bpo-33689: Игнорировать пустые строки или строки, содержащие только пробельные символы, в файлах .pth. Это соответствует задокументированному поведению. Раньше пустые строки приводили к тому, что каталог site-packages появлялся в sys.path несколько раз. Автор Ido Michael, соавторы Malcolm Smith и Tal Einat.

  • bpo-40884: Разрешить параметры с именами defaults и logging.Formatter с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40876: Уточните сообщение об ошибке в модуле csv.

  • bpo-39791: Обновление importlib.metadata из importlib_metadata 1.6.1.

  • bpo-40807: Остановите codeop._maybe_compile, используемый code.InteractiveInterpreter (и IDLE). от выдачи каждого предупреждения по три раза.

  • bpo-32604: Исправление утечки ссылок в модуле select, когда модуль импортируется в подынтерпретаторе.

  • bpo-39791: Разрешить параметры с именами TraversableResources и ResourceReader с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39314: rlcompleter.Completer и стандартная оболочка Python теперь закрывают круглые скобки для функций, не принимающих аргументов. Исправление внесено Реми Лапейром.

  • bpo-17005: Разрешить параметры с именами functools и graphlib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40834: Исправьте усечение при отправке объекта str с_xxsubinterpreters.channel_send.

  • bpo-40755: Добавьте богатые сравнения в collections.Counter().

  • bpo-26407: Разрешить параметры с именами __iter__ и TypeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39384: Исправлен email.contentmanager, позволяющий функции set_content() устанавливать нулевую строку.

  • bpo-40744: Модуль sqlite3 использует функции SQLite API, которые требуют SQLite версии 3.7.3 или выше. Этот патч устраняет поддержку старых версий SQLite и явно требует SQLite 3.7.3 как при сборке, компиляции, так и во время выполнения. Авторы патча - Сергей Федосеев и Эрленд Э. Аасланд.

  • bpo-40777: Инициализируйте PyDateTime_IsoCalendarDateType.tp_base во время выполнения, чтобы избежать ошибок в некоторых компиляторах.

  • bpo-38488: Обновите ensurepip для установки pip 20.1.1 и setuptools 47.1.0.

  • bpo-40792: Разрешить параметры с именами operator.index() и int с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40767: webbrowser теперь правильно находит браузер по умолчанию в чистых системах Wayland, проверяя переменную окружения WAYLAND_DISPLAY. Заплатка предоставлена Жереми Аттали.

  • bpo-40791: Разрешить параметры с именами hashlib.compare_digest() и CRYPTO_memcmp() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40795: Разрешить параметры с именами ctypes и PyErr_Print() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-16995: Разрешить параметры с именами base64.b32hexencode() и base64.b32hexdecode() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30008: Разрешить параметры с именами ssl и no-deprecated с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30064: Исправление проблемы состояния гонки в asyncio loop.sock_*.

  • bpo-40759: Утратить модуль symbol.

  • bpo-40756: Второй аргумент (extra) LoggerAdapter.__init__ теперь по умолчанию принимает значение None.

  • bpo-37129: Разрешить параметры с именами os.RWF_APPEND и os.pwritev() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40737: Исправьте возможную утечку ссылок при инициализации sqlite3.

  • bpo-40726: Разрешить параметры с именами end_lineno и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40698: distutils при загрузке создаются дайджесты SHA2-256 и Blake2b-256. Дайджесты MD5 пропускаются, если платформа блокирует MD5.

  • bpo-40695: hashlib больше не возвращается к встроенным реализациям хэшей, когда OpenSSL предоставляет хэш-дайджест, а алгоритм блокируется политикой безопасности.

  • bpo-9216: Разрешить параметры с именами hashlib.new() и usedforsecurity с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40614: Разрешить параметры с именами ast.parse() и feature_version с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40626: Добавляет расширение файла h5 в качестве MIME-типа application/x-hdf5, в соответствии с рекомендациями HDF Group для файлов данных в формате HDF5. Исправление внесено Марком Швабом.

  • bpo-25920: Разрешить параметры с именами socket.getaddrinfo() и getaddrinfo() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40671: Разрешить параметры с именами _hashlib и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32309: Разрешить параметры с именами coroutine и asyncio.to_thread() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36543: Восстановлен устаревший модуль xml.etree.cElementTree.

  • bpo-40611: Разрешить параметры с именами MAP_POPULATE и mmap с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39881: PEP 554 для использования в тестовом наборе (исправление Joannah Nanjekye).

  • bpo-13097: Разрешить параметры с именами ctypes и ArgumentError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39385: Новое тестовое утверждение context-manager, unittest.assertNoLogs() будет гарантировать, что данный блок кода не выдает сообщений журнала, используя модуль протоколирования. Вклад внес Кит Ян Чой.

  • bpo-23082: Обновлены сообщение об ошибке и документация PurePath.relative_to(), чтобы лучше отразить поведение функции.

  • bpo-40318: Используйте API SQLite3 trace v2, если он доступен.

  • bpo-40105: ZipFile усекает файлы, чтобы избежать повреждений, когда в режиме добавления («a») предоставляется более короткий комментарий. Исправление Яна Мазура.

  • bpo-40084: Исправление Enum.__dir__: dir(Enum.member) теперь включает атрибуты, а также методы.

  • bpo-31122: ssl.wrap_socket() теперь вызывает ошибку ssl.SSLEOFError, а не OSError, когда пир закрывает соединение во время переговоров по TLS

  • bpo-39728: Разрешить параметры с именами _missing_ и ValueError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39244: Исправлено multiprocessing.context.get_all_start_methods для корректного возврата метода по умолчанию первым на macOS.

  • bpo-39040: Исправление разбора некорректных параметров mime-заголовков путем свертывания пробелов между закодированными словами в пустой строке-цитате.

  • bpo-38731: Разрешить параметры с именами --quiet и py_compile с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35714: Разрешить параметры с именами struct.error и struct с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38144: Добавлены параметры root_dir и dir_fd в glob.glob().

  • bpo-26543: Разрешить параметры с именами IMAP4.noop() и imaplib.Debug = 3 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-12178: csv.writer() теперь корректно экранирует escapechar, когда ввод содержит escapechar. Авторы исправления: Каталин Якоб, Беркер Пексаг и Итай Элбирт.

  • bpo-36290: Узлы AST теперь поднимают TypeError при конфликте аргументов ключевых слов. Исправление внесено Реми Лапейром.

  • bpo-33944: Добавлена трассировка site.py site-packages в режиме verbose.

  • bpo-35078: Переработайте методы formatweekday, formatmonthname в классах LocaleHTMLCalendar и LocaleTextCalendar в модуле календаря, чтобы они вызывали методы базового класса. Это позволит настраивать CSS-классы для LocaleHTMLCalendar. Исправление от Srinivas Reddy Thatiparthy

  • bpo-29620: Разрешить параметры с именами assertWarns() и RuntimeException с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31844: Разрешить параметры с именами ParserBase.error() и _markupbase с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34226: Исправьте cgi.parse_multipart без content_length. Исправлено Роджером Дюраном

  • bpo-33660: Исправьте pathlib.PosixPath для правильного разрешения относительного пути, расположенного в корневом каталоге.

  • bpo-28557: Улучшите сообщение об ошибке для неправильного rawio.readinto

  • bpo-26680: Метод d.is_integer() добавлен к типу Decimal для совместимости с другими типами чисел.

  • bpo-26680: Метод x.is_integer() включен в абстрактные типы числовой башни, Real, Rational и Integral, с соответствующими реализациями по умолчанию.

Документация

  • bpo-41428: Разрешить параметры с именами PEP 604 и X | Y с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41774: В раздел FAQ по программированию «Последовательности (кортежи/списки)» добавьте «Как удалить несколько элементов из списка».

  • bpo-35293: Исправление RemovedInSphinx40Warning при сборке документации. Исправление от Donghee Na.

  • bpo-37149: Измените ссылку на документ Shipman tkinter с archive.org на TkDocs. (Документ был удалён с сервера NMT.) Новая ссылка отвечает гораздо быстрее и содержит краткое пояснение.

  • bpo-41726: Обновите информацию о рефкаунтах в PyType_FromModuleAndSpec.

  • bpo-41624: Исправьте подпись typing.Coroutine.

  • bpo-40204: Разрешить параметры с именами c_allow_pre_v3 и c_warn_on_allowed_pre_v3 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41045: Добавьте документацию для отладочной функции f-строк.

  • bpo-41314: Разрешить параметры с именами from __future__ import annotations и 4.0 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40979: Переработан typing.rst, в котором более 70 классов, функций и декораторов распределены по новым подразделам.

  • bpo-40552: Исправление в разделе 4.2 учебника. Сниппет кода теперь корректен.

  • bpo-39883: Заставить код, примеры и рецепты в документации по Python лицензироваться по более свободной лицензии BSD0 в дополнение к существующей лицензии Python 2.0.

  • bpo-37703: Обновлена документация, в которой подробно описано поведение функции gather.cancel()

Тесты

  • bpo-41939: Разрешить параметры с именами urllib.request.urlcleanup() и urllib.request._opener с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41731: Заставьте test_cmd_line_script пройти с опцией „-vv“.

  • bpo-41602: Добавьте тесты для обработки SIGINT в модуль runpy.

  • bpo-41521: Разрешить параметры с именами test.support и blacklist с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41477: Сделайте ctypes необязательным в test_genericalias.

  • bpo-41085: Разрешить параметры с именами array.array.index() и 2**31 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41069: Разрешить параметры с именами test.support.TESTFN и test.regrtest с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38377: Разрешить параметры с именами /dev/shm/ и skip_if_broken_multiprocessing_synchronize() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41009: Исправьте использование декораторов support.require_{linux|mac|freebsd}_version() в качестве декоратора класса.

  • bpo-41003: Разрешить параметры с именами test_copyreg и numpy с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40964: Отключите удаленные imaplib тесты, хост cyrus.andrew.cmu.edu блокирует входящие соединения.

  • bpo-40927: Исправьте test_binhex при двойном запуске: теперь он использует import_fresh_module(), чтобы гарантировать, что каждый раз будет подниматься DeprecationWarning.

  • bpo-17258: Пропускает некоторые тесты multiprocessing, если хэш-дайджест MD5 заблокирован.

  • bpo-31904: Увеличьте LOOPBACK_TIMEOUT до 10 для VxWorks RTOS.

  • bpo-38169: Увеличение покрытия кода для SharedMemory и ShareableList

  • bpo-34401: Заставить test_gdb корректно работать на HP-UX. Исправление от Михаила Осипова.

Построить

  • bpo-38249: Обновите Py_UNREACHABLE, чтобы использовать __builtin_unreachable(), если только компилятор может ее использовать. Исправление от Donghee Na.

  • bpo-41617: Разрешить параметры с именами pycore_bitutils.h и __builtin_bswap16() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40204: Установите версию Sphinx на 2.3.1 в Doc/Makefile.

  • bpo-36020: Разрешить параметры с именами snprintf() и vsnprintf() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40684: Разрешить параметры с именами make install и PLATLIBDIR с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40683: Разрешить параметры с именами zoneinfo и make с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Windows

  • bpo-41744: Исправлен автоматический импорт файла props при использовании пакета Nuget.

  • bpo-41627: Каталог сайта пользователя для 32-битной версии теперь содержит суффикс -32, чтобы отличать его от каталога 64-битного интерпретатора.

  • bpo-41526: Исправлен макет последней страницы программы установки путем удаления специальной благодарности Марку Хэммонду (с его разрешения).

  • bpo-41492: Исправлено описание, появляющееся в подсказках UAC.

  • bpo-40948: Улучшите сообщение после установки, чтобы направлять людей к команде «py».

  • bpo-41412: Теперь программа установки не будет работать в Windows 7 и Windows 8. Кроме того, зависимость UCRT теперь всегда загружается по требованию.

  • bpo-40741: Обновление версии Windows для включения SQLite 3.32.3.

  • bpo-41142: msilib теперь поддерживает создание CAB-файлов с путями к файлам, отличными от ASCII, и добавление в них файлов с путями к файлам, отличными от ASCII.

  • bpo-41074: Разрешить параметры с именами msilib.OpenDatabase() и msilib.init_database() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41039: Стабильный ABI перенаправления DLL (python3.dll) теперь использует #pragma comment(linker) для реэкспорта.

  • bpo-40164: Обновление Windows OpenSSL до версии 1.1.1g

  • bpo-39631: Разрешить параметры с именами .py и text/x-python с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40677: Определите вручную IO_REPARSE_TAG_APPEXECLINK на случай, если в каком-то старом SDK для Windows его нет.

  • bpo-37556: Расширение справки py.exe для упоминания переопределений через venv, shebang, переменные окружения и ini-файлы.

macOS

  • bpo-41557: Обновите программу установки macOS для использования SQLite 3.33.0.

  • bpo-39580: Избегайте открытия окна Finder при запуске программы установки из командной строки. Патч предоставлен Риком Хейлом.

  • bpo-41100: Исправление ошибки configure при сборке на macOS 11. Обратите внимание, что текущий релиз Python был выпущен вскоре после первой предварительной версии macOS 11 (Big Sur) для разработчиков; известны и другие проблемы со сборкой и запуском на предварительной версии для разработчиков. Ожидается, что Big Sur будет полностью поддерживаться в будущих релизах Python 3.8.x и 3.9.0 с исправлениями.

  • bpo-40741: Обновите программу установки macOS для использования SQLite 3.32.3.

  • bpo-41005: исправлена проблема с настройками XDG, не позволявшая macos открывать браузер в webbrowser.py

  • bpo-40741: Обновите программу установки macOS для использования SQLite 3.32.2.

IDLE

  • bpo-41775: Используйте „IDLE Shell“ в качестве заголовка оболочки

  • bpo-35764: Перепишите раздел Calltips doc.

  • bpo-40181: В подсказках перестаньте напоминать, что „/“ обозначает конец аргументов только с позицией.

  • bpo-41468: Улучшение сообщения об ошибке при запуске IDLE (которое пользователи никогда не должны видеть).

  • bpo-41373: Сохраняйте файлы, загруженные без окончания строки, как пустые, или с разными окончаниями строк, устанавливая для них окончание строки по умолчанию. Исправление регрессии в 3.8.4 и 3.9.0b4.

  • bpo-41300: Сохранение файлов с неаскриптивными символами. Исправление регрессии, выпущенной в 3.9.0b4 и 3.8.4.

  • bpo-37765: Добавьте ключевые слова в список завершения имени модуля. Перепишите раздел Completions в документации IDLE.

  • bpo-41152: Разрешить параметры с именами stdin и stdout с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41144: Заставить открытый модуль открывать специальный модуль, например os.path.

  • bpo-39885: Сделайте контекстное меню «Вырезать» и «Копировать» снова работающим при щелчке правой кнопкой мыши внутри выделения.

  • bpo-40723: Заставьте test_idle проходить при запуске после импорта.

C API

  • bpo-41936: Разрешить параметры с именами Py_ALLOW_RECURSION и Py_END_ALLOW_RECURSION с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41692: Разрешить параметры с именами PyUnicode_InternImmortal() и PyUnicode_InternInPlace() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41842: Добавьте функцию PyCodec_Unregister() для снятия с регистрации функции поиска кодеков.

  • bpo-41834: Разрешить параметры с именами _Py_CheckRecursionLimit и ceval.recursion_limit с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41689: Разрешить параметры с именами PyType_FromSpec() и tp_doc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41524: Исправлена ошибка в PyOS_mystrnicmp и PyOS_mystricmp, которая увеличивала указатели за пределами конца строки.

  • bpo-41324: Добавьте минимальный API для работы с десятичными капчами. API поддерживает быстрые преобразования между десятичными числами до 38 цифр и их тройное представление в виде C-структуры.

  • bpo-30155: Разрешить параметры с именами PyDateTime_DATE_GET_TZINFO() и PyDateTime_TIME_GET_TZINFO() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40170: Разрешить параметры с именами PyType_HasFeature() и PyTypeObject.tp_flags с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41123: Удалить PyUnicode_AsUnicodeCopy.

  • bpo-41123: Удалено PyLong_FromUnicode().

  • bpo-41123: Удалено PyUnicode_GetMax().

  • bpo-41123: Разрешить параметры с именами Py_UNICODE_str* и Py_UNICODE* с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-41103: Разрешить параметры с именами PyObject_AsCharBuffer() и PyObject_AsReadBuffer() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36346: Разрешить параметры с именами PyUnicode_FromUnicode(NULL, size) и PyUnicode_FromStringAndSize(NULL, size) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36346: Разрешить параметры с именами Py_UNICODE_COPY и Py_UNICODE_FILL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40989: Разрешить параметры с именами PyObject_INIT() и PyObject_INIT_VAR() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36020: Разрешить параметры с именами #include "pyerrors.h" и snprintf с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40943: Разрешить параметры с именами PY_SSIZE_T_CLEAN и PyArg_ParseTuple() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40910: Разрешить параметры с именами Py_GetArgcArgv() и -fvisibility=hidden с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40724: Разрешить определять слоты буфера в спецификациях типов.

  • bpo-40679: Исправление сбоя _PyEval_EvalCode(), если аргумент qualname имеет значение NULL.

  • bpo-40839: Разрешить параметры с именами PyDict_GetItem() и GIL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40826: PyOS_InterruptOccurred() теперь завершается с фатальной ошибкой, если он вызывается с освобожденным GIL.

  • bpo-40792: Разрешить параметры с именами PyNumber_Index() и int с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39573: Разрешить параметры с именами Py_REFCNT() и Py_SIZE() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40703: Функции PyType_FromSpec*() больше не перезаписывают атрибут «__module__» типа, если он задан через «Py_tp_members» или «Py_tp_getset».

  • bpo-39583: Удалите лишние объявления «extern C» из Include/cpython/*.h.

Python 3.9.0 beta 1

Дата выхода: 2020-05-19

Безопасность

  • bpo-40501: Разрешить параметры с именами uuid и ctypes с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-40663: Корректно генерировать аннотации, в которых скобки опущены, но требуются (например: Type[(str, int, *other))].

  • bpo-40596: Исправлено str.isidentifier() для неканонизированных строк, содержащих не-BMP символы в Windows.

  • bpo-40593: Улучшены синтаксические ошибки для недопустимых символов в исходном коде.

  • bpo-40585: Исправлена ошибка при использовании codeop.compile_command(), которая приводила к проглатыванию исключений новым парсером. Исправление от Пабло Галиндо

  • bpo-40566: Разрешить параметры с именами PEP 573 и abc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40502: Инициализируйте n->n_col_offset (патч Джоанны Нанджекье).

  • bpo-40527: Исправление разбора аргументов командной строки: больше не записывает ошибки несколько раз в stderr.

  • bpo-1635741: Разрешить параметры с именами errno и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40523: Разрешить параметры с именами hash() и reversed() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами syslog и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40246: Разрешить параметры с именами bpo-40246 и bg="#d00" if clear else"#fca" с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40417: Исправьте предупреждение об устаревании модуля imp при вызове PyImport_ReloadModule. Исправление от Роберта Рухани.

  • bpo-40408: Исправлена поддержка вложенных переменных типа в GenericAlias (например, list[list[T]]).

  • bpo-1635741: Модуль порта _stat для многофазной инициализации (PEP 489).

  • bpo-29587: Включите неявную цепочку исключений при вызове generator.throw().

  • bpo-40328: Добавлены инструменты для генерации заголовков отображения для CJKCodecs.

  • bpo-40228: Установка frame.f_lineno теперь устойчива к изменениям в компиляторе исходного кода в байткод

  • bpo-38880: Добавлена возможность перечисления интерпретаторов, связанных с концами каналов, во внутреннем модуле субинтерпретаторов.

  • bpo-37986: Разрешить параметры с именами PyLong_FromDouble() и long с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-40662: Исправлено ast.get_source_segment() для узлов ast, имеющих неполную информацию о местоположении. Исправление от Ирит Катриэль.

  • bpo-40665: Преобразовать bisect для использования Аргумент Клиника.

  • bpo-40536: Разрешить параметры с именами available_timezones() и zoneinfo с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40645: Разрешить параметры с именами hmac.HMAC и digest_cons с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40645: Внутренний модуль _hashlib оборачивает и раскрывает HMAC API OpenSSL. Новый код будет использоваться в Python 3.10 после того, как детали внутренней реализации чисто питоновского модуля HMAC перестанут быть частью публичного API.

  • bpo-40637: Разрешить параметры с именами configure --with-builtin-hashlib-hashes=sha3,blake1 и --without-builtin-hashlib-hashes с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37630: Модуль hashlib теперь может использовать хэши SHA3 и SHAKE XOF из OpenSSL, когда они доступны.

  • bpo-40479: hashlib теперь компилируется с OpenSSL 3.0.0-alpha2.

  • bpo-40257: Вернуть изменения в inspect.getdoc().

  • bpo-40607: При отмене задачи по таймауту asyncio.wait_for() теперь будет распространять исключение, если во время отмены произошла ошибка. Исправление Романа Скурихина.

  • bpo-40612: Исправление крайних случаев в форматировании SyntaxError. Если смещение <= 0, каретка не выводится. Если смещение > длины строки, то символ каре печатается сразу после последнего символа.

  • bpo-40597: Если длина строк текстового содержимого превышает policy.max_line_length, всегда используйте кодировку содержимого, чтобы убедиться, что они обернуты.

  • bpo-40571: Добавлена functools.cache() как более простой и доступный способ доступа к неограниченному варианту кэша lru_cache(maxsize=None).

  • bpo-40503: Разрешить параметры с именами PEP 615 и zoneinfo с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40397: Разрешить параметры с именами __args__ и __parameters__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40549: Переведите posixmodule.c (модуль «posix» или «nt») на многофазную инициализацию (PEP 489).

  • bpo-31033: Разрешить параметры с именами msg и Future.cancel() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40541: Добавлен необязательный параметр counts в random.sample().

  • bpo-40515: Разрешить параметры с именами ssl и hashlib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31033: При отмене asyncio.Task трассировка исключений теперь ведет до того места, где задача была впервые прервана.

  • bpo-40504: Объекты functools.lru_cache() теперь могут быть объектами weakrefs.

  • bpo-40559: Исправление возможной утечки памяти в реализации asyncio.Task на языке C.

  • bpo-40480: Разрешить параметры с именами fnmatch.fnmatch() и * с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40495: Разрешить параметры с именами compileall и .pyc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40457: Модуль ssl теперь поддерживает сборки OpenSSL без методов TLS 1.0 и 1.1.

  • bpo-40355: Разрешить параметры с именами ast.literal_eval() и ast.Dict с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40465: Утратил силу необязательный аргумент random для random.shuffle().

  • bpo-40459: platform.win32_ver() теперь выдает корректные строки ptype вместо пустых строк.

  • bpo-39435: Первый аргумент pickle.loads() теперь только позиционный.

  • bpo-39305: Разрешить параметры с именами nntplib и nntplib.NNTP с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32494: Разрешить параметры с именами dbm.gnu и len() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40453: Разрешить параметры с именами isolated=True и _xxsubinterpreters.create() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40286: Разрешить параметры с именами _random.Random.randbytes() и randbytes() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40394: Добавлены аргументы по умолчанию в difflib.SequenceMatcher.find_longest_match().

  • bpo-39995: Исправление состояния гонки в concurrent.futures._ThreadWakeup: доступ к _ThreadWakeup теперь защищен блокировкой выключения.

  • bpo-30966: Разрешить параметры с именами Process.shutdown(wait=True) и concurrent.futures с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30966: Разрешить параметры с именами close() и SimpleQueue с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39966: Разрешить параметры с именами bpo-25597 и unittest.mock.MagicMock с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39791: Добавлена функция files() в importlib.resources с поддержкой подкаталогов в данных пакета, соответствующая бэкпорту в importlib_resources 1.5.

  • bpo-40375: imaplib.IMAP4.unselect() добавлено. Исправление от Donghee Na.

  • bpo-40389: Разрешить параметры с именами repr() и typing.Optional[T] с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40291: Добавьте поддержку сокетов CAN_J1939 (доступно в Linux 5.4+)

  • bpo-40273: types.MappingProxyType теперь обратимы.

  • bpo-39075: Repr для types.SimpleNamespace теперь упорядочен по вставке, а не по алфавиту.

  • bpo-40192: Разрешить параметры с именами thread_time() и thread_cputime() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40025: Вызывает ошибку TypeError, когда _generate_next_value_ определено после членов. Исправление Итана Онстотта.

  • bpo-39058: В модуле argparse добавлены repr для Namespace() и других держателей аргументов, которые теперь отображаются в порядке следования атрибутов. Раньше они отображались в алфавитном порядке, хотя порядок аргументов сохраняется в видимых пользователю частях модуля.

  • bpo-24416: Разрешить параметры с именами isocalendar() и datetime.date с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-34790: Добавьте в документацию asyncio.wait() версию удаления явной передачи coros

  • bpo-40561: Предоставьте документацию для функций открытия веб-браузеров.

  • bpo-40499: Упомяните, что asyncio.wait() требует непустого набора awaitables.

  • bpo-39705: Учебный пример для sorted() в разделе «Техника циклов» получил лучшее объяснение. Также включен новый пример, объясняющий базовое поведение sorted().

  • bpo-39435: Исправьте неправильную подпись для pickle.loads() в документации

Тесты

  • bpo-40055: distutils.tests теперь сохраняет/восстанавливает фильтры предупреждений, оставляя их неизменными. Импорт тестов импортирует docutils, который импортирует pkg_resources, что добавляет фильтр предупреждений.

  • bpo-40436: test_gdb и test.pythoninfo теперь проверяют код выхода команды gdb.

Построить

  • bpo-40653: Переместите _dirnameW из HAVE_SYMLINK, чтобы исправить потенциальную проблему компиляции.

  • bpo-40514: Разрешить параметры с именами --with-experimental-isolated-subinterpreters и configure с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Windows

  • bpo-40650: Включите winsock2.h в pytime.c для timeval.

  • bpo-40458: Увеличение зарезервированного пространства стека для предотвращения аварийного переполнения в Windows.

  • bpo-39148: Добавьте поддержку IPv6 в конечные точки дейтаграмм asyncio в ProactorEventLoop. Измените поднимаемое исключение для неизвестных семейств адресов на ValueError, поскольку оно не исходит от Windows API.

macOS

  • bpo-34956: Разрешить параметры с именами _tkinter и /Library/Frameworks с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35569: Выявление опций сокета RFC 3542 IPv6.

Инструменты/демоверсии

  • bpo-40479: Обновите помощник multissltest для тестирования с последними версиями OpenSSL 1.0.2, 1.1.0, 1.1.1 и 3.0.0-alpha.

  • bpo-40431: Разрешить параметры с именами turtledemo и SyntaxError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40163: Исправьте инструмент multissltest. OpenSSL изменил URL загрузки для старых релизов. Инструмент multissltest теперь пытается загрузиться с текущего и старого URL.

C API

  • bpo-39465: Удалите функцию _PyUnicode_ClearStaticStrings() из C API.

  • bpo-38787: Добавьте макрос PyCFunction_CheckExact() для точной проверки типа теперь, когда мы разрешаем подтипы PyCFunction, а также PyCMethod_CheckExact() и PyCMethod_Check() для нового подтипа PyCMethod.

  • bpo-40545: Разрешить параметры с именами _PyErr_GetTopmostException() и PyAPI_FUNC() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40412: Нуллификация inittab_copy во время финализации, что предотвращает аварийное завершение будущих инициализаций интерпретатора во встроенной ситуации. Исправление от Gregory Szorc.

  • bpo-40429: Функция PyThreadState_GetFrame() теперь возвращает сильную ссылку на кадр.

  • bpo-40428: Удалите следующие функции из C API. Вызовите PyGC_Collect() явно, чтобы освободить все свободные списки.

    • PyAsyncGen_ClearFreeLists()

    • PyContext_ClearFreeList()

    • PyDict_ClearFreeList()

    • PyFloat_ClearFreeList()

    • PyFrame_ClearFreeList()

    • PyList_ClearFreeList()

    • PySet_ClearFreeList()

    • PyTuple_ClearFreeList()

  • bpo-40421: Новая функция PyFrame_GetBack(): получение кадра, следующего за внешним.

  • bpo-40421: Новая функция PyFrame_GetCode(): возвращает заимствованную ссылку на код кадра.

  • bpo-40217: Разрешить параметры с именами PyType_FromSpecWithBases() и tp_traverse с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38787: Состояние модуля C теперь доступно из методов кучи типов, определяемых C (PEP 573). Исправление Марселя Плча и Петра Викторина.

Python 3.9.0 alpha 6

Дата выхода: 2020-04-27

Безопасность

  • bpo-40121: Исправлены события аудита, возникающие при создании нового сокета.

  • bpo-39073: Запрещает CR или LF в аргументах email.headerregistry.Address для защиты от атак инъекции заголовков.

  • bpo-39503: Разрешить параметры с именами CVE-2020-8492 и AbstractBasicAuthHandler с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-40313: Повышение производительности функции bytes.hex().

  • bpo-40334: Разрешить параметры с именами -X oldparser и PYTHONOLDPARSER=1 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40267: Разрешить параметры с именами SyntaxError и unexpected EOF while parsing с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39522: Корректно разгадывать явный префикс u для строк при активированной отложенной оценке для аннотаций. Исправление от Батухана Таская.

  • bpo-40246: Сообщать специализированное сообщение об ошибке, invalid string prefix, когда токенизатор встречает строку с недопустимым префиксом.

  • bpo-40082: Исправьте обработчик сигналов: теперь он всегда использует основной интерпретатор, а не пытается получить текущее состояние потока Python.

  • bpo-37388: str.encode() и str.decode() больше не проверяют кодировку и ошибки в режиме разработки или в режиме отладки во время финализации Python. Механизм кодеков больше не может работать при очень поздних вызовах str.encode() и str.decode().

  • bpo-40077: Исправьте возможные рефлексии в _json, необходимо обходить мемо PyScannerObject.

  • bpo-37207: Разрешить параметры с именами dict() и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40141: Добавляет информацию о столбцах и строках в узлы ast.keyword. Исправление от Pablo Galindo.

  • bpo-1635741: Разрешить параметры с именами resource и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Разрешить параметры с именами math и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Порт _uuid модуля для многофазной инициализации (PEP 489).

  • bpo-40077: Преобразование модуля json для использования PyType_FromSpec().

  • bpo-40067: Улучшено сообщение об ошибке для нескольких звездных выражений в присваивании. Исправление от Furkan Onder

  • bpo-1635741: Перенос модуля _functools для многофазной инициализации (PEP 489). Исправление Пауло Энрике Сильвы.

  • bpo-1635741: Модуль оператора порта для многофазной инициализации (PEP 489). Исправление Пауло Энрике Сильвы.

  • bpo-20526: Разрешить параметры с именами PyThreadState_Clear() и PyThreadState.frame с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Модуль времени порта для многофазной инициализации (PEP 489). Исправление Пауло Энрике Сильвы.

  • bpo-1635741: Перенос модуля расширения _weakref для многофазной инициализации (PEP 489).

  • bpo-40020: Исправление утечки и последующего падения в parsetok.c, вызванного неправильным использованием realloc на редком кодовом пути.

  • bpo-39939: Добавлены методы str.removeprefix и str.removesuffix и соответствующие методы bytes, bytearray и collections.UserString для удаления аффиксов из строки, если они присутствуют. Полное описание см. в PEP 616. Исправление Денниса Суини.

  • bpo-39481: Реализация PEP 585. Это поддерживает list[int], tuple[str, …] и т. д.

  • bpo-32894: Поддержка непарсинга бесконечных чисел в отложенных аннотациях. Исправление от Batuhan Taşkaya.

  • bpo-37207: Разрешить параметры с именами list() и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-40398: typing.get_args() теперь всегда возвращает пустой кортеж для специальных общих псевдонимов.

  • bpo-40396: Разрешить параметры с именами typing.get_origin() и typing.get_args() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38061: Разрешить параметры с именами subprocess и closefrom() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    В FreeBSD для повышения производительности было принято загружать и монтировать модуль ядра fdescfs, но по умолчанию он не включен.

    Первоначальный патч от Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans (kevans) и Kubilay Kocak (koobs): https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274.

  • bpo-38061: Разрешить параметры с именами os.closerange(fd_low, fd_high) и closefrom(fd_low) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Первоначальный патч от Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans (kevans) и Kubilay Kocak (koobs): https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274.

  • bpo-40360: Разрешить параметры с именами lib2to3 и PEP 617 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40138: Разрешить параметры с именами os.waitpid() и INT_MAX >> 8 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39942: Установите «__main__» в качестве имени модуля по умолчанию, если «__name__» отсутствует в typing.TypeVar. Исправление от Weipeng Hong.

  • bpo-40275: Разрешить параметры с именами logging и unittest с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40275: Разрешить параметры с именами asyncio и unittest с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40330: В ShareableList.__setitem__() проверяйте размер нового элемента строки после кодирования его в utf-8, а не до.

  • bpo-40148: Добавлена pathlib.Path.with_stem() для создания нового пути с заменой стебля.

  • bpo-40325: Утрачена поддержка объектов множества в random.sample().

  • bpo-40257: Разрешить параметры с именами typing и Union с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40257: Разрешить параметры с именами inspect.getdoc() и pydoc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40287: Фиксированный SpooledTemporaryFile.seek() для возврата позиции.

  • bpo-40290: Добавлена функция zscore() в statistics.NormalDist().

  • bpo-40282: Разрешите random.getrandbits(0) преуспеть и вернуть 0.

  • bpo-40286: Разрешить параметры с именами random.randbytes() и random.Random.randbytes() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40277: collections.namedtuple() теперь предоставляет человекочитаемый repr для своих аксессоров полей.

  • bpo-40270: Входящая в комплект копия sqlite3 для Windows теперь компилируется с расширением json. Это позволяет использовать такие функции, как json_object.

  • bpo-29255: Ожидание в KqueueSelector.select, если не зарегистрировано ни одного fds

  • bpo-40260: Разрешить параметры с именами modulefinder и io.open_code() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40234: Снова разрешите порождать потоки демонов в субинтерпретаторах (верните изменение, которое их запрещало).

  • bpo-39207: Рабочие в ProcessPoolExecutor теперь порождаются по требованию, только когда нет свободных незанятых рабочих для повторного использования. Это оптимизирует накладные расходы при запуске и уменьшает потери процессорного времени на простаивающих рабочих. Автор исправления - Кайл Стэнли.

  • bpo-40091: Исправление зависания на вилке в модуле протоколирования: новый приватный метод _at_fork_reinit() теперь используется для повторной инициализации блокировок на вилке в дочернем процессе.

  • bpo-40149: Реализуйте обход и очистку слотов в типе _abc._abc_data.

  • bpo-40208: Убрать устаревшие symtable.SymbolTable.has_exec().

  • bpo-40196: Исправлена ошибка в модуле symtable, из-за которой глобальные переменные некорректно отображались как локальные. Автор исправления - Пабло Галиндо.

  • bpo-40190: Разрешить параметры с именами _SC_AIX_REALMEM и posix.sysconf() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40182: Разрешить параметры с именами _field_types и typing.NamedTuple с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36517: Множественное наследование с typing.NamedTuple теперь вызывает ошибку вместо того, чтобы молча игнорировать другие типы.

  • bpo-40126: Разрешить параметры с именами __exit__() и __enter__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40094: CGIHTTPRequestHandler из http.server теперь записывает в журнал код завершения работы CGI-скрипта, а не статус завершения работы CGI-скрипта os.waitpid(). Например, если скрипт завершается по сигналу 11, то теперь в журнал записывается: «Код завершения CGI-скрипта -11».

  • bpo-40108: Улучшение сообщения об ошибке при попытке импортировать модуль с помощью runpy и неправильном использовании расширения «.py» в конце имени модуля. Исправление от Pablo Galindo.

  • bpo-40094: Добавьте функцию os.waitstatus_to_exitcode(): преобразование статуса ожидания в код выхода.

  • bpo-40089: Исправление threading._after_fork(): если fork не был вызван потоком, порожденным threading.Thread, threading._after_fork() теперь создает экземпляр _MainThread для _main_thread, а не экземпляр _DummyThread.

  • bpo-40089: Разрешить параметры с именами _at_fork_reinit() и _thread.Lock с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25780: Разрешить параметры с именами CAN_RAW_JOIN_FILTERS и socket с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39503: Разрешить параметры с именами AbstractBasicAuthHandler и urllib.request с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39812: Разрешить параметры с именами concurrent.futures и threading._register_atexit() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40050: Разрешить параметры с именами importlib._bootstrap_external и winreg с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40014: Разрешить параметры с именами os.getgrouplist() и getgrouplist() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40017: Добавьте константу time.CLOCK_TAI, если операционная система поддерживает ее.

  • bpo-40016: В re docstring уточните связь между флагами компиляции inline и argument.

  • bpo-39953: Обновление внутренней таблицы кодов ошибок OpenSSL в модуле ssl.

  • bpo-36144: Разрешить параметры с именами PEP 584 и weakref.WeakValueDictionary с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36144: Разрешить параметры с именами PEP 584 и weakref.WeakKeyDictionary с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38891: Разрешить параметры с именами __getitem__ и __setitem__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39682: Разрешить параметры с именами pathlib.Path и Path с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36144: Разрешить параметры с именами PEP 584 и | с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39011: Убрана нормализация окончаний строк в атрибутах ElementTree, так как окончания строк, которые были заменены номерами сущностей, должны быть сохранены в исходном виде.

  • bpo-38410: Разрешить параметры с именами sys.audit() и sys.set_asyncgen_hooks() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36541: lib2to3 теперь распознает именованные выражения присваивания (оператор «морж», :=)

  • bpo-35967: В платформе отложите вызов „uname -p“ до тех пор, пока не будет запрошен атрибут процессора.

  • bpo-35113: inspect.getsource() теперь возвращает корректный исходный код для внутреннего класса с тем же именем, что и класс уровня модуля. Декораторы также возвращаются как часть исходного кода класса. Исправление от Karthikeyan Singaravelan.

  • bpo-33262: Разрешить параметры с именами shlex.split() и s с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31758: Предотвращение сбоев при использовании неинициализированного объекта _elementtree.XMLParser. Исправление от Орена Милмана.

Документация

  • bpo-27635: В документации к pickle неверно утверждалось, что __new__ не вызывается по умолчанию при распикировке.

  • bpo-39879: Разрешить параметры с именами Модель данных и dict() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38387: Макрос документа PyDoc_STRVAR в справочнике C-API.

  • bpo-13743: Некоторые методы класса xml.dom.minidom.Element теперь лучше документированы.

Тесты

  • bpo-31904: Установите ожидаемую кодировку по умолчанию в test_c_locale_coercion.py для VxWorks RTOS.

  • bpo-40162: Обновление конфигурации Travis CI до OpenSSL 1.1.1f.

  • bpo-40146: Обновите OpenSSL до версии 1.1.1f в Azure Pipelines.

  • bpo-40094: Добавить функцию test.support.wait_process().

  • bpo-40003: Разрешить параметры с именами test.bisect_cmd и -O с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39380: Разрешить параметры с именами ftplib.FTP и ftplib.FTP_TLS с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39793: Используйте тот же домен при тестировании make_msgid. Исправление от Batuhan Taskaya.

  • bpo-1812: Исправьте обработку новой строки в doctest.testfile при загрузке из пакета, загрузчик которого имеет метод get_data. Исправление внесено Питером Донисом.

Построить

  • bpo-38360: Поддержка одноаргументной формы флага macOS -isysroot.

  • bpo-40158: Исправьте свойства CPython MSBuild в пакете NuGet (build/native/python.props)

  • bpo-38527: Исправлена проверка конфигурации на Solaris для «плавающего порядка слов»: иногда не использовалась правильная команда «grep». Исправление от Арнона Яари.

Windows

  • bpo-40164: Обновление Windows до OpenSSL 1.1.1f

  • bpo-8901: Игнорировать реестр Windows, если используется параметр -E.

macOS

  • bpo-38329: программы установки python.org macOS теперь обновляют симлинк Current версии в /Library/Frameworks/Python.framework/Versions для установок 3.9. Ранее Current обновлялся только для установок Python 2.x. Это должно упростить встраивание Python 3 в другие приложения macOS.

  • bpo-40164: Обновите сборки программы установки macOS для использования OpenSSL 1.1.1g.

IDLE

  • bpo-38439: Добавьте иконку IDLE размером 256×256 пикселей для поддержки более современных сред. Создано Эндрю Кловером. Удалите неиспользуемый файл иконок macOS idle.icns.

  • bpo-38689: IDLE больше не будет зависать при ошибке inspect.signature при получении подсказки.

Инструменты/демоверсии

  • bpo-40385: Удален инструмент checkpyc.py. В качестве потенциальной альтернативы смотрите compileall без режима force.

  • bpo-40179: Исправлен перевод #elif в Argument Clinic.

  • bpo-40094: Разрешить параметры с именами which.py и os.waitstatus_to_exitcode() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

C API

  • bpo-40241: Переместите структуру PyGC_Head во внутренний C API.

  • bpo-40170: Преобразуйте макрос PyObject_IS_GC() в функцию, чтобы скрыть детали реализации.

  • bpo-40241: Разрешить параметры с именами PyObject_GC_IsTracked() и PyObject_GC_IsFinalized() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40170: Разрешить параметры с именами PyObject_NEW() и PyObject_New() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40170: Разрешить параметры с именами PyType_HasFeature() и PyType_GetFlags() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40170: Разрешить параметры с именами PyObject_GET_WEAKREFS_LISTPTR() и PyTypeObject.tp_weaklistoffset с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40170: Разрешить параметры с именами PyObject_CheckBuffer() и PyTypeObject.tp_as_buffer с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40170: Разрешить параметры с именами PyIndex_Check() и PyIndex_Check() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39947: Добавьте функцию PyThreadState_GetID(): получение уникального идентификатора состояния потока Python.

Python 3.9.0 alpha 5

Дата выхода: 2020-03-23

Безопасность

  • bpo-38576: Запрет управляющих символов в именах хостов в http.client, адресация CVE-2019-18348. Такие потенциально вредоносные URL с инъекцией заголовка теперь вызывают ошибку InvalidURL.

Ядро и встроенные модули

  • bpo-40010: Оптимизация отложенных вызовов в многопоточных приложениях. Если поток, отличный от основного, запланировал отложенный вызов (Py_AddPendingCall()), цикл оценки байткода больше не прерывается на каждой инструкции байткода, чтобы проверить наличие отложенных вызовов, которые не могут быть выполнены. Только главный поток может выполнять отложенные вызовы.

    Ранее цикл оценки байткода прерывался на каждой инструкции, пока основной поток не выполнит ожидающие вызовы.

  • bpo-1635741: Перенос модуля расширения _weakref для многофазной инициализации (PEP 489).

  • bpo-1635741: Перенесите модуль _collections на многофазную инициализацию (PEP 489).

  • bpo-40010: Оптимизация обработки сигналов в многопоточных приложениях. Если поток, отличный от основного, получает сигнал, цикл оценки байткода больше не прерывается на каждой инструкции байткода для проверки наличия ожидающих сигналов, которые не могут быть обработаны. Только основной поток главного интерпретатора может обрабатывать сигналы.

    Ранее цикл оценки байткода прерывался на каждой инструкции, пока основной поток не обработает сигналы.

  • bpo-39984: Если Py_AddPendingCall() вызывается в подинтерпретаторе, то теперь функция планируется к вызову из подинтерпретатора, а не из основного интерпретатора. Теперь каждый подинтерпретатор имеет свой собственный список запланированных вызовов.

  • bpo-1635741: Порт модуля _heapq для многофазной инициализации.

  • bpo-1635741: Перенос модуля itertools для многофазной инициализации (PEP 489).

  • bpo-37207: Разрешить параметры с именами frozenset() и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39984: Разрешить параметры с именами _PyRuntimeState.ceval.tracing_possible и PyInterpreterState.ceval.tracing_possible с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37207: Разрешить параметры с именами set() и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Порт модуля _statistics для многофазной инициализации (PEP 489).

  • bpo-39968: Используйте встроенную функцию для замены макросов get_module_state модулей расширения.

  • bpo-39965: Разрешить параметры с именами SyntaxError и PyCF_ALLOW_TOP_LEVEL_AWAIT с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39562: Разрешает выполнение асинхронных постижений на верхнем уровне, когда указан флаг PyCF_ALLOW_TOP_LEVEL_AWAIT. Исправление от Батухана Таская.

  • bpo-37207: Разрешить параметры с именами tuple() и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38373: Изменена стратегия габаритного размещения списка. Она больше не перераспределяет список, если новый размер ближе к размеру перераспределения, чем к старому размеру, и добавляет прокладку.

  • bpo-39926: Обновление базы данных Юникода до версии Юникода 13.0.0.

  • bpo-19466: Очищаем фреймы потоков-демона раньше во время выключения Python для вызова деструкторов объектов. Таким образом, предупреждения о ресурсах «незакрытого файла» теперь выдаются для потоков демонов более надежным способом.

  • bpo-38894: Исправлена ошибка, приводившая к неполным результатам при вызове pathlib.Path.glob в присутствии симлинков, указывающих на файлы, к которым у пользователя нет доступа на чтение. Исправление Пабло Галиндо и Мэтта Возниски.

  • bpo-39877: Разрешить параметры с именами PyEval_RestoreThread() и _PyRuntime с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39871: Разрешить параметры с именами SystemError и math.{atan2,copysign,remainder}() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39776: Исправьте состояние гонки, когда потоки, созданные PyGILState_Ensure(), могли получить дублированный идентификатор.

    Это влияет на потребителей tstate->id, таких как механизм кэширования contextvar, который может возвращать недействительные кэшированные объекты при большой нагрузке на поток (наблюдается во встроенных сценариях).

  • bpo-39778: Исправлен сбой, связанный с некорректной обработкой слабых ссылок в классах collections.OrderedDict. Автор исправления - Пабло Галиндо.

  • bpo-1635741: Модуль расширения порта audioop для многофазной инициализации (PEP 489).

  • bpo-39702: Разрешить параметры с именами decorator и PEP 614 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38091: Подправьте код обнаружения тупиковых ситуаций при импорте, чтобы он сам не тупил.

  • bpo-1635741: Модуль расширения Port _locale для многофазной инициализации (PEP 489).

  • bpo-39087: Разрешить параметры с именами PyUnicode_AsUTF8() и PyUnicode_AsUTF8AndSize() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39520: Исправление непарсинга фрагментов ext без элементов (foo[:,]). Исправление от Batuhan Taskaya.

  • bpo-39220: Не оптимизируйте аннотации, если используется „from __future__ import annotations“. Исправление от Pablo Galindo.

  • bpo-35712: Использование NotImplemented в булевом контексте было устаревшим. Исправление внесено Джошем Розенбергом.

  • bpo-22490: Не допускайте утечки переменной окружения __PYVENV_LAUNCHER__ в сессию интерпретатора на macOS.

Библиотека

  • bpo-39830: Разрешить параметры с именами zipfile.Path и __all__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-40000: Улучшены сообщения об ошибках при проверке узлов ast.Constant. Исправление от Батухана Таская.

  • bpo-39999: __module__ классов узлов AST теперь имеет значение «ast», а не «_ast». Добавлены документообороты для фиктивных классов узлов AST и устаревших атрибутов.

  • bpo-39991: uuid.getnode() теперь пропускает IPv6-адреса с длиной строки, равной MAC-адресу (17 символов): используйте только MAC-адреса.

  • bpo-39988: Разрешить параметры с именами ast.AugLoad и ast.AugStore с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39656: Убедитесь, что bin/python3.# всегда присутствует в виртуальных средах на POSIX-платформах - автор Энтони Соттиле.

  • bpo-39969: Утратил класс узла ast.Param, поскольку он больше не используется. Исправление от Batuhan Taskaya.

  • bpo-39360: Разрешить параметры с именами multiprocessing.Pool и multiprocessing.Pool.terminate с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35370: sys.settrace(), sys.setprofile() и _lsprof.Profiler.enable() теперь правильно сообщают об ошибке PySys_Audit(), если событие аудита «sys.setprofile» или «sys.settrace» запрещено.

  • bpo-39936: AIX: Исправлен модуль _aix_support, когда подпроцесс недоступен, при сборке Python с нуля. Теперь он использует новый частный модуль _bootsubprocess, а не имеет две реализации в зависимости от того, доступен или нет подпроцесс. Таким образом, результат _aix_support.aix_platform() теперь одинаков, если подпроцесс доступен или нет.

  • bpo-36144: Разрешить параметры с именами collections.OrderedDict и | с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39652: Имя столбца, найденное в sqlite3.Cursor.description, теперь обрезается на первом „[“, только если установлена опция PARSE_COLNAMES.

  • bpo-39915: Разрешить параметры с именами unittest.mock.AsyncMock.await_args_list и unittest.mock.Mock.call_args с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36144: Разрешить параметры с именами os.environ и os.environb с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38662: Разрешить параметры с именами ensurepip и pip с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38075: Разрешить параметры с именами random.Random.seed() и bool с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39916: Разрешить параметры с именами os.scandir() и Path.glob() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39850: Разрешить параметры с именами multiprocessing и multiprocessing.connection.Listener с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36287: Разрешить параметры с именами ast.dump() и Constant.kind с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39889: Разрешить параметры с именами ast.unparse() и a[i:j,] с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39828: Разрешить параметры с именами json.tool и BrokenPipeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-13487: Разрешить параметры с именами inspect.getmodule() и sys.modules с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39674: Revert «bpo-37330: open() больше не принимает „U“ в режиме файла». Режим «U» в open() сохранен в Python 3.9 для облегчения перехода с Python 2.7, но будет удален в Python 3.10.

  • bpo-28577: Метод hosts для IPv4Networks с 32-битным префиксом и IPv6Networks со 128-битным префиксом теперь возвращает список, содержащий единственный адрес, вместо пустого списка.

  • bpo-39826: Добавьте метод getConnection в HTTPHandler протоколирования, чтобы включить пользовательские соединения.

  • bpo-39763: Разрешить параметры с именами distutils.spawn.spawn и subprocess с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39794: Добавьте опцию сборки –without-decimal-contextvar. Это позволяет использовать локальный контекст потока, а не локальный контекст корутины.

  • bpo-36144: Разрешить параметры с именами collections.defaultdict и | с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39517: Исправьте runpy.run_path() при использовании объектов типа path

  • bpo-39775: Разрешить параметры с именами inspect.Signature.parameters и collections.OrderedDict с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39678: Переработайте queue_manager в concurrent.futures.ProcessPoolExecutor, чтобы его было проще поддерживать.

  • bpo-39764: Исправьте ошибку AttributeError при вызове get_stack на задаче PyAsyncGenObject

  • bpo-39769: Разрешить параметры с именами compileall.compile_dir() и -d с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36144: Разрешить параметры с именами types.MappingProxyType и | с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38691: Разрешить параметры с именами importlib и PYTHONCASEOK с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39719: Разрешить параметры с именами tempfile.SpooledTemporaryFile.softspace() и softspace с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39667: Улучшение совместимости pathlib.Path с zipfile.Path и исправление снижения производительности, обнаруженного в zipp 3.0.

  • bpo-39638: Сохраните подписи ASDL в документах для узлов AST. Исправление от Батухана Таская

  • bpo-39639: Утратил класс узла ast.Suite, поскольку он больше не используется. Исправление от Batuhan Taskaya.

  • bpo-39609: Добавьте префикс thread_name_prefix к исполнителю asyncio по умолчанию

  • bpo-39548: Разрешить параметры с именами urllib.request.AbstractDigestAuthHandler и qop с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39509: Разрешить параметры с именами 103 EARLY_HINTS и 425 TOO_EARLY с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39507: Добавление HTTP-статуса 418 «I’m a Teapot» в HTTPStatus в библиотеке http. Исправление Росса Родса.

  • bpo-39495: Удалите значение по умолчанию из параметра attrs в xml.etree.ElementTree.TreeBuilder.start() для согласованности между реализациями Python и C.

  • bpo-38971: Открытый вопрос в BPO указал на желание привести реализацию codecs.open() в соответствие с io.open(), которая реализует try/except, чтобы гарантировать закрытие файлового потока до того, как будет поднято исключение.

  • bpo-38641: Разрешить параметры с именами return и yield с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37534: При использовании модуля minidom для генерации XML-документов добавлена возможность добавления Standalone Document Declaration. Все изменения сделаны для того, чтобы генерировать документ в соответствии с рекомендацией W3C Extensible Markup Language (XML) 1.0 (Fifth Edition) (доступна здесь: https://www.w3.org/TR/xml/#sec-prolog-dtd).

  • bpo-34788: Добавьте поддержку скопированных IPv6-адресов в ipaddress. Исправление Александра Павлюка.

  • bpo-34822: Разрешить параметры с именами ast и Index с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-39868: Обновлен языковой справочник для PEP 572.

  • bpo-13790: Замените „string“ на „specification“ в формате doc.

  • bpo-17422: Ссылка на язык больше не ограничивает пространства имен классов по умолчанию только dicts.

  • bpo-39530: Исправление вводящей в заблуждение документации о числовых сравнениях смешанного типа.

  • bpo-39718: Обновите документацию token, чтобы отразить дополнения в Python 3.8

  • bpo-39677: Изменено имя операнда MAKE_FUNCTION с argc на flags для модуля dis.

Тесты

  • bpo-40019: test_gdb теперь пропускает тесты, если обнаруживает, что gdb не удалось прочитать отладочную информацию, поскольку двоичный файл Python оптимизирован.

  • bpo-27807: Разрешить параметры с именами test_site.test_startup_imports() и sys.path с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26067: Не завершайте тест test_shutil test_chown, если uid или gid пользователя не может быть преобразован в имя.

  • bpo-39855: test_subprocess.test_user() теперь пропускает проверку на имя пользователя, если оно не существует. Например, пропустить тест, если пользователь «nobody» не существует в Linux.

Построить

  • bpo-39761: Исправьте сборку с DTrace, но без дополнительных DFLAGS.

  • bpo-39763: Разрешить параметры с именами subprocess и subprocess с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1294959: Разрешить параметры с именами --with-platlibdir и sys.platlibdir с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Windows

  • bpo-39930: Обеспечивает включение необходимых vcruntime140.dll в установочные пакеты.

  • bpo-39847: Избегайте зависания, когда компьютер находится в спящем режиме в ожидании мьютекса (для объектов, связанных с блокировкой, из threading) около 49-дневного аптайма.

  • bpo-38597: Разрешить параметры с именами distutils и vcruntime140.dll с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38380: Обновление сборок Windows для использования SQLite 3.31.1

  • bpo-39789: Обновите машины для сборки релизов Windows до Visual Studio 2019 (MSVC 14.2).

  • bpo-34803: Пакет для nuget.org теперь включает ссылку на репозиторий и изображение иконки в комплекте.

macOS

  • bpo-38380: Обновите сборки macOS для использования SQLite 3.31.1

IDLE

  • bpo-27115: Для „Go to Line“ используйте подкласс Query box со стандартным поведением IDLE и улучшенной проверкой ошибок.

  • bpo-39885: Поскольку щелчок для вызова контекстного меню IDLE перемещает курсор, любое выделение текста должно было быть и теперь очищено.

  • bpo-39852: Edit «Перейти к строке» теперь очищает любое выделение, предотвращая случайное удаление. Она также обновляет значения Ln и Col в строке состояния.

  • bpo-39781: Выбор контекстных строк кода больше не приводит к переходу.

Инструменты/демоверсии

  • bpo-36184: Перенос python-gdb.py на FreeBSD. python-gdb.py теперь проверяет имя функции «take_gil», чтобы проверить, пытается ли фрейм получить GIL, вместо проверки «pthread_cond_timedwait», которая специфична для Linux и может быть другим условием, чем GIL.

  • bpo-38080: Разрешить параметры с именами getproxies и lib2to3.fixes.fix_urllib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

C API

  • bpo-40024: Добавьте вспомогательную функцию PyModule_AddType(): добавление типа в модуль. Исправление от Donghee Na.

  • bpo-39946: Разрешить параметры с именами _PyRuntime.getframe и _PyThreadState_GetFrame с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39947: Добавьте функцию PyThreadState_GetFrame(): получение текущего кадра состояния потока Python.

  • bpo-37207: Добавьте вспомогательную функцию _PyArg_NoKwnames. Исправление от Donghee Na.

  • bpo-39947: Добавить PyThreadState_GetInterpreter(): получить интерпретатор состояния потока Python.

  • bpo-39947: Добавьте функцию PyInterpreterState_Get() в ограниченный C API.

  • bpo-35370: Разрешить параметры с именами PySys_Audit() и PyEval_SetProfile() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39947: Переместите статические inline-функции Py_EnterRecursiveCall() и Py_LeaveRecursiveCall() во внутренний C API: они обращаются к атрибутам PyThreadState. Ограниченный C API предоставляет обычные функции, которые скрывают детали реализации.

  • bpo-39947: Макросы Py_TRASHCAN_BEGIN_CONDITION и Py_TRASHCAN_END больше не обращаются к атрибутам PyThreadState, а вызывают новые приватные функции _PyTrash_begin() и _PyTrash_end(), которые скрывают детали реализации.

  • bpo-39884: Разрешить параметры с именами PyDescr_NewMethod() и PyCFunction_NewEx() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39877: Разрешить параметры с именами PyEval_InitThreads() и PyEval_ThreadsInitialized() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38249: Разрешить параметры с именами Py_UNREACHABLE и __builtin_unreachable() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38643: Разрешить параметры с именами PyNumber_ToBase() и SystemError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39882: Разрешить параметры с именами Py_FatalError() и Py_LIMITED_API с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39824: Разрешить параметры с именами m_traverse и m_clear с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Модули расширения, не имеющие состояния модуля (m_size <= 0), не затрагиваются.

  • bpo-38913: Исправлен segfault в Py_BuildValue(), вызванном с форматом, содержащим «#», и неопределенным PY_SSIZE_T_CLEAN, когда установлено исключение.

  • bpo-38500: Разрешить параметры с именами _PyInterpreterState_GetEvalFrameFunc() и _PyInterpreterState_SetEvalFrameFunc() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.9.0 alpha 4

Дата выхода: 2020-02-25

Безопасность

  • bpo-39184: Разрешить параметры с именами fcntl и msvcrt с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39401: Избегайте небезопасной загрузки DLL при запуске в Windows 7 и более ранних версиях.

  • bpo-39184: Добавьте события аудита в функции выполнения команд в модулях os и pty.

Ядро и встроенные модули

  • bpo-39382: Разрешить параметры с именами issubclass() и __bases__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39573: Обновление инструмента клиники для использования Py_IS_TYPE(). Исправление от Donghee Na.

  • bpo-39619: Разрешить использование os.chroot() на системах HP-UX.

  • bpo-39573: Добавьте Py_IS_TYPE() статическую inline-функцию для проверки того, является ли тип объекта o типом type.

  • bpo-39606: Разрешить параметры с именами bpo-39386 и aclose с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39579: Разрешить параметры с именами Attribute и ast_for_dotted_name с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Порт модуля расширения _crypt для многофазной инициализации (PEP 489).

  • bpo-1635741: Перенос модуля расширения _contextvars для многофазной инициализации (PEP 489).

  • bpo-39510: Исправьте segfault в методе readinto() на закрытом BufferedReader.

  • bpo-39502: Исправьте time.localtime() на 64-битной AIX для поддержки годов до 1902 и после 2038. Исправление от M Felt.

  • bpo-39492: Исправление цикла ссылок в C Pickler, который препятствовал сборке мусора для удаленных объектов pickled.

  • bpo-39453: Исправлено возможное падение в list.__contains__() при изменении списка во время сравнения элементов. Исправление от Donghee Na.

  • bpo-39434: Разрешить параметры с именами floor division и ZeroDivisionError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1635741: Порт модуля расширения _codecs для многофазной инициализации (PEP 489).

  • bpo-1635741: Модуль расширения порта _bz2 для многофазной инициализации (PEP 489).

  • bpo-1635741: Модуль расширения порта _abc для многофазной инициализации (PEP 489).

  • bpo-39320: Разрешить параметры с именами DICT_MERGE и DICT_UPDATE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39219: Синтаксические ошибки, возникающие в токенизаторе, теперь всегда устанавливают корректные атрибуты «text» и «offset».

  • bpo-36051: Отказ от GIL во время больших операций bytes.join. Исправление Брюса Мерри.

  • bpo-38960: Исправление проблем со сборкой DTrace на FreeBSD. Исправление от Дэвида Карлье.

  • bpo-37207: Разрешить параметры с именами range() и vectorcall с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36144: Разрешить параметры с именами dict и collections.UserDict с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32856: Разрешить параметры с именами for y in [expr] и y = expr с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-30566: Исправление IndexError при попытке декодировать недопустимую строку с помощью кодека punycode.

  • bpo-39649: Разрешить параметры с именами __args__ и bdb.Bdb.format_stack_entry с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39648: Разрешить параметры с именами math.gcd() и math.lcm() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39681: Исправление регрессии, из-за которой модуль pickle на C не позволял распаковывать данные из файлоподобного объекта, не имеющего метода readinto().

  • bpo-35950: Разрешить параметры с именами io.UnsupportedOperation и io.BufferedReader.truncate() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39479: Добавить функцию math.lcm(): наименьшее общее кратное.

  • bpo-39674: Вернуть изменение «Do not expose abstract collection classes in the collections module» (bpo-25988). Псевдонимы для ABC, такие как collections.Mapping, сохраняются в Python 3.9 для облегчения перехода с Python 2.7, но будут удалены в Python 3.10.

  • bpo-39104: Исправление зависания ProcessPoolExcutor на shutdown(wait=False), когда задача не прошла пикировку.

  • bpo-39627: Исправлена проверка полноты TypedDict для унаследованных ключей.

  • bpo-39474: Разрешить параметры с именами (a)(b) и (a)[b] с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21016: Разрешить параметры с именами pydoc и trace с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39590: Collections.deque теперь держит сильные ссылки во время deque.__contains__ и deque.count, что устраняет сбои.

  • bpo-39586: Разрешить параметры с именами bdist_msi и bdist_wheel с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39595: Улучшена производительность zipfile.Path для файлов с большим количеством записей. Также улучшена производительность и исправлена незначительная проблема, опубликованная в importlib_metadata 1.5.

  • bpo-39350: Разрешить параметры с именами fractions.Fraction и int с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39567: Разрешить параметры с именами os.walk() и os.fwalk() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39559: Разрешить параметры с именами getters и uuid.getnode() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38149: Разрешить параметры с именами sys.audit() и glob.glob() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39546: Разрешить параметры с именами ArgumentParser и allow_abbrev=False с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39450: Удаление пробельных символов из docstring перед возвратом из unittest.case.shortDescription().

  • bpo-12915: Разрешить параметры с именами resolve_name и pkgutil с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39353: Функция binascii.crc_hqx() больше не является устаревшей.

  • bpo-39493: Пометить typing.IO.closed как свойство

  • bpo-39491: Разрешить параметры с именами typing.Annotated и include_extras с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39485: Исправлена ошибка в unittest.mock.create_autospec(), из-за которой пользовательские дескрипторы, определенные в модуле расширения, возвращающем функции, жаловались на неправильное количество аргументов.

  • bpo-38932: Макет полностью сбрасывает дочерние объекты при reset_mock(). Исправление от Vegard Stikbakke

  • bpo-39082: Позволяет AsyncMock корректно патчить статические/классовые методы

  • bpo-39432: Реализуйте алгоритм PEP-489 для неаскриптивных имен символов «PyInit_…» в distutils, чтобы он экспортировал правильный символ init и под Windows.

  • bpo-18819: Разрешить параметры с именами devmajor и devminor с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39349: Добавлен новый параметр cancel_futures в concurrent.futures.Executor.shutdown(), который отменяет все ожидающие фьючерсы, которые не начали выполняться, вместо того чтобы ждать их завершения перед закрытием исполнителя.

  • bpo-39274: bool(fraction.Fraction) теперь возвращает булево число, даже если (числитель != 0) не возвращает булево число (например, число numpy).

  • bpo-34793: Разрешить параметры с именами with (await asyncio.lock): и with (yield from asyncio.lock): с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25597: Разрешить параметры с именами wraps и unittest.mock.MagicMock с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36350: Разрешить параметры с именами inspect.Signature.parameters и inspect.BoundArguments.arguments с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35727: Исправьте распространение кода выхода sys.exit() и sys.exit(None) при использовании в многопроцессорном процессе.Process.

  • bpo-32173: Разрешить параметры с именами lazycache и __all__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-17422: В справочнике по языку теперь указываются ограничения на пространства имен классов. Адаптировано из исправления Итана Фурмана.

  • bpo-39572: Разрешить параметры с именами total и TypedDict с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39654: В документации pyclbr обновите „class“ на „module“, где это необходимо, и добавьте комментарий readmodule. Исправление от Hakan Çelik.

  • bpo-39153: Уточните семантику пересчета для следующих функций: - PyObject_SetItem - PyMapping_SetItemString - PyDict_SetItem - PyDict_SetItemString

  • bpo-39392: Объясните, что при заполнении черепашкой области перекрытия могут остаться незаполненными.

  • bpo-39369: Обновление описания метода mmap readline. Тот факт, что метод readline обновляет позицию файла, не должен игнорироваться, так как у программиста может сложиться впечатление, что он ее не обновляет.

  • bpo-9056: Включите подраздел в TOC для PDF-версии документов.

Тесты

  • bpo-38325: Пропустить тесты на не-BMP символы test_winconsoleio.

  • bpo-39502: Разрешить параметры с именами time.localtime() и OverflowError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Построить

  • bpo-39489: Удалить COUNT_ALLOCS специальную сборку.

Windows

  • bpo-39553: Удаление неиспользуемого кода, связанного с манифестами SxS.

  • bpo-39439: Указывает путь к Python, когда virtualenv активен в Windows.

  • bpo-39393: Улучшено сообщение об ошибке при попытке загрузить DLL с неразрешенными зависимостями.

  • bpo-38883: Разрешить параметры с именами home() и expanduser() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39185: Скрипт build.bat имеет дополнительные опции для очень тихого вывода (-q) и очень бодрого вывода (-vv)

IDLE

  • bpo-39663: Добавьте тесты для pyparse find_good_parse_start().

  • bpo-39600: В окне конфигурации шрифта удалите дублирующиеся имена шрифтов.

  • bpo-30780: Добавьте оставшиеся тесты configdialog для кнопок и вкладок «Выделение» и «Ключи».

  • bpo-39388: IDLE Кнопка отмены настроек теперь отменяет ожидающие изменения

  • bpo-38792: Закрывает подсказку вызова оболочки IDLE, если происходит KeyboardInterrupt или перезапуск оболочки. Исправление от Zackery Spytz.

C API

  • bpo-35081: Разрешить параметры с именами bytes_methods.h и pycore_bytes_methods.h с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35081: Разрешить параметры с именами dtoa.h и pycore_dtoa.h с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39573: Добавьте функцию Py_SET_SIZE() для установки размера объекта.

  • bpo-39500: Разрешить параметры с именами PyUnicode_IsIdentifier() и Py_FatalError() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39573: Добавьте функцию Py_SET_TYPE() для установки типа объекта.

  • bpo-39573: Добавьте функцию Py_SET_REFCNT() для установки счетчика ссылок на объект.

  • bpo-39542: Разрешить параметры с именами PyType_HasFeature() и PyType_Check() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39542: Разрешить параметры с именами PyObject_INIT() и PyObject_INIT_VAR() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39542: Исключите механизм мусорной корзины из ограниченного C API: он требует доступа к полям структур PyTypeObject и PyThreadState, в то время как эти структуры непрозрачны в ограниченном C API.

  • bpo-39511: Разрешить параметры с именами PyThreadState_Clear() и PyThreadState.on_delete с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38076: Исправление для очистки состояния интерпретатора только после очистки глобалов модуля, чтобы гарантировать доступ к состоянию модуля из C Extensions во время разрушения во время выполнения

  • bpo-39245: Разрешить параметры с именами PyObject_Vectorcall и PyObject_VectorcallMethod с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.9.0 alpha 3

Дата выхода: 2020-01-24

Ядро и встроенные модули

  • bpo-39427: Документируйте все возможности для опций -X в разделе помощи командной строки. Исправление от Pablo Galindo.

  • bpo-39421: Исправление возможных сбоев при работе с функциями в модуле heapq и пользовательскими операторами сравнения.

  • bpo-39386: Предотвращение двойного ожидания асинхронного итератора.

  • bpo-17005: Разрешить параметры с именами functools.TopologicalSorter и functools с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39320: Замените четыре сложных байткода для построения последовательностей тремя более простыми.

    Следующие четыре байткода были удалены:

    • BUILD_LIST_UNPACK

    • BUILD_TUPLE_UNPACK

    • BUILD_SET_UNPACK

    • BUILD_TUPLE_UNPACK_WITH_CALL

    Были добавлены следующие три байткода:

    • LIST_TO_TUPLE

    • LIST_EXTEND

    • SET_UPDATE

  • bpo-39336: Импортные загрузчики, публикующие неизменяемые объекты модулей, теперь могут публиковать неизменяемые пакеты в дополнение к отдельным модулям.

  • bpo-39322: Добавлена новая функция gc.is_finalized() для проверки того, был ли объект финализирован сборщиком мусора. Исправление от Пабло Галиндо.

  • bpo-39048: Разрешить параметры с именами async with и __aenter__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39235: Исправьте место окончания AST для одинокого выражения генератора в вызове функции, например, f(i for i in a).

  • bpo-39209: Корректная обработка многострочных токенов в интерактивном режиме. Исправление от Пабло Галиндо.

  • bpo-1635741: Порт модуля расширения _json для многофазной инициализации (PEP 489).

  • bpo-39216: Исправьте оптимизацию складывания констант для аргументов с позицией - автор Anthony Sottile.

  • bpo-39215: Исправьте SystemError, когда вложенная функция имеет аннотацию только на позиционный аргумент - автор Anthony Sottile.

  • bpo-39200: Разрешить параметры с именами min() и max() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39200: Исправление сообщения об ошибке при попытке сконструировать объекты range без аргументов. Исправление от Пабло Галиндо.

  • bpo-39166: Исправление некорректного отчета о выполнении строк в функциях трассировки при трассировке последней итерации асинхронных циклов for. Исправление от Пабло Галиндо.

  • bpo-39114: Исправление некорректного отчета о выполнении строки в функциях трассировки при трассировке обработчиков исключений с привязкой к имени. Исправление от Pablo Galindo.

  • bpo-39156: Разделите инструкцию байткода COMPARE_OP на четыре отдельные инструкции.

    • COMPARE_OP для насыщенных сравнений

    • IS_OP для тестов „is“ и „is not“

    • CONTAINS_OP для тестов „in“ и „is not“

    • JUMP_IF_NOT_EXC_MATCH для проверки исключений в операторах „try-except“.

    Это улучшает ясность интерпретатора и должно обеспечить небольшое ускорение.

  • bpo-38588: Исправление возможных сбоев в dict и list при вызове PyObject_RichCompareBool().

  • bpo-13601: Разрешить параметры с именами sys.stderr и stderr с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    (Внесено Йендриком Сейппом в bpo-13601).

  • bpo-38610: Исправление возможных сбоев в нескольких методах списка из-за удержания сильных ссылок на элементы списка при вызове PyObject_RichCompareBool().

  • bpo-32021: Включите кодировку brotli .br в mimetypes encodings_map

Библиотека

  • bpo-39430: Исправлено состояние гонки при ленивом импорте в tarfile.

  • bpo-39413: Функция os.unsetenv() теперь доступна и в Windows.

  • bpo-39390: Разрешить параметры с именами ignore и shutil.copytree() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39395: Разрешить параметры с именами os.putenv() и os.unsetenv() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39406: Разрешить параметры с именами setenv() и os.putenv() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39396: Исправьте math.nextafter(-0.0, +0.0) на AIX 7.1.

  • bpo-29435: Разрешить параметры с именами tarfile.is_tarfile() и zipfile.is_zipfile() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39377: Разрешить параметры с именами encoding и json.loads() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39389: Записывать точные метаданные о степени сжатия в архивы gzip, а не всегда сигнализировать о максимальном сжатии.

  • bpo-39366: Разрешить параметры с именами xpath() и xgtitle() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39357: Разрешить параметры с именами bz2.BZ2File и DeprecationWarning с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39353: Разрешить параметры с именами binhex и binascii с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39351: Разрешить параметры с именами base64.encodestring() и base64.decodestring() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39350: Разрешить параметры с именами fractions.gcd() и bpo-22486 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39329: Конструктор LMTP теперь имеет необязательный параметр timeout. Исправление от Donghee Na.

  • bpo-39313: Разрешить параметры с именами exec_function и RefactoringTool с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39259: Разрешить параметры с именами FTP_TLS и FTP_TLS с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39259: Разрешить параметры с именами SMTP и SMTP_SSL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39310: Добавить math.ulp(): вернуть значение наименьшего значащего бита float.

  • bpo-39297: Улучшена производительность обнаружения дистрибутива importlib.metadata и повышена устойчивость к недоступным записям sys.path (importlib_metadata v1.4.0).

  • bpo-39259: Разрешить параметры с именами NNTP и NNTP_SSL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38901: Когда вы указываете prompt=“.“ или эквивалентно python -m venv –prompt . … базовое имя текущего каталога используется для установки подсказки созданного venv при его активации.

  • bpo-39288: Добавить math.nextafter(): возвращает следующее значение с плавающей точкой после x в направлении y.

  • bpo-39259: Разрешить параметры с именами POP3 и POP3_SSL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39242: Обновлен домен Gmane с news.gmane.org на news.gmane.io, который используется для примеров NNTP сервера чтения новостей и тестов nntplib.

  • bpo-35292: Разрешить параметры с именами SimpleHTTPRequestHandler.guess_type и mimetypes.guess_type с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39239: Разрешить параметры с именами select.epoll.unregister() и EBADF с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38907: В сценарии http.server восстановите привязку к IPv4 в Windows.

  • bpo-39152: Исправьте ttk.Scale.configure([name]), чтобы вернуть кортеж конфигурации для имени или всех опций. Джованни Ломбардо внес часть вклада в патч.

  • bpo-39198: Разрешить параметры с именами Logger.isEnabledFor и logging с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39191: Выполните проверку на выполнение цикла перед запуском новой задачи в loop.run_until_complete() для быстрого отказа; это предотвращает побочный эффект порождения новой задачи до возникновения исключения.

  • bpo-38871: Корректно заключать в скобки утверждения, основанные на фильтрах и содержащие лямбда-выражения в lib2to3. Исправление от Donghee Na.

  • bpo-39142: Внесено изменение в logging.config.dictConfig, чтобы избежать преобразования экземпляров именованных кортежей в ConvertingTuple. Предполагается, что именованные кортежи слишком специализированны, чтобы с ними можно было обращаться как с обычными кортежами; если пользователю именованных кортежей требуется функциональность ConvertingTuple, он должен сам реализовать ее в своем классе именованного кортежа.

  • bpo-39158: ast.literal_eval() теперь поддерживает пустые множества.

  • bpo-39129: Исправьте путь импорта для asyncio.TimeoutError

  • bpo-39057: urllib.request.proxy_bypass_environment() теперь игнорирует ведущие точки и не игнорирует следующую за ними новую строку.

  • bpo-39056: Исправлена обработка недействительной категории предупреждения в опции -W. Больше не импортируется модуль re, если он не нужен.

  • bpo-39055: Разрешить параметры с именами base64.b64decode() и validate=True с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21600: Разрешить параметры с именами mock.patch.stopall() и mock.patch.dict() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39019: Разрешить параметры с именами __class_getitem__ и tempfile.SpooledTemporaryFile с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39019: Разрешить параметры с именами __class_getitem__ и subprocess.Popen с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38914: Разрешить параметры с именами check и author с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38878: Исправлен __subclasshook__ из os.PathLike, чтобы возвращать корректный результат при наследовании. Исправление от Bar Harel.

  • bpo-38615: Разрешить параметры с именами IMAP4 и IMAP4_SSL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35182: Исправлено падение последующего вызова Popen.communicate(), когда дочерний процесс уже закрыл любой переданный стандартный поток, но все еще продолжает выполняться. Исправление Андрея Малецкого.

  • bpo-38630: Разрешить параметры с именами subprocess.Popen.send_signal() и subprocess.Popen.returncode с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38536: Разрешить параметры с именами international=True и locale.currency(12.34, international=True) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38473: Используйте сигнатуру из внутреннего mock для автоспецифицированных методов, присоединенных к unittest.mock.attach_mock(). Исправление от Karthikeyan Singaravelan.

  • bpo-38361: Разрешить параметры с именами ident и syslog.openlog() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38293: Разрешить параметры с именами copy.copy() и copy.deepcopy() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37958: Добавлен метод pstats.Stats.get_profile_dict() для возврата данных профиля в виде экземпляра StatsProfile.

  • bpo-28367: Магические константы Termios для следующих скоростей передачи данных: - B500000 - B576000 - B921600 - B1000000 - B1152000 - B1500000 - B2000000 - B2500000 - B3000000 - B3500000 - B40000 Patch by Andrey Smirnov

Документация

  • bpo-39381: Упомяните в документации, что asyncio.get_event_loop() неявно создает новый цикл событий, только если вызывается из главного потока.

  • bpo-38918: Разрешить параметры с именами __module__ и inspect с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-3530: Разрешить параметры с именами ast и NodeTransformer с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Построить

  • bpo-39395: Разрешить параметры с именами setenv() и unsetenv() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39160: Обновили документацию в ./configure --help, чтобы показать значения по умолчанию, сослаться на документацию, где это необходимо, и добавить дополнительные пояснения, где это необходимо.

  • bpo-39144: Цели сборки ctags и etags включают Modules/_ctypes и исходные файлы стандартной библиотеки Python.

IDLE

  • bpo-39050: Сделайте так, чтобы кнопка «Помощь» в диалоге настроек IDLE снова работала.

  • bpo-34118: Отметьте memoryview, range и tuple как классы, такие же, как list и т.д. в списке встроенных функций руководства библиотеки.

  • bpo-32989: Добавлены тесты для метода newline_and_indent_event редактора. Удалите мертвый код из метода pyparse find_good_parse_start.

C API

  • bpo-39372: Разрешить параметры с именами _PyBytes_InsertThousandsGroupingLocale и _PyBytes_InsertThousandsGrouping с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39164: Добавьте частную функцию _PyErr_GetExcInfo() для получения информации об исключениях из указанного состояния потока Python.

Python 3.9.0 alpha 2

Дата выхода: 2019-12-18

Безопасность

  • bpo-38945: При кодировании uu символы новой строки были экранированы, чтобы предотвратить их выход за пределы раздела содержимого закодированного файла. Это предотвращает злонамеренную или случайную модификацию данных в процессе декодирования.

  • bpo-37228: Разрешить параметры с именами asyncio.loop.create_datagram_endpoint() и SO_REUSEADDR с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38804: Устраняет уязвимость ReDoS в http.cookiejar. Исправление от Бена Каллера.

Ядро и встроенные модули

  • bpo-39028: Немного повышает скорость разбора аргумента ключевого слова с большим количеством kwargs, усиливая предположение, что kwargs являются интернированными строками.

  • bpo-39080: Исправление значения end_col_offset для AST-узлов Starred Expression, когда они входят в число элементов в атрибуте args AST-узлов Call.

  • bpo-39031: При разборе узла «elif» lineno и col_offset узла теперь указывают на ключевое слово «elif», а не на его условие, что делает его совместимым с узлом «if». Исправление Лисандроса Николау.

  • bpo-20443: В Python 3.9.0a1 sys.argv[0] превращался в абсолютный путь, если в командной строке было указано имя файла. Отмените это изменение, поскольку большинство пользователей ожидают, что sys.argv не будет изменен.

  • bpo-39008: Разрешить параметры с именами PySys_Audit() и Py_ssize_t с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38673: В режиме REPL не переключайтесь на PS2, если строка начинается с комментария или пробельного символа. Основано на работе Батухана Ташкая.

  • bpo-38922: Разрешить параметры с именами replace и code.__new__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38920: Разрешить параметры с именами sys.excepthook() и sys.unraisablehook() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38892: Улучшена документация по таблице и функциям событий аудита.

  • bpo-38852: Установите размер стека потоков на 8 Мб для отладочных сборок на платформах android.

  • bpo-38858: Разрешить параметры с именами NSMALLNEGINTS и NSMALLPOSINTS с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36854: Разрешить параметры с именами PyInterpreterState.gc и _PyRuntimeState.gc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38835: Разрешить параметры с именами PyFPE_START_PROTECT() и PyFPE_END_PROTECT() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38328: Разрешить параметры с именами list и set с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38707: Разрешить параметры с именами MainThread.native_id и multiprocessing.Process с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38629: Разрешить параметры с именами __floor__ и __ceil__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27145: операторы int + int и int - int теперь могут возвращать небольшие целочисленные синглтоны. Исправление от hongweipeng.

  • bpo-38021: Предоставьте тег платформы для AIX, достаточный для идентификации бинарного дистрибутива PEP425. Исправление Майкла Фелта.

  • bpo-35409: Игнорирование исключений GeneratorExit при выбросе исключения в корутину aclose асинхронного генератора.

  • bpo-33387: Удалены байткоды WITH_CLEANUP_START, WITH_CLEANUP_FINISH, BEGIN_FINALLY, END_FINALLY, CALL_FINALLY и POP_FINALLY. Заменены на байткоды RERAISE и WITH_EXCEPT_START. Компилятор теперь генерирует разный код для исключительных и неисключительных ветвей для операторов „with“ и „try-except“. Для операторов „try-finally“ блок „finally“ повторяется для каждого выхода из тела „try“.

Библиотека

  • bpo-39033: Разрешить параметры с именами NameError и zipimport с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-39022: Обновите importlib.metadata, чтобы включить улучшения из importlib_metadata 1.3, включая улучшенную сериализацию EntryPoints и улучшенную документацию для пользовательских искателей.

  • bpo-39006: Исправление asyncio при отсутствии модуля ssl: проверка экземпляра ssl.SSLSocket только в том случае, если модуль ssl доступен.

  • bpo-38708: Исправление потенциальной ошибки IndexError в парсере писем при разборе пустого msg-id.

  • bpo-38698: Добавьте в парсер электронной почты новый токен InvalidMessageID для обозначения недействительных заголовков Message-ID. Также добавьте дефекты, когда после разбора заголовка остается значение.

  • bpo-38994: Разрешить параметры с именами __class_getitem__ и os.PathLike с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38979: Верните класс из ContextVar.__class_getitem__, чтобы упростить подклассификацию.

  • bpo-38978: Реализуйте __class_getitem__ на объектах asyncio (Future, Task, Queue). Исправление от Batuhan Taskaya.

  • bpo-38916: Разрешить параметры с именами array.array и tostring() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38986: Сделайте репринт ускоренного на C TaskWakeupMethWrapper таким же, как и у чистой версии на Python.

  • bpo-38982: Разрешить параметры с именами PidfdChildWatcher и waitpid() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38529: Сбросьте слишком шумное предупреждение asyncio об удалении потока без явного вызова .close().

  • bpo-27413: Разрешить параметры с именами ensure_ascii и json.tool с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38634: Модуль readline теперь определяет, связан ли Python с libedit во время выполнения на всех платформах. Ранее проверка выполнялась только на macOS.

  • bpo-33684: Исправление json.tool не смогло прочитать JSON-файл с символами, отличными от ASCII, если кодировка локали не UTF-8.

  • bpo-38698: Предотвращение появления UnboundLocalError в parse_message_id.

    Функция parse_message_id() некорректно использовала токен, определенный внутри обработчика исключений, который поднимал UnboundLocalError при разборе недопустимого значения. Исправление от Claudiu Popa.

  • bpo-38927: Разрешить параметры с именами python -m pip и pip с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26730: Исправление SpooledTemporaryFile.rollover() может повредить файл, если он находится в текстовом режиме. Исправление от Сергея Сторчака.

  • bpo-38881: random.choices() теперь выдает ошибку ValueError, когда все веса равны нулю.

  • bpo-38876: Вызывает pickle.UnpicklingError при загрузке элемента из memo для недопустимого ввода.

    KeyError: Разрешить параметры с именами BINGET и LONG_BINGET с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38688: Вызов func:shutil.copytree для копирования дерева каталогов из одного каталога в другой подкаталог приводил к бесконечному циклу и ошибке RecursionError. Было добавлено исправление, потребляющее итератор и создающее список копируемых записей, что позволяет избежать рекурсии для вновь созданных каталогов. Автор исправления - Бруно П. Киношита.

  • bpo-38863: Разрешить параметры с именами is_cgi() и http.server с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37838: Разрешить параметры с именами typing.get_type_hints() и functools.wraps() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38870: Разрешить параметры с именами ast.unparse() и ast с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38859: AsyncMock теперь возвращает StopAsyncIteration при исчерпании итерабельной таблицы side_effects. С PEP-479 невозможно вызвать исключение StopIteration из корутины.

  • bpo-38857: Исправление AsyncMock для возвращаемых значений, которые являются ожидаемыми типами. Это также распространяется на значения итерируемых с побочным_эффектом, которые оказались ожидаемыми, и оборачивает callables, возвращающие ожидаемый тип. До этого ожидаемые значения ожидали, а не возвращались как есть.

  • bpo-38834: Разрешить параметры с именами typing.TypedDict и __required_keys__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38821: Разрешить параметры с именами argparse и nargs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38820: Сделайте Python совместимым с OpenSSL 3.0.0. ssl.SSLSocket.getpeercert() больше не возвращает IPv6-адреса с новой строкой в конце.

  • bpo-38811: Разрешить параметры с именами pathlib и os.link() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38686: Разрешить параметры с именами qop и urllib.request.AbstractDigestAuthHandler с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38712: Добавьте специфическую для Linux функцию signal.pidfd_send_signal(), которая позволяет посылать сигнал процессу, идентифицированному не по pid, а по дескриптору файла.

  • bpo-38348: Разрешить параметры с именами -i и --indent с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37523: Разрешить параметры с именами zipfile.ZipExtFile и ValueError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38045: Разрешить параметры с именами enum._decompose() и enum с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36820: Разрывает цикл, возникающий при сохранении исключения в socket.py, codeop.py и dyld.py, поскольку они сохраняют не только исключение, но и пользовательские объекты через атрибут __traceback__. Исправление Марио Корчеро.

  • bpo-36406: Обработка пакетов пространства имен в doctest. Исправление от Karthikeyan Singaravelan.

  • bpo-34776: Исправьте классы данных для поддержки прямых ссылок в аннотациях типов

  • bpo-20928: ElementTree поддерживает рекурсивную обработку XInclude. Исправление Стефана Бехнеля.

  • bpo-29636: Разрешить параметры с именами json.tool и --indent с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-38928: Разрешить параметры с именами upgrade_dependencies() и --upgrade-deps с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38899: Разрешить параметры с именами source и . с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-22377: Разрешить параметры с именами datetime.datetime.strptime() и %Z с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Тесты

  • bpo-38546: Исправьте test_ressources_gced_in_workers() из test_concurrent_futures: явно останавливайте менеджер, чтобы предотвратить утечку дочернего процесса, запущенного в фоновом режиме после завершения теста.

  • bpo-38546: Тесты Multiprocessing и concurrent.futures теперь останавливают процесс отслеживания ресурсов после завершения тестов.

  • bpo-38614: Разрешить параметры с именами test.support и LOOPBACK_TIMEOUT с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38547: Исправьте test_pty: если процесс является лидером сессии, закрытие дескриптора главного файла вызывает сигнал SIGHUP: просто игнорируйте SIGHUP при выполнении тестов.

  • bpo-38992: Исправьте тест для math.fsum(), который давал сбой из-за постоянного складывания.

  • bpo-38991: Разрешить параметры с именами test.support и run_python_until_end() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38965: Исправление test_faulthandler на GCC 10. Используйте ключевое слово «volatile» в faulthandler._stack_overflow() для предотвращения оптимизации хвостовых вызовов на любом компиляторе, а не полагайтесь на прагмы, специфичные для компилятора.

  • bpo-38875: test_capi: тесты trashcan теперь требуют ресурс test «cpu».

  • bpo-38841: Пропускайте asyncio test_create_datagram_endpoint_existing_sock_unix на платформах, где отсутствует функциональная функция bind() для именованных доменных сокетов unix.

  • bpo-38692: Разрешить параметры с именами os.pidfd_open() и PermissionError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38839: Исправьте некоторые неиспользуемые функции в тестах. Исправление от Адама Джонсона.

  • bpo-38669: Разрешить параметры с именами TypeError и unittest.mock.patch.object() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37957: test.regrtest теперь может получать список тестовых шаблонов для игнорирования (с помощью аргумента -i/–ignore) или файл со списком шаблонов для игнорирования (с помощью аргумента –ignore-file). Исправление от Пабло Галиндо.

Построить

  • bpo-37404: Разрешить параметры с именами asyncio и TypeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36500: В решение Visual Studio добавлен дополнительный проект «regen», который регенерирует всю грамматику, лексемы и опкоды.

Windows

  • bpo-39007: Добавьте события аудита в функции в winreg.

  • bpo-33125: Добавлена поддержка сборки и выпуска пакетов Windows ARM64.

macOS

  • bpo-37931: Исправлен сбой в динамических сборках OSX, возникавший при повторной инициализации модуля posix после Py_Finalize, если окружение изменилось с момента предыдущего import posix. Исправление от Benoît Hudson.

IDLE

  • bpo-38944: Клавиша Escape теперь закрывает окна завершения IDLE. Автор исправления - Джонни Наджера.

  • bpo-38943: Исправление того, что окна автозаполнения IDLE не всегда появлялись на некоторых системах. Автор исправления - Джонни Наджера.

  • bpo-38862: „Strip Trailing Whitespace“ в меню Format удаляет лишние новые строки в конце файлов, не относящихся к оболочке.

  • bpo-38636: Исправление переключения вкладок меню IDLE Format и ширины отступа файла. Эти функции (сочетания клавиш по умолчанию Alt-T и Alt-U) были ошибочно отключены в 3.7.5 и 3.8.0.

C API

  • bpo-38896: Удалить функцию PyUnicode_ClearFreeList(): свободный список Юникода был удален в Python 3.3.

  • bpo-37340: Разрешить параметры с именами PyMethod_ClearFreeList() и PyCFunction_ClearFreeList() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38835: Разрешить параметры с именами PyFPE_START_PROTECT() и PyFPE_END_PROTECT() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.9.0 alpha 1

Дата выхода: 2019-11-19

Безопасность

  • bpo-38722: Разрешить параметры с именами runpy и io.open_code() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38622: Добавьте дополнительные события аудита для модуля ctypes.

  • bpo-38418: Разрешить параметры с именами os.system() и os.system с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38243: Разрешить параметры с именами xmlrpc.server.DocXMLRPCServer и bpo-38243 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38174: Обновите версию библиотеки vendorized expat до 2.2.8, что устраняет CVE-2019-15903.

  • bpo-37764: Исправляет ситуацию, когда email._header_value_parser.get_unstructured уходит в бесконечный цикл для случая, когда в заголовке электронной почты нет пробельных символов в конце, и для случая, когда он содержит неверное кодированное слово. Исправление от Ashwin Ramaswami.

  • bpo-37461: Исправление бесконечного цикла при разборе специально созданных заголовков электронной почты. Исправление от Абхилаша Раджа.

  • bpo-37363: Добавляет события аудита для диапазона поддерживаемых команд выполнения (см. Командная строка и окружение).

  • bpo-37463: ssl.match_hostname() больше не принимает адреса IPv4 с дополнительным текстом после адреса и только четырехточечные обозначения без пробелов в конце. Некоторые реализации inet_aton() игнорируют пробельные символы и все данные после пробельных символов, например, „127.0.0.1 whatever“.

  • bpo-37363: Разрешить параметры с именами ensurepip и ftplib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37364: Разрешить параметры с именами io.open_code() и .pth с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34631: Обновление OpenSSL до версии 1.1.1c в программе установки Windows

  • bpo-34155: Разрешить параметры с именами @ и @ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-38631: Разрешить параметры с именами Py_FatalError() и RuntimeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38639: Разрешить параметры с именами math.floor() и math.ceil() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38640: Исправлена ошибка в компиляторе, которая приводила к возникновению ошибки при наличии операторов break и continue внутри всегда ложных циклов while. Автор исправления - Пабло Галиндо.

  • bpo-38613: Разрешить параметры с именами | и ^ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28029: Разрешить параметры с именами "".replace("", s, n) и s с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38535: Исправлены номера строк и смещения столбцов для узлов AST для вызовов без аргументов в декораторах.

  • bpo-38525: Исправление ошибки сегментации при использовании обратных итераторов пустых объектов dict. Исправление от Donghee Na и Inada Naoki.

  • bpo-38465: Разрешить параметры с именами bytearray и array с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38469: Исправлена ошибка, из-за которой область видимости именованных выражений не разрешалась корректно в присутствии ключевого слова global. Исправление Пабло Галиндо.

  • bpo-38437: Разрешить параметры с именами GC_DEBUG и Py_DEBUG с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38379: Когда сборщик мусора производит сборку, в которой некоторые объекты воскресают (они становятся достижимыми извне изолированных циклов после выполнения финализаторов), не блокируйте сборку всех объектов, которые все еще недостижимы. Исправление Пабло Галиндо и Тима Питерса.

  • bpo-38379: Разрешить параметры с именами collect() и get_stats() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38392: Разрешить параметры с именами PyObject_GC_Track() и tp_traverse() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38210: Устранение ненужных операций пересечения и обновления множества в диктующем представлении с пустым множеством. (Внесено Donghee Na в bpo-38210).

  • bpo-38402: Разрешить параметры с именами crypt и crypt_r с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37474: Во FreeBSD Python больше не вызывает fedisableexcept() при запуске для управления режимом управления плавающей точкой. Этот вызов стал бесполезен начиная с FreeBSD 6: он стал режимом по умолчанию.

  • bpo-38006: Исправление ошибки, связанной с взаимодействием weakrefs и циклического сборщика мусора. Мы должны очистить все weakrefs в мусоре, чтобы их обратные вызовы не выполнялись и не приводили к краху.

  • bpo-38317: Разрешить параметры с именами PyConfig.warnoptions и PEP 587 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38310: Разрешить параметры с именами BUILD_MAP_UNPACK_WITH_CALL и CALL_FUNCTION_EX с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36871: Улучшена обработка ошибок для методов assert_has_calls и assert_has_awaits макетов. Исправлена ошибка, при которой любые ошибки, возникающие при привязке ожидаемых вызовов к спецификации макета, молча проглатывались, что приводило к ошибочному выводу ошибок.

  • bpo-11410: Улучшенный контроль над видимостью символов обеспечивается за счет использования атрибутов видимости, доступных в gcc >= 4.0, которые предоставляются единообразно для POSIX и Windows. Файлы сборки POSIX были обновлены для компиляции с -fvisibility=hidden, что минимизирует экспортируемые символы.

  • bpo-38219: Разрешить параметры с именами dict и update() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38236: Теперь Python сбрасывает конфигурацию пути, если ему не удается импортировать кодеки Python для файловой системы и кодировки stdio.

  • bpo-38013: Разрешить параметры с именами async_generator_athrow().throw(...) и asyncio.run() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38124: Исправьте ошибку off-by-one в PyState_AddModule, которая могла привести к выходу за границы памяти.

  • bpo-38116: Модуль select теперь совместим с PEP-384 и больше не имеет статического состояния

  • bpo-38113: модуль ast обновлен до PEP-384 и удалены все статики

  • bpo-38076: Модуль struct теперь совместим с PEP-384

  • bpo-38075: Модуль random теперь совместим с PEP-384

  • bpo-38074: модуль zlib стал совместим с PEP-384

  • bpo-38073: Обеспечьте совместимость модуля расширения pwd с PEP-384

  • bpo-38072: модуль grp стал совместим с PEP-384

  • bpo-38069: Сделать _posixsubprocess совместимым с PEP-384

  • bpo-38071: Обеспечьте совместимость модуля расширения termios с PEP-384

  • bpo-38005: Исправлено сравнение и создание InterpreterID и ChannelID.

  • bpo-36946: Исправление возможного переполнения знаковых целых чисел при работе с фрагментами. Исправление от hongweipeng.

  • bpo-37994: Исправлено замалчивание произвольных ошибок при неудачном поиске атрибутов на нескольких сайтах. Замалчиваться должна только ошибка AttributeError.

  • bpo-8425: Оптимизация set difference_update для случая, когда другой набор намного больше базового. (Предложено Евгением Капуном, код предоставлен Мишелем Орру).

  • bpo-37966: Реализация is_normalized() была значительно ускорена для строк, которые не нормализованы, за счет применения полного алгоритма нормализации-быстрой проверки из стандарта Unicode.

  • bpo-37947: Корректно настраивает уровень рекурсии при генерации symtable для именованных выражений. Исправление от Pablo Galindo.

  • bpo-37812: Разрешить параметры с именами CHECK_SMALL_INT и Object/longobject.c с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37751: Разрешить параметры с именами codecs.lookup() и encodings.normalize_encoding() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37830: Разрешить параметры с именами break и continue с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20490: Улучшение сообщения об ошибке импорта для частично инициализированного модуля при круговом импорте from - автор Энтони Соттиле.

  • bpo-37840: Разрешить параметры с именами sq_item и bytearray с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37802: Разрешить параметры с именами PyLong_FromUnsignedLong() и PyLong_FromUnsignedLongLong() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37409: Убедитесь, что явный относительный импорт из интерактивных сессий и скриптов (не имеющих родительского пакета) всегда вызывает ImportError, а не рассматривает текущий модуль как пакет. Исправление Бена Льюиса.

  • bpo-32912: Разрешить параметры с именами bpo-32912 и SyntaxWarning с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37757: Разрешить параметры с именами PEP 572 и SyntaxError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Подкласс TargetScopeError, первоначально предложенный в PEP, был удален в пользу того, чтобы просто выдавать обычные синтаксические ошибки для запрещенных случаев.

  • bpo-36279: Исправьте потенциальное использование неинициализированной памяти в os.wait3().

  • bpo-36311: Декодирование байтовых объектов размером более 2 Гбайт стало быстрее и больше не приводит к ошибкам, когда многобайтовые символы пересекают границу чанка.

  • bpo-34880: Разрешить параметры с именами assert и AssertionError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37340: Разрешить параметры с именами free_list и LOAD_METHOD с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37648: Разрешить параметры с именами list.__contains__() и tuple.__contains__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37444: Разрешить параметры с именами builtins.__import__() и importlib.__import__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37619: Разрешить параметры с именами __add__ = str.__add__ и int с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37593: Поменяйте местами параметры posonlyargs и args в конструкторе узлов ast.parameters.

  • bpo-37543: Оптимизирован pymalloc для сборки без PGO.

  • bpo-37537: Вычисление выделенных блоков pymalloc внутри _Py_GetAllocatedBlocks(). Это замедляет работу _Py_GetAllocatedBlocks(), но дает небольшое ускорение при выполнении _PyObject_Malloc() и _PyObject_Free().

  • bpo-37467: Разрешить параметры с именами sys.excepthook() и PyErr_Display() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37433: Исправление индикатора SyntaxError, печатающего слишком много пробелов для многострочных строк - автор Anthony Sottile.

  • bpo-37417: bytearray.extend() теперь корректно обрабатывает ошибки, возникающие во время итерации. Исправление авторства Брандта Бухера.

  • bpo-37414: Разрешить параметры с именами sys.callstats() и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37392: Разрешить параметры с именами sys.getcheckinterval() и sys.setcheckinterval() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37388: Разрешить параметры с именами open() и str.encode() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    По умолчанию, для лучшей производительности, аргумент errors проверяется только при первой ошибке кодирования/декодирования, а аргумент encoding иногда игнорируется для пустых строк.

  • bpo-37348: Оптимизировано декодирование короткой ASCII-строки с помощью кодеков UTF-8 и ascii. b"foo".decode() работает примерно на 15% быстрее. Исправление от Inada Naoki.

  • bpo-24214: Улучшена поддержка обработчика ошибок surrogatepass в инкрементных декодерах UTF-8 и UTF-16.

  • bpo-37330: Разрешить параметры с именами open() и io.open() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35224: Разрешить параметры с именами {k: v for ...} и k с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37316: Разрешить параметры с именами PySys_Audit() и mmap.mmap с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37300: Удалите ненужный Py_XINCREF в classobject.c.

  • bpo-37269: Исправлена ошибка в оптимизаторе peephole, из-за которой некорректно обрабатывались константные условия с бинарными операторами. Исправление от Пабло Галиндо.

  • bpo-20443: Python теперь получает абсолютный путь к имени файла скрипта, указанному в командной строке (например, «python3 script.py»): атрибут __file__ модуля __main__ и sys.path[0] становятся абсолютными, а не относительными путями.

  • bpo-37257: Python’s small object allocator (obmalloc.c) теперь позволяет (не более чем) одной пустой арене оставаться доступной для немедленного повторного использования, не возвращая ее в ОС. Это предотвращает трэшинг в простых циклах, где арена может быть создана и уничтожена заново на каждой итерации.

  • bpo-37231: Разрешить параметры с именами __mul__ и x * y с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36974: Реализованы отдельные функции vectorcall для каждого соглашения о вызове встроенных функций и методов. Это улучшает производительность вызовов.

  • bpo-37213: Корректная обработка отрицательных смещений строк в оптимизаторе глазок. Исправление от Пабло Галиндо.

  • bpo-37219: Устранена ошибочная оптимизация для различий пустых множеств.

  • bpo-15913: Разрешить параметры с именами PyBuffer_SizeFromFormat() и struct.calcsize() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36922: Разрешить параметры с именами Py_TPFLAGS_METHOD_DESCRIPTOR и function с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36974: Разрешить параметры с именами tp_vectorcall_offset и super().__call__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37160: threading.get_native_id() теперь также поддерживает NetBSD.

  • bpo-37077: Добавьте поддержку threading.get_native_id() для AIX. Исправление от M. Felt

  • bpo-36781: sum() был оптимизирован для булевых значений.

  • bpo-34556: Добавьте --upgrade-deps в модуль venv. Автор патча: Cooper Ry Lees

  • bpo-20523: pdb.Pdb поддерживает ~/.pdbrc в Windows 7. Патч от Тима Хоппера и Дэна Лидрал-Портера.

  • bpo-35551: Обновлены кодировки: - Удалена кодировка «tis260», которая была псевдонимом для несуществующего кодека «tactis». - Добавлена кодировка «mac_centeuro» в качестве псевдонима для кодировки mac_latin2.

  • bpo-19072: Декоратор classmethod теперь может обертывать другие дескрипторы, такие как объекты свойств. Адаптировано из патча, написанного Грэмом Дамплтоном.

  • bpo-27575: Улучшение скорости пересечения dictview за счет прямого использования логики пересечения множеств. Исправление от Дэвида Су.

  • bpo-30773: Запретите параллельное выполнение aclose() / asend() / athrow(). Исправьте ag_running, чтобы отразить фактический статус работы AG.

Библиотека

  • bpo-36589: Разрешить параметры с именами curses.update_lines_cols() и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38807: Разрешить параметры с именами TypeError и os.path.join() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38724: Добавьте repr для объектов subprocess.Popen. Исправление Андрея Дорощенко.

  • bpo-38786: pydoc теперь распознает и разбирает HTTPS-адреса. Исправление от python273.

  • bpo-38785: Разрешить параметры с именами __init__ и asyncio.Future с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38723: Разрешить параметры с именами pdb и io.open_code() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27805: Разрешить открывать трубы и другие неискомые файлы в режиме добавления с помощью open().

  • bpo-38438: Разрешить параметры с именами argparse и nargs="*" с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38761: WeakSet теперь зарегистрирован как collections.abc.MutableSet.

  • bpo-38716: logging: измените RotatingHandler namer и rotator на атрибуты уровня класса. Это не позволит __init__ устанавливать их в None в случае, если подкласс определяет их одноименными методами.

  • bpo-38713: Разрешить параметры с именами os.P_PIDFD и os.waitid() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38692: Добавьте asyncio.PidfdChildWatcher, специфическую для Linux реализацию дочернего наблюдателя, который опрашивает дескрипторы файлов процесса.

  • bpo-38692: Разрешить параметры с именами pidfd_open и os.pidfd_open() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38602: Разрешить параметры с именами F_OFD_GETLK и F_OFD_SETLK с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38334: Исправлен поиск назад на зашифрованном zipfile.ZipExtFile.

  • bpo-38312: Разрешить параметры с именами curses.get_escdelay() и curses.set_escdelay() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38586: Теперь fileConfig() корректно устанавливает .name загруженных обработчиков.

  • bpo-38565: Добавьте новый метод cache_parameters() для functools.lru_cache(), чтобы улучшить поддержку pickling.

  • bpo-34679: asynci.ProactorEventLoop.close() теперь вызывает signal.set_wakeup_fd() только в главном потоке.

  • bpo-31202: Регистр, которому соответствует результат pathlib.WindowsPath.glob(), теперь является регистром шаблона для литеральных частей.

  • bpo-36321: Удаление неправильно написанного атрибута. В журнале изменений версии 3.8 было отмечено, что этот атрибут будет удален в версии 3.9.

  • bpo-38521: Исправлено ошибочное сравнение равенств в statistics.NormalDist().

  • bpo-38493: Разрешить параметры с именами CLD_KILLED и CLD_STOPPED с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38478: Исправлена ошибка в inspect.signature.bind(), которая приводила к ошибке при обработке аргумента с ключевым словом, имеющим то же имя, что и позиционный параметр. Исправление от Пабло Галиндо.

  • bpo-33604: Разрешить параметры с именами hmac.new и hmac.HMAC с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38378: Параметры out и in из os.sendfile() были переименованы в out_fd и in_fd.

  • bpo-38417: Добавлена поддержка установки umask в дочернем процессе в модуль subprocess на POSIX-системах.

  • bpo-38449: Отмените PR 15522, который вносит регрессию в mimetypes.guess_type() из-за неправильной обработки имен файлов в качестве урлов.

  • bpo-38431: Разрешить параметры с именами __repr__ и dataclasses.InitVar с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38109: Разрешить параметры с именами stat.S_IFDOOR и stat.S_IFPORT с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38422: Уточнение докстрок суффикса(ов) pathlib

  • bpo-38405: Вложенные подклассы typing.NamedTuple теперь можно выбирать.

  • bpo-38332: Разрешить параметры с именами KeyError и _encoded_words.decode() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38371: Разрешить параметры с именами split() и _tkinter.TkappType с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38341: Разрешить параметры с именами smtplib.SMTPNotSupportedError и smtplib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38319: sendfile(), используемая в модулях socket и shutil, вызывала ошибку OverflowError для файлов >= 2 Гбайт на 32-битных архитектурах. (исправление от Giampaolo Rodola)

  • bpo-38242: Верните новый Asyncio Streams API

  • bpo-13153: Для преобразования между строками Python и объектами Tcl теперь используется родная кодировка ОС. Это позволяет отображать, копировать и вставлять в буфер обмена эмодзи и другие не-BMP символы. Преобразование строк из Tcl в Python и обратно теперь никогда не приводит к ошибкам (за исключением MemoryError).

  • bpo-38019: Корректная обработка паузы/возобновления чтения закрытой asyncio unix трубы.

  • bpo-38163: Теперь дочерние мки будут определять свой тип как синхронный или асинхронный, асинхронные дочерние мки будут AsyncMocks, а синхронные дочерние мки будут MagicMock или Mock (в зависимости от их родительского типа).

  • bpo-38161: Удаляет _AwaitEvent из AsyncMock.

  • bpo-38216: Разрешить параметры с именами http.client и bpo-30458 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28286: Откажитесь от неявного открытия GzipFile для записи. Всегда указывайте аргумент mode для записи.

  • bpo-38108: Любые синхронные магические методы на AsyncMock теперь возвращают MagicMock. Любые асинхронные магические методы на MagicMock теперь возвращают AsyncMock.

  • bpo-38265: Разрешить параметры с именами os.pread() и Py_ssize_t с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38112: compileall имеет более высокий предел рекурсии по умолчанию и новые аргументы командной строки для работы с путями, обработки симлинков и нескольких уровней оптимизации.

  • bpo-38248: asyncio: Исправление непоследовательной немедленной отмены задачи

  • bpo-38237: Аргументы для встроенной функции pow стали более описательными. Теперь их можно передавать в качестве ключевых слов.

  • bpo-34002: Повышение эффективности части почтового пакета за счет замены цикла while-pop на цикл for, использования isdisjoint вместо set intersections.

  • bpo-38191: Разрешить параметры с именами NamedTuple и TypedDict с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38155: Разрешить параметры с именами __all__ и datetime с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38185: Исправлено нечувствительное к регистру сравнение строк при индексации sqlite3.Row.

  • bpo-38136: Изменяет счетчик вызовов AsyncMock и счетчик ожиданий на два разных счетчика. Теперь счетчик await count считает только время ожидания корутины, а не время ее вызова, и наоборот. Обновите документацию по этому вопросу.

  • bpo-37828: Исправьте имя mock по умолчанию в исключениях unittest.mock.Mock.assert_called(). Исправление подготовлено Абрахамом Торисом Крузом.

  • bpo-38175: Исправление утечки памяти при сравнении объектов sqlite3.Row.

  • bpo-33936: _hashlib больше не вызывает устаревшую функцию инициализации OpenSSL с OpenSSL 1.1.0+.

  • bpo-34706: Сохранение подклассификации в inspect.Signature.from_callable.

  • bpo-38153: Имена алгоритмов хэширования из OpenSSL теперь нормализованы в соответствии с соглашениями об именовании в Python. Например, OpenSSL использует sha3-512 вместо sha3_512 или blake2b512 вместо blake2b.

  • bpo-38115: Исправление ошибки в dis.findlinestarts(), когда она возвращала недопустимые смещения байткода. Документирование того, что co_lnotab объекта кода может содержать недопустимые смещения байткода.

  • bpo-38148: Добавьте слоты в транспортные классы asyncio, что может уменьшить использование памяти.

  • bpo-38142: Модуль расширения _hashlib OpenSSL wrapper теперь совместим с PEP-384.

  • bpo-9216: конструкторы hashlib теперь поддерживают флаг usedforsecurity, сигнализирующий о том, что алгоритм хэширования не используется в контексте безопасности.

  • bpo-36991: Исправление потенциально некорректного исключения AttributeError, сопровождающего ZipFile.extract() в некоторых неподдерживаемых ситуациях с ошибками ввода.

  • bpo-38134: Удалите устаревшую копию PBKDF2_HMAC_fast. Все поддерживаемые версии OpenSSL содержат быструю реализацию.

  • bpo-38132: Обертка хэшлиба OpenSSL использует более простую реализацию. Исчезло несколько макросов и бессмысленных кэшей. Имя хэша теперь берется из EVP OpenSSL. Имя алгоритма осталось прежним, только теперь оно всегда в нижнем регистре.

  • bpo-38008: Исправьте проверку родительского класса в протоколах, чтобы правильно определять модуль, предоставляющий встроенный протокол, вместо того, чтобы считать, что все они происходят из модуля collections.abc.

  • bpo-34037: Разрешить параметры с именами asyncio и loop.shutdown_default_executor() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37405: Исправлена ошибка регрессии для socket.getsockname() для сокетов семейства адресов AF_CAN, не относящихся к CAN_ISOTP, с возвратом 1 кортежа вместо строки.

  • bpo-38121: Обновите имена параметров функций в importlib.metadata в соответствии с изменениями в выпуске 0.22 importlib_metadata.

  • bpo-38110: Реализация os.closewalk() теперь использует API libc fdwalk() на платформах, где он доступен.

  • bpo-38093: Исправляет AsyncMock, чтобы он не падал при использовании с AsyncContextManagers или AsyncIterators.

  • bpo-37488: Разрешить параметры с именами datetime.utctimetuple() и datetime.utcnow() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35640: Разрешить параметры с именами path-like object и directory с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38086: Обновите importlib.metadata с изменениями из importlib_metadata 0.21.

  • bpo-37251: Разрешить параметры с именами __code__ и __await__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38037: Исправьте счетчики ссылок в модуле signal.

  • bpo-38066: Скрываем внутренние методы asyncio.Stream: feed_eof(), feed_data(), set_exception() и set_transport().

  • bpo-38059: inspect.py теперь использует sys.exit() вместо exit()

  • bpo-38049: Добавлен интерфейс командной строки для модуля ast.

  • bpo-37953: Разрешить параметры с именами typing и __hash__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38026: Разрешить параметры с именами inspect.getattr_static() и isinstance с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35923: Разрешить параметры с именами importlib.machinery.BuiltinImporter и loader._ORIGIN с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38010: Разрешить параметры с именами importlib.metadata и importlib_metadata с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38006: weakref.WeakValueDictionary определяет локальную функцию remove(), используемую в качестве обратного вызова для слабых ссылок. Эта функция была создана с закрытием. Измените реализацию, чтобы избежать закрытия.

  • bpo-37995: В ast.dump() добавлена опция indent, позволяющая выводить многострочные отступы.

  • bpo-34410: Исправлен сбой в итераторе tee() при повторном входе в него. Теперь в этом случае возникает ошибка RuntimeError.

  • bpo-37140: Исправление регрессии ctypes в Python 3.8. Когда ctypes.Structure передается в функцию копированием, внутренние компоненты ctypes создавали временный объект, что приводило к двойному вызову финализатора структуры (__del__). Семантика Python требует, чтобы финализатор вызывался ровно один раз. Исправьте ctypes internals, чтобы финализатор больше не вызывался дважды.

  • bpo-37587: _json.scanstring теперь работает в 3 раза быстрее, если в строке JSON много символов с экранированием обратным слешем.

  • bpo-37834: Предотвращение исключения shutil.rmtree при сборке на системе, отличной от Windows, без поддержки системного вызова fd, например, на старых версиях macOS.

  • bpo-10978: Семафоры и BoundedSemaphores теперь могут освобождать более одного ожидающего потока за раз.

  • bpo-37972: Разрешить параметры с именами unittest.mock.call и TypeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    call().foo().__getitem__('bar')

    Патч от blhsing

  • bpo-37965: Исправьте предупреждение компилятора C, вызванное distutils.ccompiler.CCompiler.has_function.

  • bpo-37964: Разрешить параметры с именами F_GETPATH и fcntl с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37960: repr() буферизованных и текстовых потоков теперь глушит только ожидаемые исключения при получении значения атрибутов «name» и «mode».

  • bpo-37961: Добавьте поле total_nframe к трассам, собранным модулем tracemalloc. Это поле указывает на исходное количество кадров до того, как они были усечены.

  • bpo-37951: Большинство функций модуля subprocess теперь снова работают в субинтерпретаторах. Только preexec_fn ограничена в субинтерпретаторах.

  • bpo-36205: Исправьте реализацию rusage функции time.process_time(), чтобы она корректно сообщала сумму системного и пользовательского процессорного времени.

  • bpo-37950: Исправьте ast.dump() при вызове с неполностью инициализированным узлом.

  • bpo-34679: Восстанавливает инстанцирование циклов событий Windows IOCP из неосновного потока.

  • bpo-36917: Разрешить параметры с именами ast.NodeVisitor.visit_Constant() и visit_Num() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37798: Обновите test_statistics.py, чтобы проверить, что модуль статистики хорошо работает как в реализации на C, так и на Python. Исправление от Donghee Na

  • bpo-26589: Добавлен новый код состояния в модуль http: 451 UNAVAILABLE_FOR_LEGAL_REASONS

  • bpo-37915: Разрешить параметры с именами datetime.timezone и datetime.tzinfo с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32554: Откажитесь от вызова random.seed() для хэшей произвольных типов.

  • bpo-9938: Разрешить параметры с именами exit_on_error и ArgumentParser с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37851: Модуль faulthandler больше не выделяет свой альтернативный стек при запуске Python. Теперь стек выделяется только при первом использовании faulthandler.

  • bpo-32793: Исправление дублирования отладочного сообщения при вызове smtplib.SMTP.connect().

  • bpo-37885: venv: Не генерировать предупреждение о неустановленной переменной при деактивации.

  • bpo-37868: Исправьте dataclasses.is_dataclass, когда дается экземпляр, который никогда не вызывает ошибку AttributeError в __getattr__. То есть объект, который возвращает что-то для __dataclass_fields__, даже если это не класс данных.

  • bpo-37811: Разрешить параметры с именами socket и socket.connect(address) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37863: Оптимизации для Fraction.__hash__, предложенные Тимом Питерсом.

  • bpo-21131: Разрешить параметры с именами faulthandler.register(chain=True) и SIGSTKSZ*2 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37798: Добавьте C fastpath для statistics.NormalDist.inv_cdf() Исправление от Donghee Na

  • bpo-37804: Удалите устаревший метод threading.Thread.isAlive(). Исправление от Donghee Na.

  • bpo-37819: Добавьте Fraction.as_integer_ratio(), чтобы найти соответствующие методы в bool, int, float и decimal.

  • bpo-14465: Добавьте функцию xml.etree.ElementTree.indent() для красивой печати XML-деревьев. Внесено Стефаном Бехнелем.

  • bpo-37810: Разрешить параметры с именами difflib и ? с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37772: В zipfile.Path при добавлении неявных каталогов убедитесь, что добавляются предковые каталоги и исключаются дубликаты.

  • bpo-18578: Разрешить параметры с именами test.bytecode_helper и test.support.bytecode_helper с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37785: Исправьте предупреждения xgettext в argparse.

  • bpo-34488: Разрешить параметры с именами writelines() и io.BytesIO с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37449: Разрешить параметры с именами ensurepip и importlib.resources.read_binary() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28292: Пометьте вспомогательные функции calendar.py как приватные. Это следует руководству PEP 8 для поддержания стилевых соглашений в модуле и устраняет известный случай путаницы пользователей.

  • bpo-18049: Добавьте определение THREAD_STACK_SIZE для AIX в Python/thread_pthread.h Размер стека потока по умолчанию приводил к сбоям при использовании ограничения рекурсии по умолчанию Исправление от M Felt

  • bpo-37742: API logging.getLogger() теперь возвращает корневой логгер при передаче имени „root“, тогда как раньше он возвращал не корневой логгер с именем „root“. Это может повлиять на случаи, когда пользовательский код явно хочет получить не корневой логгер с именем „root“ или инстанцирует логгер с помощью logging.getLogger(__name__) в каком-то модуле верхнего уровня под названием „root.py“.

  • bpo-37738: Разрешить параметры с именами addch(str, color_pair) и setcchar() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37723: Исправление регрессии производительности при разборе регулярных выражений с огромными наборами символов. Исправление от Yann Vaginay.

  • bpo-35943: Функция PyImport_GetModule() теперь гарантирует, что любой возвращаемый ею модуль полностью инициализирован. Исправление Джоанны Нанджекье.

  • bpo-32178: Разрешить параметры с именами email и : с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37268: Модуль parser устарел и будет удален в будущих версиях Python.

  • bpo-11953: Завершение кодов ошибок WSA* в socket.

  • bpo-37685: Разрешить параметры с именами datetime.timedelta и datetime.timezone с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37697: Разрешить параметры с именами importlib.metadata и importlib_metadata 0.19 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37695: Исправление сообщения об ошибке curses.unget_wch(). Исправление Энтони Соттила.

  • bpo-37689: Разрешить параметры с именами is_relative_to() и PurePath с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29553: Исправлено argparse.ArgumentParser.format_usage() для взаимоисключающих групп. Исправление Эндрю Нестера.

  • bpo-37691: Позволяет math.dist() принимать координаты в виде последовательностей (или итераций), а не просто кортежей.

  • bpo-37685: Разрешить параметры с именами __eq__ и __lt__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37354: Сделайте сценарий Activate.ps1 Powershell статическим, чтобы его можно было подписать.

  • bpo-37664: Обновление колес в комплекте с ensurepip (pip 19.2.3 и setuptools 41.2.0)

  • bpo-37663: Приведите к единообразию скрипты активации оболочки venv, всегда используя __VENV_PROMPT__.

  • bpo-37642: Позволяет чистой Python-реализации datetime.timezone представлять субминутные смещения, близкие к границам минимума и максимума, в частности, в диапазонах (23:59, 24:00) и (-23:59, 24:00). Исправление от Ngalim Siregar

  • bpo-36161: Разрешить параметры с именами posix и ttyname_r с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36324: Сделайте внутренние атрибуты для statistics.NormalDist() частными.

  • bpo-37555: Разрешить параметры с именами NonCallableMock._call_matcher и _Call с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29446: Заставьте from tkinter import * импортировать только ожидаемые объекты.

  • bpo-16970: Добавление ошибки при передаче недопустимого значения в nargs Исправление от Robert Leenders

  • bpo-34443: Разрешить параметры с именами enum и __qualname с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37491: Исправление IndexError при разборе заголовков электронной почты с неожиданно заканчивающимися строковыми значениями без кавычек. Исправление от Abhilash Raj.

  • bpo-37587: Сделать json.loads быстрее для длинных строк. (Исправлено Марко Паолини)

  • bpo-18378: Распознать «UTF-8» как допустимое значение для LC_CTYPE в locale._parse_localename.

  • bpo-37579: Разрешить параметры с именами NotImplemented и __eq__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21478: Запись вызовов родителя при присоединении автоспецифицированного объекта к макету с помощью unittest.mock.attach_mock(). Исправление от Karthikeyan Singaravelan.

  • bpo-37531: «python3 -m test -jN –timeout=TIMEOUT» теперь убивает рабочий процесс, если он работает дольше TIMEOUT секунд.

  • bpo-37482: Исправьте сериализацию отображаемого имени в полях адреса отправителя или получателя, содержащих как кодированные слова, так и специальные символы.

  • bpo-36993: Улучшено сообщение об ошибке для поврежденных zip-файлов с плохими дополнительными данными zip64. Исправление от Daniel Hillier.

  • bpo-37502: pickle.loads() больше не вызывает ошибку TypeError, когда аргумент buffers установлен в None

  • bpo-37520: Исправлено поведение zipfile.Path.parent, когда объект пути идентифицирует подкаталог.

  • bpo-18374: Разрешить параметры с именами .col_offset и ast.BinOp с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37424: Исправляет возможное зависание при использовании таймаута на subprocess.run() при захвате вывода. Если дочерний процесс порождал своих собственных дочерних процессов или иным образом связывал свои дескрипторы stdout или stderr с другим процессом, мы могли зависнуть после достижения таймаута и убийства нашего дочернего процесса при попытке чтения конечного вывода из труб.

  • bpo-37421: Разрешить параметры с именами multiprocessing.util.get_temp_dir() и get_temp_dir() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37481: Разрешить параметры с именами bdist_wininst и bdist_wheel с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37479: Разрешить параметры с именами Enum.__str__ и Enum.__format__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37440: http.client теперь включает аутентификацию TLS 1.3 после рукопожатия для контекста по умолчанию или если в HTTPSConnection передан файл cert_file.

  • bpo-37437: Обновите версию vendorized expat до 2.2.7.

  • bpo-37428: SSLContext.post_handshake_auth = True больше не устанавливает флаг проверки SSL_VERIFY_POST_HANDSHAKE для клиентских соединений. Хотя эта опция документирована как игнорируемая для клиентов, OpenSSL неявно включает проверку цепочки сертификатов, когда флаг установлен.

  • bpo-37420: Разрешить параметры с именами os.sched_setaffinity() и mask с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37412: Разрешить параметры с именами os.getcwdb() и PEP 529 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37406: Модуль sqlite3 теперь выдает ошибку TypeError, а не ValueError, если тип аргумента операции не str: execute(), executemany() и вызов соединения.

  • bpo-29412: Исправление ошибки IndexError при разборе неожиданно заканчивающегося значения заголовка. Исправление от Abhilash Raj.

  • bpo-36546: Аргумент dist для функции statistics.quantiles() теперь является только позиционным. Текущее название не отражает того, что аргументом может быть как набор данных, так и распределение. Пометка параметра как позиционного позволяет избежать путаницы и дает возможность изменить название позже.

  • bpo-37394: Исправлена ошибка, приводившая к отказу модуля queue, если модуль ускорителя был недоступен. Исправление от Пабло Галиндо.

  • bpo-37376: Разрешить параметры с именами pprint и types.SimpleNamespace с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26967: Разрешить параметры с именами ArgumentParser и allow_abbrev=False с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37212: unittest.mock.call() теперь сохраняет порядок аргументов ключевых слов в выводе repr. Исправление от Karthikeyan Singaravelan.

  • bpo-37372: Исправление ошибки распаковки объектов datetime.time из Python 2 с seconds>=24. Исправление от Джастина Бланшара.

  • bpo-37345: Разрешить параметры с именами hasattr(socket, 'IPPROTO_UDPLITE') и socket.IPPROTO_UDPLITE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37358: Оптимизация functools.partial с помощью vectorcall.

  • bpo-37347: Разрешить параметры с именами sqlite3.Connection.create_aggregate() и sqlite3.Connection.create_function() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37163: Аргумент obj в dataclasses.replace() теперь только позиционный.

  • bpo-37085: Добавляет в модуль сокета необязательные константы Linux SocketCAN Broadcast Manager, используемые в качестве флагов для настройки поведения BCM. Исправление Карла Динга.

  • bpo-37328: HTMLParser.unescape удален. Он был недокументированным и устаревшим, начиная с Python 3.4.

  • bpo-37305: Добавьте .webmanifest -> application/manifest+json в список распознаваемых типов файлов и заголовков типов содержимого

  • bpo-37320: Разрешить параметры с именами aifc.openfp() и aifc.open() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37315: Разрешить параметры с именами 5.0 и math.factorial() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37312: Разрешить параметры с именами _dummy_thread и dummy_threading с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33972: Электронное письмо с одной частью, но типом содержимого multipart/*, больше не вызывает ошибку AttributeError.

  • bpo-37280: Использование пула потоков для чтения из файла для режима отката sendfile.

  • bpo-37279: Исправление поддержки asyncio sendfile, когда sendfile отправляет дополнительные данные в режиме fallback.

  • bpo-19865: Разрешить параметры с именами ctypes.create_unicode_buffer() и wchar_t с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37266: В субинтерпретаторе порождение потока демона теперь вызывает исключение. Потоки демонов никогда не поддерживались в субинтерпретаторах. Ранее финализация субинтерпретатора завершалась с фатальной ошибкой Python, если поток демона был все еще запущен.

  • bpo-37210: Разрешить параметры с именами pickle и _pickle с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21872: Исправление lzma: модуль неполноценно распаковывает данные. При распаковке файла формата FORMAT_ALONE, не имеющего маркера конца, иногда не удавалось вывести от одного до десятка последних байт. Исправление от Ma Lin.

  • bpo-35922: Разрешить параметры с именами RobotFileParser.crawl_delay() и RobotFileParser.request_rate() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35766: Измените формат feature_version на кортеж (major, minor).

  • bpo-36607: Разрешить параметры с именами RuntimeError и asyncio.all_tasks() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-18748: Разрешить параметры с именами _pyio.IOBase и closed с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36402: Исправление состояния гонки при завершении работы Python при ожидании потоков. Ждите, пока состояние потоков Python всех недемонских потоков не будет удалено (join all non-daemon threads), а не просто ждите, пока недемонские потоки Python завершатся.

  • bpo-37206: Значения по умолчанию, которые не могут быть представлены как объекты Python, больше не представляются неправильно как None в сигнатурах функций.

  • bpo-37111: Разрешить параметры с именами encoding и errors с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-12144: Разрешить параметры с именами expires и CookieJar.make_cookies() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34886: Разрешить параметры с именами subprocess.run() и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37173: Сообщение об исключении для inspect.getfile() теперь корректно сообщает о переданном классе, а не о модуле builtins.

  • bpo-37178: Приведите math.perm() к виду с одним аргументом, который означает то же самое, что и math.factorial().

  • bpo-37178: Для math.perm(n, k) пусть k по умолчанию равно n, что дает тот же результат, что и факториал.

  • bpo-37165: Переделал _collections._count_elements для использования клиники аргументов.

  • bpo-34767: Разрешить параметры с именами collections.deque и asyncio.Lock с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37158: Ускорение работы statistics.fmean() за счет перехода от функции к генератору.

  • bpo-34282: Убрать метод Enum._convert, устаревший в версии 3.8.

  • bpo-37150: Разрешить параметры с именами argparse._ActionsContainer.add_argument и type с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28724: Разрешить параметры с именами socket.send_fds() и socket.recv.fds() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35621: Поддержка запуска подпроцессов asyncio при выполнении цикла событий в потоке на UNIX.

  • bpo-36520: Длинные заголовки писем с символами UTF-8 теперь правильно кодируются при сворачивании. Исправление Джеффри Кинчера.

  • bpo-30835: Исправлена ошибка в разборе электронной почты, когда сообщение с недопустимыми байтами в content-transfer-encoding многочастного сообщения могло вызвать ошибку AttributeError. Исправление Эндрю Доннеллана.

  • bpo-31163: методы rename и replace экземпляра pathlib.Path теперь возвращают новый экземпляр Path.

  • bpo-25068: urllib.request.ProxyHandler теперь переводит ключи переданного словаря в нижний регистр.

  • bpo-26185: Разрешить параметры с именами repr() и ZipInfo с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21315: Заголовки электронной почты, содержащие кодированные слова RFC2047, разбираются, несмотря на отсутствие пробельных символов, и дефект зарегистрирован. Отсутствие пробельных символов после кодированных слов также зарегистрировано как дефект.

  • bpo-31904: Перенос test_datetime на VxWorks: пропуск тестов zoneinfo на VxWorks

  • bpo-35805: Добавьте парсер для заголовка Message-ID и добавьте его в стандартный HeaderRegistry. Это должно предотвратить складывание Message-ID с использованием кодированных слов RFC 2048.

  • bpo-36871: Убедитесь, что при проверке mock-объекта на вызовы методов используется подпись метода, а не подпись конструктора класса. Исправление от Karthikeyan Singaravelan.

  • bpo-35070: posix.getgrouplist() теперь работает корректно, если пользователь принадлежит к дополнительным группам NGROUPS_MAX. Исправление Джеффри Кинчера.

  • bpo-31783: Исправление состояния гонки в ThreadPoolExecutor, когда рабочие потоки создаются при завершении работы интерпретатора.

  • bpo-36582: Разрешить параметры с именами UserString.encode() и bytes с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32424: Утрачиваем xml.etree.ElementTree.Element.copy() в пользу copy.copy().

    Патч Гордона П. Хемсли

  • bpo-36564: Исправление бесконечного цикла в логике сворачивания заголовков электронной почты, который срабатывал, когда максимальная длина_строки_политики электронной почты была недостаточно длинной, чтобы включить в сообщение необходимую разметку и любые значения. Исправление от Paul Ganssle

  • bpo-36543: Удалены методы Element.getchildren(), Element.getiterator() и ElementTree.getiterator() и модуль xml.etree.cElementTree.

  • bpo-36409: Удалите старый API plistlib, устаревший в Python 3.4

  • bpo-36302: distutils сортирует списки исходных файлов так, чтобы файлы Extension .so по умолчанию собирались более воспроизводимо

  • bpo-36250: Разрешить параметры с именами ValueError и signal с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36046: Разрешить параметры с именами user и group с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32627: Исправление ошибки компиляции при конфликте включенных заголовков _uuid.

  • bpo-35800: Утратить smtpd.MailmanProxy, готовый к удалению в будущем.

  • bpo-35168: shlex.shlex.punctuation_chars теперь является свойством, доступным только для чтения.

  • bpo-8538: Разрешить параметры с именами --foo и --no-foo с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20504: Разрешить параметры с именами cgi и Content-Length с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25988: Разрешить параметры с именами collections.abc и collections с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-11122: Distutils не будет проверять наличие rpmbuild только в указанных путях.

  • bpo-34775: Обработка разделения PurePath теперь возвращает NotImplemented вместо того, чтобы вызывать ошибку TypeError, когда передается что-то, отличное от экземпляра str или PurePath. Исправление Роджера Айуди.

  • bpo-34749: binascii.a2b_base64() теперь работает в 2 раза быстрее. Патч от Сергея Федосеева.

  • bpo-34519: Добавлены дополнительные псевдонимы для HP Roman 8. Исправление от Michael Osipov.

  • bpo-28009: Исправление uuid.getnode() на платформах с „.“ в качестве разделителя MAC Addr, а также исправление для формата MAC Addr, который опускает ведущий 0 в значениях MAC Addr. В настоящее время AIX - единственная известная платформа с такими настройками. Исправление сделано Майклом Фелтом.

  • bpo-30618: Добавить readlink(). Патч от Гиртса Фолкманиса.

  • bpo-32498: Заставил urllib.parse.unquote() принимать байты в дополнение к строкам. Исправление Стейна Карлсена.

  • bpo-33348: Разрешить параметры с именами * и ** с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32689: Обновите функцию shutil.move(), чтобы разрешить использование объектов Path в качестве исходного аргумента. Исправление Эмили Морхаус и Максвелла «5.13b» Маккиннона.

  • bpo-32820: Добавлено __format__ в классы IPv4 и IPv6. Всегда выводит полностью заполненную нулями строку. Поддерживает модификаторы b/x/n (bin/hex/родной формат). Родной формат для IPv4 - bin, родной формат для IPv6 - hex. Также поддерживает модификаторы „#“ и „_“.

  • bpo-27657: Исправьте urllib.parse.urlparse() с числовыми путями. Строка типа «path:80» теперь разбирается не как путь, а как схема («path») и путь («80»).

  • bpo-4963: Исправлено недетерминированное поведение, связанное с отображением расширения mimetypes и повторной инициализацией модуля.

Документация

  • bpo-21767: Явное упоминание поддержки abc в functools.singledispatch

  • bpo-38816: Разрешить параметры с именами fork() и fork() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38351: Модернизируйте примеры email с %-форматирования на f-строки.

  • bpo-38778: Разрешить параметры с именами RuntimeError и os.fork() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38592: Добавьте бразильский португальский в переключатель языков на сайте Python Documentation.

  • bpo-38294: Добавьте список символов, которые больше не будут экранироваться, в документацию re.escape

  • bpo-38053: Модернизирована документация по plistlib

  • bpo-26868: Исправьте пример использования PyModule_AddObject() для правильной обработки ошибок.

  • bpo-36797: Исправление неработающей ссылки в справочнике по API distutils.

  • bpo-37977: Предупреждайте сильнее и четче о небезопасности огурцов

  • bpo-37979: Добавлена ссылка на dateutil.parser.isoparse в документации по datetime.fromisoformat. Исправление от Paul Ganssle

  • bpo-12707: Утрачиваем методы info(), geturl(), getcode() в пользу свойств headers, url и status, соответственно, для HTTPResponse и addinfourl. Также устаревает атрибут code для addinfourl в пользу атрибута status. Исправление от Ashwin Ramaswami

  • bpo-37937: Разрешить параметры с именами frame.f_trace и sys.settrace() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37878: Сделать PyThreadState_DeleteCurrent() Внутренний.

  • bpo-37759: Начало редактирования Whatsnew 3.8

  • bpo-37726: Перестаньте рекомендовать getopt в руководстве по разбору аргументов командной строки и продвигайте argparse.

  • bpo-32910: Удалите специфическое для реализации поведение того, как работает деактивация venv.

  • bpo-37256: Разрешить параметры с именами Request и urllib.request с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37284: Добавить краткое примечание, указывающее на то, что любые новые sys.implementation требуемые атрибуты должны пройти через процесс PEP.

  • bpo-30088: Документировано, что конструктор mailbox.Maildir не пытается проверить корректность расположения папки maildir. Исправление Святослава Сидоренко.

  • bpo-37521: Исправьте примеры importlib, чтобы все вновь созданные модули с помощью importlib.util.module_from_spec() сразу вставлялись в sys.modules, а не после вызова loader.exec_module().

    Спасибо Бенджамину Минцу за обнаружение ошибки.

  • bpo-37456: Слеш („/“) теперь является частью синтаксиса.

  • bpo-37487: Исправьте описание индекса PyList_GetItem, чтобы он включал 0.

  • bpo-37149: Замените неработающую ссылку на справочник по Tkinter 8.5 Джона Шипмана, New Mexico Tech, ссылкой на копию archive.org.

  • bpo-37478: В описание функции os.chdir() добавлены возможные исключения.

  • bpo-34903: Документировано, что в datetime.datetime.strptime() ведущий ноль в некоторых двузначных форматах является необязательным. Исправление Майка Глина.

  • bpo-36260: Добавьте «подводные камни» распаковки в документацию модуля zipfile.

  • bpo-37004: В документацию к difflib добавлено примечание, явно предупреждающее о том, что результаты метода отношения SequenceMatcher могут зависеть от порядка входных строк.

  • bpo-36960: Реструктурирована документация datetime с целью сделать ее более удобной для пользователя и улучшить читабельность. Исправление Брэда Соломона.

  • bpo-36487: Проясните в документации по C-API, что такое «основной» интерпретатор.

  • bpo-23460: Документация по форматированию десятичных строк с помощью спецификатора :g была обновлена, чтобы отразить правильную точку отсечения экспоненциальной нотации. Автор оригинального патча - Туомас Суутари.

  • bpo-35803: Разрешить параметры с именами tempfile и path-like object с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33944: Добавлено примечание о предполагаемом использовании кода в файлах .pth.

  • bpo-34293: Исправление Doc/Makefile относительно переменной окружения PAPER и сборок PDF

  • bpo-25237: Добавьте документацию для модулей tkinter

Тесты

  • bpo-38614: Исправьте test_communicate() из test_asyncio.test_subprocess: используйте support.LONG_TIMEOUT (5 минут), а не просто 1 минуту.

  • bpo-38614: Разрешить параметры с именами test.support и LOOPBACK_TIMEOUT с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38502: Разрешить параметры с именами os.setsid() и os.killpg() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35998: Исправьте состояние гонки в test_asyncio.test_start_tls_server_1(). Ранее существовало состояние гонки между функцией test main(), которая заменяет протокол, и тестовым протоколом ServerProto, который отправляет ANSWER после получения HELLO. Теперь только функция test main() отвечает за отправку данных, ServerProto больше не отправляет данные.

  • bpo-38470: Исправление test_compileall.test_compile_dir_maxlevels() на Windows без поддержки длинных путей: создание только 3 подкаталогов вместо от 20 до 100 подкаталогов.

  • bpo-37531: По таймауту regrtest больше не пытается снова вызвать popen.communicate(): он может висеть до тех пор, пока не завершатся все дочерние процессы, использующие каналы stdout и stderr. Убейте рабочий процесс и проигнорируйте его вывод. Измените также таймаут faulthandler главного процесса с 1 минуты до 5 минут, для самых медленных билдботов Python.

  • bpo-38239: Исправление test_gdb для сборок Link Time Optimization (LTO).

  • bpo-38275: test_ssl теперь лучше справляется с отключенными версиями TLS/SSL. Криптографическая политика OpenSSL и настройки времени выполнения распознаются, и тесты для отключенных версий пропускаются. Тесты также принимают больше минимальных_версий TLS для платформ, которые переопределяют стандартные строгие настройки OpenSSL.

  • bpo-38271: Закрытые ключи для test_ssl были зашифрованы с помощью 3DES в традиционном формате PKCS#5. 3DES и алгоритм дайджеста PKCS#5 блокируются некоторыми строгими криптополитиками. Вместо этого используйте формат PKCS#8 с шифрованием AES256.

  • bpo-38270: test.support теперь имеет вспомогательную функцию для проверки доступности функции хэш-дайджеста. Несколько тестов рефакторингуются, избегая MD5 и используя вместо него SHA256. Другие тесты помечены для использования MD5 и пропускаются, когда MD5 отключен.

  • bpo-37123: Многопроцессорный тест test_mymanager() теперь также ожидает -SIGTERM, а не только exitcode 0. BaseManager._finalize_manager() посылает SIGTERM процессу менеджера, если его остановка занимает более 1 секунды, что случается на медленных билдботах.

  • bpo-38212: Многопроцессорные тесты: увеличьте таймаут test_queue_feeder_donot_stop_onexc() с 1 до 60 секунд.

  • bpo-38117: Тест с OpenSSL 1.1.1d

  • bpo-38018: Увеличение покрытия кода для multiprocessing.shared_memory.

  • bpo-37805: Добавлены тесты для json.dump(…, skipkeys=True). Исправление от Donghee Na.

  • bpo-37531: Улучшение таймаута многопроцессного regrtest: запись сообщения при убийстве рабочего процесса, отлов исключений popen.kill() и popen.wait(), установка таймаута на второй вызов popen.communicate().

  • bpo-37876: Добавьте тесты для кодека ROT-13.

  • bpo-36833: Разрешить параметры с именами PyDateTime_xxx_GET_xxx() и datetime с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37558: Исправьте обработку имен test_shared_memory_cleaned_after_process_termination

  • bpo-37526: Разрешить параметры с именами test.support.catch_threading_exception() и threading.Thread с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37421: test_concurrent_futures теперь явно останавливает экземпляр ForkServer, если он запущен.

  • bpo-37421: тесты многопроцессорности теперь останавливают экземпляр ForkServer, если он запущен: закрывают дескриптор файла «alive», чтобы попросить сервер остановиться, а затем удаляют его UNIX-адрес.

  • bpo-37421: test_distutils.test_build_ext() теперь может удалять временный каталог в Windows: не импортируйте только что собранное расширение C («xx») в текущий процесс, а тестируйте его в отдельном процессе.

  • bpo-37421: test_concurrent_futures теперь очищает мультипроцессинг, чтобы сразу удалить временные каталоги, созданные multiprocessing.util.get_temp_dir().

  • bpo-37421: test_winconsoleio больше не сливает временный файл: используйте tempfile.TemporaryFile(), чтобы удалить его по завершении теста.

  • bpo-37421: многопроцессорные тесты теперь явно вызывают _run_finalizers() для немедленного удаления временных каталогов, созданных тестами.

  • bpo-37421: Разрешить параметры с именами urlcleanup() и urlretrieve() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37472: Удалить Lib/test/outstanding_bugs.py.

  • bpo-37199: Исправление сбоев при тестировании, когда IPv6 недоступен или отключен.

  • bpo-19696: Замените устаревший метод «random.choose» на «random.choice» в файле «test_pkg_import.py».

  • bpo-37335: Удалите больше не нужный код из тестов на принудительное использование локали c

  • bpo-37421: Исправьте test_shutil, чтобы он больше не сливал временные файлы.

  • bpo-37411: Исправьте test_wsgiref.testEnviron(), чтобы она больше не зависела от переменных окружения (не выходила из строя, если установлена переменная «X»).

  • bpo-37400: Исправьте test_os.test_chown(): для получения групп используйте os.getgroups(), а не grp.getgrall(). Переименуйте также тест в test_chown_gid().

  • bpo-37359: Разрешить параметры с именами test_python_* и python3 -m test --cleanup с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37362: test_gdb больше не терпит неудачу, если получает «неожиданное» сообщение на stderr: теперь он игнорирует stderr. Цель test_gdb - проверить, что команды python-gdb.py работают так, как ожидается, а не тестировать gdb.

  • bpo-35998: Avoid TimeoutError in test_asyncio: test_start_tls_server_1()

  • bpo-37278: Исправьте test_asyncio ProactorLoopCtrlC: присоединяйтесь к потоку, чтобы предотвратить утечку запущенного потока и утечку ссылки.

  • bpo-37261: Разрешить параметры с именами test.support.catch_unraisable_exception() и unraisable с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37069: regrtest теперь использует sys.unraisablehook(), чтобы пометить тест как «измененный в окружении» (ENV_CHANGED), если он выдает «неустранимое исключение». Кроме того, в этом случае regrtest записывает в журнал предупреждение.

    Используйте python3 -m test --fail-env-changed для перехвата невыполнимых исключений в тестах.

  • bpo-37252: Разрешить параметры с именами test_close и test_events_mask_overflow с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37169: Перепишите _PyObject_IsFreed() модульные тесты.

  • bpo-37153: Разрешить параметры с именами test_venv.test_multiprocessing() и pool.terminate() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34001: Заставьте test_ssl работать с LibreSSL. LibreSSL обрабатывает минимальную и максимальную версию TLS иначе, чем OpenSSL.

  • bpo-36919: Сделайте реализацию test_source_encoding.test_issue2301 независимой. Теперь тест будет работать как для CPython, так и для IronPython.

  • bpo-30202: Разрешить параметры с именами test.test_importlib.test_abc и find_spec() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28009: Измените логику test_uuid, чтобы проверить, когда программа доступна И может быть использована для получения MACADDR в качестве основы для UUID. Исправление от M. Felt

  • bpo-34596: Возврат к причине по умолчанию, когда unittest.skip() не вызывается. Исправление от Naitree Zhu.

Построить

  • bpo-38809: В Windows скрипты сборки теперь распознают и используют python.exe из активной виртуальной среды.

  • bpo-38684: Исправьте сборку _hashlib, когда Blake2 отключен, но OpenSSL его поддерживает.

  • bpo-38468: Разрешить параметры с именами getvar() и sysconfig.get_config_var() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37415: Исправьте проверку заголовка stdatomic.h для компилятора ICC: в реализации ICC отсутствует тип atomic_uintptr_t, который необходим Python.

  • bpo-38301: В семействе Solaris мы должны обязательно использовать -D_REENTRANT. Исправление от Jesús Cea Avión.

  • bpo-36002: Разрешить параметры с именами llvm-profdata и llvm-ar с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37936: Файл .gitignore систематически сохраняет «укорененные», с непереходящим слешем, все правила, которые должны применяться к файлам в определенном месте репозитория. Раньше, когда нужный файл игнорировался в корне репозитория, мы чаще всего случайно игнорировали также файлы и каталоги с тем же именем в любом месте дерева.

  • bpo-37760: Разрешить параметры с именами Tools/unicode/makeunicodedata.py и str с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37936: Файл .gitignore больше не применяется к файлам, которые на самом деле отслеживаются в Git-репозитории. Исправление Грега Прайса.

  • bpo-37725: Измените цель makefile «clean», чтобы он также очищал данные программной оптимизации (PGO). Раньше приходилось использовать «make clean» и «make profile-removal», или «make clobber».

  • bpo-37707: Пометить некоторые отдельные тесты для пропуска при использовании –pgo. Отмеченные тесты значительно увеличивают время выполнения задачи PGO и, скорее всего, не помогут улучшить оптимизацию конечного исполняемого файла.

  • bpo-36044: Уменьшить количество юнит-тестов, выполняемых для задачи генерации PGO. Это ускоряет задачу примерно в 15 раз. Запуск полного набора юнит-тестов является медленным. Это изменение может привести к несколько менее оптимизированной сборке, так как будет выполняться не так много ветвей кода. Если вы готовы ждать более медленной сборки, старое поведение можно восстановить с помощью „./configure […] PROFILE_TASK=«-m test –pgo-extended»“. Мы не даем никаких гарантий относительно того, какой набор задач PGO приведет к более быстрой сборке. Пользователям, которым это важно, следует провести собственные бенчмарки, поскольку результаты могут зависеть от окружения, рабочей нагрузки и цепочки инструментов компилятора.

  • bpo-37468: Разрешить параметры с именами make install и wininst-*.exe с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37189: Разрешить параметры с именами PyRun_XXX() и PyRun_String() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25361: Разрешает использование инструкций SSE2 в 32-битной сборке Windows.

  • bpo-36210: Обновление обнаружения дополнительных модулей расширения для AIX. ossaudiodev и spwd не применимы для AIX и больше не сообщаются как отсутствующие. Сторонняя упаковка ncurses (с поддержкой ASIS) конфликтует с официально поддерживаемой библиотекой AIX curses, поэтому настройте AIX на использование libcurses.a. Однако пропустите попытку собрать _curses_panel.

    патч от M Felt

Windows

  • bpo-38589: Исправление ярлыка справки HTML, когда Windows не установлена на диск C

  • bpo-38453: Убедитесь, что ntpath.realpath() правильно разрешает относительные пути.

  • bpo-38519: Восстанавливает внутренние заголовки C, которые отсутствовали в пакетах nuget.org и Microsoft Store.

  • bpo-38492: Удалите pythonw.exe зависимость от среды выполнения Microsoft C++.

  • bpo-38344: Исправьте сообщение об ошибке в файле activate.bat

  • bpo-38359: Убедитесь, что программа запуска pyw.exe читает правильный ключ реестра.

  • bpo-38355: Разрешить параметры с именами ntpath.realpath и sys.executable с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38117: Обновление поставляемого OpenSSL до версии 1.1.1d

  • bpo-38092: Снижение накладных расходов при использовании многопроцессорной обработки в виртуальной среде Windows.

  • bpo-38133: Позволяет программе запуска py.exe находить установки из Microsoft Store и улучшает отображение активных виртуальных сред.

  • bpo-38114: pip.ini больше не входит в пакет Nuget.

  • bpo-32592: Установите Windows 8 в качестве минимально необходимой версии для поддержки API

  • bpo-36634: os.cpu_count() теперь возвращает активные, а не максимальные процессоры.

  • bpo-36634: venv activate.bat теперь работает, когда существующие переменные содержат символы двойных кавычек.

  • bpo-38081: Разрешить параметры с именами os.path.realpath() и 'NUL' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38087: Исправьте чувствительность к регистру в test_pathlib и test_ntpath.

  • bpo-38088: Исправляет проблему, когда distutils не находил vcruntime140.dll при установленном только наборе инструментов v142.

  • bpo-37283: Убедитесь, что настройки командной строки и unattend.xml отменяют ранее обнаруженные состояния в программе установки Windows.

  • bpo-38030: Исправление os.stat() сбоев в работе блочных устройств на Windows

  • bpo-38020: Разрешить параметры с именами os.readlink() и realpath() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37705: Улучшите реализацию winerror_to_errno().

  • bpo-37549: os.dup() больше не работает для стандартных потоков на Windows 7.

  • bpo-1311: Разрешить параметры с именами nul и exists() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-9949: Включите поддержку следующих симлинков в os.realpath().

  • bpo-37834: Разрешить параметры с именами os.lstat() и os.stat() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36266: Добавление имени модуля в форматированное сообщение об ошибке, когда происходит сбой загрузки DLL при импорте модуля в _PyImport_FindSharedFuncptrWindows(). Исправление от Srinivas Nyayapati.

  • bpo-25172: Разрешить параметры с именами crypt и ImportError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37778: Исправлены значки, используемые для ассоциаций файлов с пакетом Microsoft Store.

  • bpo-37734: Исправьте использование значений реестра для запуска Python из приложения Microsoft Store.

  • bpo-37702: Исправление утечки памяти в Windows при создании объекта SSLContext или запуске urllib.request.urlopen('https://...').

  • bpo-37672: Разрешить параметры с именами pip.ini и PIP_USER с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-10945: Официальный отказ от поддержки создания инсталляторов bdist_wininst на системах, отличных от Windows.

  • bpo-37445: Разрешить параметры с именами FORMAT_MESSAGE_IGNORE_INSERTS и FormatMessageW() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37369: Исправлен путь для sys.executable при запуске из Microsoft Store.

  • bpo-37380: Не собирайте незавершенные процессы с subprocess._active в Windows, чтобы очистить их позже. Исправление Руслана Куприева.

  • bpo-37351: Удаляет libpython38.a из стандартного дистрибутива Windows.

  • bpo-35360: Обновите сборки Windows для использования SQLite 3.28.0.

  • bpo-37267: В Windows os.dup() больше не создает наследуемый fd при работе с символьным файлом.

  • bpo-36779: Убедитесь, что time.tzname корректен в Windows, когда активная кодовая страница установлена в CP_UTF7 или CP_UTF8.

  • bpo-32587: Сделайте winreg.REG_MULTI_SZ поддерживающим строки нулевой длины.

  • bpo-28269: Разрешить параметры с именами strcasecmp() и _stricmp() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36590: Добавьте встроенную поддержку Bluetooth RFCOMM в модуль сокетов.

macOS

  • bpo-38117: Обновление OpenSSL до версии 1.1.1d в программе установки macOS.

  • bpo-38089: Переведите Azure Pipelines на последние версии VM и сделайте тесты для macOS необязательными

  • bpo-18049: Увеличьте размер стека потоков по умолчанию с 5 МБ до 16 МБ на macOS, чтобы он соответствовал размеру стека главного потока. Это позволит избежать сбоев при глубокой рекурсии в потоках.

  • bpo-34602: Избегайте сбоев в тестовом наборе на macOS, больше не вызывая resource.setrlimit для увеличения размера стека процесса во время выполнения. Изменение во время выполнения больше не требуется, поскольку интерпретатор собирается с большим размером стека по умолчанию.

  • bpo-35360: Обновите программу установки macOS для использования SQLite 3.28.0.

  • bpo-34631: Обновление OpenSSL до версии 1.1.1c в программе установки macOS.

IDLE

  • bpo-26353: Прекратите добавлять новую строку при сохранении окна оболочки IDLE.

  • bpo-4630: Добавляет опцию переключения мигания курсора IDLE для окон оболочки, редактора и вывода. Смотрите Settings, General, Window Preferences, Cursor Blink. Исправление от Zackery Spytz.

  • bpo-38598: Не пытайтесь компилировать оболочку IDLE или окна вывода

  • bpo-36698: IDLE больше не терпит неудач при записи некодируемых символов в stderr. Теперь он экранирует их обратным слешем, как обычный интерпретатор Python. Добавлено поле errors в стандартные потоки.

  • bpo-35379: При выходе из IDLE перехватывайте любую ошибку AttributeError. Одна из них возникает, когда EditorWindow.close вызывается дважды. Выводить обратную трассировку при запуске IDLE из терминала бесполезно и раздражает.

  • bpo-38183: Чтобы избежать проблем, test_idle игнорирует каталог пользовательских конфигураций. Он больше не пытается создать или получить доступ к .idlerc или любым файлам в нем. Пользователи должны запустить IDLE, чтобы обнаружить проблемы с сохранением настроек.

  • bpo-38077: IDLE больше не добавляет „argv“ в пространство имен пользователя при инициализации. Эта ошибка затрагивала только версии 3.7.4 и 3.8.0b2 - 3.8.0b4.

  • bpo-38041: Строки перезапуска оболочки теперь заполняют всю ширину окна, всегда начинаются с „=“ и не заворачиваются без необходимости. Строка по-прежнему будет заворачиваться, если имя включенного файла длинное относительно ширины.

  • bpo-35771: Чтобы избежать случайных сбоев test_idle на медленных машинах, увеличьте значение hover_delay в test_tooltip.

  • bpo-37824: Правильно обрабатывайте предупреждения о вводе данных пользователем в оболочке IDLE. Прекратите превращать SyntaxWarnings в SyntaxErrors.

  • bpo-37929: Диалог настроек IDLE теперь корректно закрывается при отсутствии окна оболочки.

  • bpo-37902: Добавляет прокрутку колесиком мыши для браузеров модулей, путей и стеков IDLE. Исправление Джорджа Чжана.

  • bpo-37849: Исправлено появление слишком высокого или низкого списка завершений, когда он отображался над текущей строкой.

  • bpo-36419: Рефакторинг автозаполнения IDLE и улучшение тестирования.

  • bpo-37748: Измените порядок меню «Выполнить». Поместите самый распространенный выбор, «Запустить модуль», в начало.

  • bpo-37692: Улучшен пример конфигурации подсветки с примером взаимодействия с оболочкой и улучшенными метками для элементов оболочки.

  • bpo-37628: Диалог настроек больше не расширяется с увеличением размера шрифта.

  • bpo-37627: Инициализирует диалоговое окно Customize Run с аргументами командной строки, которые были введены в последний раз. По желанию пользователь может отредактировать их перед отправкой.

  • bpo-33610: Исправление того, что контекст кода не показывал правильный контекст при первом включении.

  • bpo-37530: Оптимизация контекста кода для уменьшения ненужной фоновой активности. Изменения шрифта и выделения теперь происходят вместе с изменением текста, а не со случайной задержкой.

  • bpo-27452: Разрешить параметры с именами config.py и RemoveFile с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37325: Исправлен порядок обхода фокуса вкладки для диалогов источника справки и пользовательского запуска.

  • bpo-37321: Оба сообщения об ошибках подключения к подпроцессам теперь ссылаются на раздел „Startup failure“ документа IDLE.

  • bpo-17535: Добавляет необязательные номера строк для окон редактора IDLE. Окна открываются без номеров строк, если не установлено иное на вкладке Общие диалогового окна конфигурации.

  • bpo-26806: Чтобы компенсировать стековые кадры, добавляемые IDLE, и избежать возможных проблем с низкими лимитами рекурсии, добавьте 30 к лимитам в процессе выполнения пользовательского кода. Вычитайте 30 при сообщении о пределах рекурсии, чтобы сделать это добавление в основном прозрачным.

  • bpo-37177: Правильно «прикрепляйте» диалоги поиска к главному окну, чтобы они вели себя как другие диалоги и не прятались за главным окном.

  • bpo-37039: Настройте «Высоту масштабирования» для отдельных экранов, мгновенно увеличив окно при первом использовании конкретного экрана. Изменение настроек экрана может привести к отмене сохраненной высоты. Пока окно максимизировано, «Высота масштаба» не действует.

  • bpo-35763: Сделайте напоминание о том, что „/“ означает только позиционное значение, менее навязчивым, добавляя его только тогда, когда есть место в первой строке.

  • bpo-5680: Добавьте „Run… Customized» в меню Run для запуска модуля с пользовательскими настройками. Все введенные «аргументы командной строки» добавляются в sys.argv. Можно подавить обычный перезапуск главного модуля Shell.

  • bpo-36390: Соберите функции меню Format в format.py. Объедините методы paragraph.py, rstrip.py и format из editor.py.

Инструменты/демоверсии

  • bpo-38118: Обновите файл подавления Valgrind, чтобы игнорировать ложное срабатывание в PyUnicode_Decode() при использовании встроенной в GCC функции strcmp().

  • bpo-38347: pathfix.py: При рекурсивной работе считать, что все файлы, заканчивающиеся на „.py“, являются скриптами Python.

  • bpo-37803: Разрешить параметры с именами --help и --version с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37942: Улучшен конвертер ArgumentClinic для плавающих чисел.

  • bpo-37704: Удалить Tools/scripts/h2py.py: используйте cffi для доступа к C API в Python.

  • bpo-37675: 2to3 теперь работает при запуске из заархивированной стандартной библиотеки.

  • bpo-37034: Argument Clinic теперь использует имя аргумента при ошибках с аргументом, содержащим только ключевое слово, вместо его позиции. Автор исправления - Rémi Lapeyre.

  • bpo-37064: Добавьте опцию -k к сценарию pathscript.py: сохранять флаги шебанга. Добавьте опцию -a к сценарию pathscript.py: добавить флаги.

C API

  • bpo-37633: Переэкспортируйте некоторые обертки совместимости функций для макросов в pythonrun.h.

  • bpo-38644: Разрешить параметры с именами Py_EnterRecursiveCall() и Py_LeaveRecursiveCall() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38650: Глобальная переменная PyStructSequence_UnnamedField теперь является константой и ссылается на постоянную строку.

  • bpo-38540: Разрешить параметры с именами PyArg_Parse() и "es#" с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38395: Исправление сбоя в объектах weakref.proxy из-за некорректного управления временем жизни при вызове некоторых связанных методов, которые могут удалить последнюю ссылку на объект, на который ссылается прокси. Исправление от Pablo Galindo.

  • bpo-36389: Разрешить параметры с именами _PyObject_CheckConsistency() и visit_decref() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38266: Верните удаление PyThreadState_DeleteCurrent() с документацией.

  • bpo-38303: Обновление модуля расширения audioop для использования стабильного ABI (PEP-384). Исправление от Тайлера Кифта.

  • bpo-38234: Разрешить параметры с именами Py_SetPath() и sys.executable с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38234: Разрешить параметры с именами Py_SetPath() и Py_SetPythonHome() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38205: Разрешить параметры с именами Py_UNREACHABLE() и Py_FatalError() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-38140: Сделайте смещения dict и weakref непрозрачными для типов кучи C, передавая смещения через PyMemberDef

  • bpo-15088: Разрешить параметры с именами PyGen_NeedsFinalizing и PEP 442 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36763: Разрешить параметры с именами PySys_AddXOption() и PyConfig.xoptions с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37926: Исправление сбоя в PySys_SetArgvEx(0, NULL, 0).

  • bpo-37879: Исправьте subtype_dealloc, чтобы он не выдавал decref типа, когда базовый тип является типом кучи C

  • bpo-37645: Добавьте _PyObject_FunctionStr(), чтобы получить удобное строковое представление объекта, похожего на функцию. Исправление от Jeroen Demeyer.

  • bpo-29548: Разрешить параметры с именами PyEval_CallObject и PyEval_CallFunction с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37151: Разрешить параметры с именами PyCFunction_Call и PyObject_Call() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37540: Протокол vectorcall теперь требует, чтобы вызывающая сторона передавала только строки в качестве имен ключевых слов.

  • bpo-37207: Разрешить параметры с именами type и tp_vectorcall с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21120: Исключите Python-ast.h, ast.h и asdl.h из ограниченного API.

  • bpo-37483: Добавьте новую функцию _PyObject_CallOneArg для вызова объекта с одним позиционным аргументом.

  • bpo-36763: Добавить функцию PyConfig_SetWideStringList().

  • bpo-37337: Разрешить параметры с именами _PyObject_VectorcallMethod() и _PyObject_CallMethodNoArgs() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28805: Соглашение о вызове METH_FASTCALL было задокументировано.

  • bpo-37221: Разрешить параметры с именами PyCode_NewWithPosOnlyArgs() и PyCode_New() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37215: Исправление проблемы с dtrace, введенной bpo-36842

  • bpo-37194: Разрешить параметры с именами PyObject_CallNoArgs() и PyObject_CallFunctionObjArgs(func, NULL) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37170: Исправьте ошибку с броском в PyLong_AsUnsignedLongLongMask().

  • bpo-35381: Разрешить параметры с именами DirEntryType и ScandirIteratorType с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34331: Используйте существительное единственного/ множественного числа в сообщении об ошибке при инстанцировании абстрактного класса с непереопределенным абстрактным методом(ами).

Python 3.8.0 beta 1

Дата выхода: 2019-06-04

Безопасность

  • bpo-35907: Разрешить параметры с именами CVE-2019-9948 и local-file:// с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33529: Предотвращает бесконечный цикл функции fold, используемой при кодировании заголовков электронной почты, когда в заголовке слишком много символов, отличных от ASCII.

  • bpo-33164: Обновлена реализация blake2, которая использует безопасную реализацию memset, предоставляемую платформой.

Ядро и встроенные модули

  • bpo-35814: Разрешите распаковку в правой части аннотированных назначений. В частности, теперь разрешено использовать t: Tuple[int, ...] = x, y, *z.

  • bpo-37126: Все объекты structseq теперь отслеживаются сборщиком мусора. Исправление от Пабло Галиндо.

  • bpo-37122: Сделать атрибут co_argcount объектов кода представляющим общее количество позиционных аргументов (включая только позиционные аргументы). Значение co_posonlyargcount может быть использовано для различения аргументов, которые являются только позиционными, а разница (co_argcount - co_posonlyargcount) - это количество позиционных аргументов или аргументов-ключей. Исправление от Pablo Galindo.

  • bpo-20092: Разрешить параметры с именами int и float с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37087: Добавляет поддержку нативного идентификатора потока (TID) в OpenBSD.

  • bpo-26219: Разрешить параметры с именами LOAD_GLOBAL и LOAD_GLOBAL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37072: Исправление сбоя в PyAST_FromNodeObject(), когда флаги равны NULL.

  • bpo-37029: Освобождение большого количества мелких объектов могло занимать время, квадратичное от числа арен, из-за использования линейного поиска для сохранения списка пригодных арен obmalloc.c, отсортированного в порядке убывания числа свободных пулов памяти. Теперь это делается без поиска, и время в худшем случае остается линейным по числу арен. Для программ, в которых это имеет заметное значение (обычно с более чем 100 тысячами одновременно существующих мелких объектов), это может значительно сократить время освобождения памяти.

  • bpo-26423: Разрешить параметры с именами wrap_lenfunc() и sizeof(long) < sizeof(Py_ssize_t) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37050: Улучшите AST для «отладочных» f-строк, которые используют „=“ для вывода источника вычисляемого выражения. Удалите expr_text из узла FormattedValue, а вместо него используйте узел Constant string (возможно, объединенный с соседними константными выражениями внутри f-строки).

  • bpo-22385: Разрешить параметры с именами bytes.hex и bytearray.hex с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26836: Добавить os.memfd_create().

  • bpo-37032: Разрешить параметры с именами replace() и types.CodeType с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37007: Разрешить параметры с именами socket.if_nameindex() и socket.if_nametoindex() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36829: Разрешить параметры с именами PyErr_WriteUnraisable() и PyErr_NormalizeException() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36878: Разрешить параметры с именами # type: ignore и # type: ignoreé с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36878: Разрешить параметры с именами # type: ignore и # type: ignore[E1000] с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-2180: Рассматривайте продолжение строки в EOF как SyntaxError by Anthony Sottile.

  • bpo-36907: Разрешить параметры с именами f(**kwargs) и kwargs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36946: Исправление возможного переполнения знаковых целых чисел при работе с фрагментами.

  • bpo-36826: Добавьте поддержку вида NamedExpression в ast_unparse.c

  • bpo-1875: Теперь при появлении синтаксических ошибок в блоках кода, которые будут оптимизированы (например, если условия всегда ложны), возникает сообщение SyntaxError. Исправление Пабло Галиндо.

  • bpo-36027: Разрешить вычисление модульных инверсий через трехаргументные pow: теперь второй аргумент может быть отрицательным в случае, когда первый и третий аргументы относительно просты.

  • bpo-36861: Обновление базы данных Unicode до версии 12.1.0.

  • bpo-28866: Избегайте кэширования атрибутов классов, тип которых определяет mro(), чтобы избежать проблемы недействительности кэша.

  • bpo-36851: Стек FrameType теперь корректно очищается, если выполнение завершается возвратом и стек не пуст.

  • bpo-34616: Разрешить параметры с именами compile() и ast.PyCF_ALLOW_TOP_LEVEL_AWAIT с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36842: Реализуйте PEP 578, добавив sys.audit, io.open_code и связанные с ними API.

  • bpo-27639: Корректный тип возврата для операций нарезки UserList. Исправления от Michael Blahay, Erick Cervantes и vaultah

  • bpo-36737: Переместите PyRuntimeState.warnings в состояние для каждого интрепретатора (через «состояние модуля»).

  • bpo-36793: Разрешить параметры с именами __str__ и bool с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36817: Разрешить параметры с именами = и !s с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24048: Сохраните живое исключение во время работы import.c remove_module().

  • bpo-27987: pymalloc возвращает блоки памяти, выровненные по 16, а не по 8 байт, на 64-битных платформах, чтобы соответствовать x86-64 ABI. Последние компиляторы чаще предполагают такое выравнивание. Исправление от Inada Naoki.

  • bpo-36601: Из внутреннего обработчика сигналов C в Python была удалена давно уже не имеющая смысла проверка на наличие getpid() == main_pid.

  • bpo-36594: Исправление некорректного использования %p в строках формата. Исправление от Zackery Spytz.

  • bpo-36045: Разрешить параметры с именами builtins.help() и async с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36084: Добавляет идентификатор родного потока (TID) в объекты threading.Thread (поддерживаемые платформы: Windows, FreeBSD, Linux, macOS)

  • bpo-36035: Добавлено исправление неработающих симлинков в сочетании с pathlib

  • bpo-35983: Разрешить параметры с именами tp_dealloc и tp_dealloc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20602: Разрешить параметры с именами sys.flags и sys.float_info с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26826: Разрешить параметры с именами copy_file_range() и os с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32388: Удалите требование кросс-версионной бинарной совместимости в tp_flags.

  • bpo-31862: Порт binascii для многофазной инициализации PEP 489. Исправление Марселя Плча.

Библиотека

  • bpo-37128: Добавлено math.perm().

  • bpo-37120: Добавьте SSLContext.num_tickets для управления количеством билетов сессии TLSv1.3.

  • bpo-12202: Исправьте обработку ошибок в msilib.SummaryInformation.GetProperty(). Исправление от Zackery Spytz.

  • bpo-26835: Модуль fcntl теперь содержит константы запечатывания файлов для запечатывания memfds.

  • bpo-29262: Разрешить параметры с именами get_origin() и get_args() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-12639: Разрешить параметры с именами msilib.Directory.start_component() и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36999: Добавьте метод asyncio.Task.get_coro() для публичного раскрытия объекта coroutine задачи.

  • bpo-35246: Заставьте asyncio.create_subprocess_exec() принимать аргументы типа path.

  • bpo-35279: Разрешить параметры с именами ThreadPoolExecutor и cpu_count() * 5 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37076: Разрешить параметры с именами _thread.start_new_thread() и sys.unraisablehook() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33725: На macOS модуль multiprocessing теперь по умолчанию использует метод запуска spawn.

  • bpo-37054: Разрешить параметры с именами _pyio.BytesIO и _pyio.TextIOWrapper с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37058: Разрешить параметры с именами Protocol и @runtime_checkable с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36933: Разрешить параметры с именами sys.set_coroutine_wrapper и sys.get_coroutine_wrapper с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37047: Разрешить параметры с именами unittest.mock.AsyncMock и unittest.mock.MagicMock с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37049: Разрешить параметры с именами TypedDict и typing с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37046: Разрешить параметры с именами Literal и typing с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37045: Разрешить параметры с именами Final и @final с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37035: Не регистрировать исключения на основе OSError, если произошла фатальная ошибка в транспорте asyncio. Пир может сгенерировать практически любой OSError, пользователь не может избежать этих исключений, исправив собственный код. Ошибки все равно передаются в пользовательский код, просто их логирование бессмысленно и загрязняет журналы asyncio.

  • bpo-37001: Разрешить параметры с именами symtable.symtable() и compile() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37028: Реализуйте asyncio REPL

  • bpo-37027: Возвращаем безопасный для использования объект прокси-сокета из transport.get_extra_info(„socket“)

  • bpo-32528: Сделайте asyncio.CancelledError базовым исключением.

    Это позволит устранить распространенную ошибку, которую допускают многие пользователи asyncio: предложение «except Exception», нарушающее отмену Tasks.

    В дополнение к этому изменению мы перестаем наследовать asyncio.TimeoutError и asyncio.InvalidStateError от их аналогов concurrent.futures.*. Этим исключениям нет смысла участвовать в цепочке наследования.

  • bpo-1230540: Разрешить параметры с именами threading.excepthook() и threading.Thread.run() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36996: Ручка unittest.mock.patch(), используемая в качестве декоратора для асинхронных функций.

  • bpo-37008: Разрешить параметры с именами next() и unittest.mock.mock_open() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27737: Разрешить кодирование заголовков только через пробелы в email.header. - by Batuhan Taskaya

  • bpo-36969: Команда PDB args теперь отображает только позиционные аргументы. Исправление предоставлено Rémi Lapeyre.

  • bpo-36969: PDB-команда args теперь отображает аргументы только с ключевыми словами. Исправление предоставлено Rémi Lapeyre.

  • bpo-36983: Разрешить параметры с именами typing.__all__ и ChainMap с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36972: Разрешить параметры с именами hex() и oct() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32972: Реализуйте unittest.IsolatedAsyncioTestCase для облегчения тестирования кода на основе asyncio.

  • bpo-36952: Разрешить параметры с именами fileinput.input() и fileinput.FileInput с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36952: Разрешить параметры с именами collections и collections.abc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36949: Реализуйте __repr__ для объектов WeakSet.

  • bpo-36948: Разрешить параметры с именами NameError и urllib.request.URLopener.retrieve() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33524: Исправление сворачивания заголовка электронной почты, когда max_line_length равно 0 или None и заголовок содержит неаскриптивные символы. Внесено Лихтом Такеучи (@Licht-T).

  • bpo-24564: Разрешить параметры с именами shutil.copystat() и errno.EINVAL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Оригинальный патч был создан Джампаоло Родолой, обновлен Йингом Вангом.

  • bpo-36888: Дочерние процессы Python теперь могут получить доступ к статусу своего родительского процесса с помощью multiprocessing.process.parent_process

  • bpo-36921: Разрешить параметры с именами @coroutine и async def с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25652: Разрешить параметры с именами __rmod__ и UserString с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36916: Удалите сообщение о необработанном исключении в задаче, когда writer.write() используется без await и writer.drain() завершается с исключением.

  • bpo-36889: Разрешить параметры с именами asyncio.Stream и asyncio.StreamReader с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36845: Добавлена проверка целочисленных префиксов при построении IP-сетей и интерфейсов в модуле ipaddress.

  • bpo-23378: Добавьте действие расширения для argparser.

  • bpo-36867: Исправлена ошибка, из-за которой экземпляр SharedMemoryManager и его родительский процесс использовали два отдельных процесса resource_tracker.

  • bpo-23896: Добавляет грамматику в lib2to3.pygram, которая содержит exec как функцию, а не как оператор.

  • bpo-36895: Разрешить параметры с именами time.clock() и time.perf_counter() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35545: Исправление отбрасывания asyncio диапазонов IPv6 при внутреннем разрешении имен хостов

  • bpo-36887: Добавьте новую функцию math.isqrt() для вычисления квадратных корней из целых чисел.

  • bpo-34632: Представляем модуль importlib.metadata с (предварительной) поддержкой чтения метаданных из сторонних пакетов.

  • bpo-36878: Разрешить параметры с именами type_comments=True и ast.parse с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36778: Разрешить параметры с именами cp65001 и utf_8 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36867: Модуль multiprocessing.resource_tracker заменяет модуль multiprocessing.semaphore_tracker. Кроме семафоров, resource_tracker также отслеживает сегменты общей памяти.

  • bpo-30262: Разрешить параметры с именами Cache и Statement с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24538: В shutil.copystat() сначала скопируйте расширенные атрибуты файла, а затем разрешения файла, поскольку расширенные атрибуты могут быть установлены на целевом устройстве только тогда, когда оно еще доступно для записи.

  • bpo-36829: Разрешить параметры с именами sys.unraisablehook() и gc.collect() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36832: Представляем zipfile.Path, pathlib-совместимую обертку для обхода zip-файлов.

  • bpo-36814: Исправлена проблема, при которой os.posix_spawnp() некорректно вызывала ошибку TypeError, когда file_actions было равно None.

  • bpo-33110: Корректно обрабатывайте исключения, вызванные функциями, добавленными concurrent.futures add_done_callback, когда Future уже завершилось.

  • bpo-26903: Разрешить параметры с именами max_workers и ProcessPoolExecutor с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36813: Разрешить параметры с именами QueueListener и queue.task_done() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36806: Запрещает создание потоковых объектов asyncio, таких как StreamReader, StreamWriter, Process и их протоколов вне пакета asyncio.

  • bpo-36802: Обеспечьте синхронные и асинхронные вызовы для StreamWriter.write() и StreamWriter.close()

  • bpo-36801: Правильно обрабатывайте закрытие SSL-соединения при вызове asyncio StreamWriter.drain().

  • bpo-36785: Реализуйте PEP 574 (протокол pickle 5 с внеполосными буферами).

  • bpo-36772: functools.lru_cache() теперь можно использовать как прямой декоратор в дополнение к его существующему использованию в качестве функции, возвращающей декоратор.

  • bpo-6584: Разрешить параметры с именами BadGzipFile и gzip с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36748: Разрешить параметры с именами TextIOWrapper и TextIOWrapper с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-8138: Разрешить параметры с именами wsgiref.simple_server.SimpleServer и wsgiref.simple_server.WSGIServer с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-22640: py_compile.compile() теперь поддерживает беззвучный режим. Автор патча - Джоанна Нанджекье

  • bpo-29183: Разрешить параметры с именами wsgiref.handlers.BaseHandler и close() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36548: Улучшена работа с флагами регулярных выражений.

  • bpo-36542: Сигнатуру функций Python теперь можно переопределить, указав атрибут __text_signature__.

  • bpo-36533: Переинициализируйте блокировки logging.Handler в дочерних процессах с развилкой вместо того, чтобы пытаться получить их все в родительском процессе перед развилкой только для того, чтобы освободить в дочернем процессе. Шаблон приобретения/освобождения приводил к тупиковым ситуациям в коде, в котором были реализованы любые цепочки обработчиков логирования, зависящих друг от друга, поскольку порядок приобретения блокировок не может быть гарантирован.

  • bpo-35252: Выбрасывайте TypeError вместо AssertionError при использовании аннотации недопустимого типа с singledispatch.

  • bpo-35900: Разрешите методам редукции возвращать кортеж из 6 элементов, где 6-й элемент указывает на пользовательский метод установки состояния, который вызывается вместо обычного метода __setstate__.

  • bpo-35900: включите регистрацию обратных вызовов для функций и классов в _pickle.c, используя новый атрибут Pickler’s reducer_override

  • bpo-36368: Исправлена ошибка, приводящая к краху экземпляров SharedMemoryManager в интерактивных сессиях после отправки ctrl-c (KeyboardInterrupt)

  • bpo-31904: Исправьте ошибку mmap для VxWorks

  • bpo-27497: Разрешить параметры с именами csv.DictWriter.writeheader() и csv.Writer.writerow() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36239: При разборе файлов .mo теперь игнорируются комментарии, начинающиеся и заканчивающиеся символами #-#-#-#-#.

  • bpo-26707: Разрешает plistlib читать и записывать двоичные plist-файлы, которые были созданы как файл KeyedArchive. В частности, это позволяет plistlib обрабатывать токены 0x80 как объекты UID.

  • bpo-31904: Добавьте поддержку модуля posix для VxWorks.

  • bpo-35125: Asyncio: Удалите внутренний обратный вызов при внешней отмене в щите

  • bpo-35721: Разрешить параметры с именами asyncio.SelectorEventLoop.subprocess_exec() и Popen с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31855: Результаты unittest.mock.mock_open() теперь учитывают аргумент read([size]). Исправление предоставлено Rémi Lapeyre.

  • bpo-35431: Реализуйте math.comb(), возвращающий биномиальный коэффициент, который вычисляет количество способов выбрать k предметов из n предметов без повторений и без порядка. Исправлено Яшем Аггарвалом и Келлером Фуксом.

  • bpo-26660: Разрешить параметры с именами TemporaryDirectory и TemporaryDirectory.cleanup() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34271: Добавьте отладочные помощники в модуль ssl. Теперь можно делать дамп ключевого материала и отслеживать протокол TLS. Контексты по умолчанию и stdlib также поддерживают переменную окружения SSLKEYLOGFILE.

  • bpo-26467: Добавлен AsyncMock для поддержки использования unittest для имитации корутинов asyncio. Исправление Лизы Роуч.

  • bpo-33569: dataclasses.InitVar: Раскрывает тип, используемый для создания переменной init.

  • bpo-34424: Исправлена сериализация сообщений, содержащих закодированные строки, когда policy.linesep имеет значение многосимвольной строки. Исправление от Jens Troeger.

  • bpo-34303: Производительность functools.reduce() немного улучшена. Патч от Сергея Федосеева.

  • bpo-33361: Исправлена ошибка в codecs.StreamRecoder, когда при поиске старые данные могли оставаться в буфере и нарушать последующие вызовы чтения. Исправление от Аммара Аскара.

  • bpo-22454: Разрешить параметры с именами shlex и shlex.join() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31922: asyncio.AbstractEventLoop.create_datagram_endpoint(): Не подключать UDP-сокет, если разрешена трансляция. Это позволяет получать ответы после UDP-трансляции.

  • bpo-24882: Измените ThreadPoolExecutor, чтобы он использовал существующие незадействованные потоки, прежде чем запускать новые.

  • bpo-31961: Разрешить параметры с именами subprocess.Popen() и path-like object с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33123: Разрешить параметры с именами pathlib.Path.unlink и FileNotFoundError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32941: Разрешить параметры с именами mmap.mmap и mmap.mmap.madvise() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-22102: Добавлена поддержка ZIP-файлов с дисками, установленными в 0. Такие файлы обычно создаются встроенными инструментами в Windows, когда используется расширение ZIP64. Исправление от Франциско Фасиони.

  • bpo-32515: trace.py теперь может запускать модули через python3 -m trace -t –module module_name

  • bpo-32299: Изменен unittest.mock.patch.dict() для возврата исправленного словаря при использовании в качестве менеджера контекста. Исправление Вадима Цандера.

  • bpo-27141: Разрешить параметры с именами __copy__() и collections.UserList с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31829: Разрешить параметры с именами \r и \0 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23395: Разрешить параметры с именами _thread.interrupt_main() и SIGINT с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-36896: Уточните, что некоторые типы имеют нестабильную сигнатуру конструктора в разных версиях Python.

  • bpo-36686: Улучшите документацию по аргументам stdin, stdout и stderr функции asyncio.subprocess_exec, чтобы указать, какие значения поддерживаются. Также упомяните, что декодирование в виде текста не поддерживается.

    Добавьте несколько тестов, чтобы проверить, что различные значения, переданные в аргументы std*, действительно работают.

  • bpo-36984: Улучшенная версия добавила ссылки в модуль typing - автор Anthony Sottile.

  • bpo-36868: Что нового теперь упоминает SSLContext.hostname_checks_common_name вместо SSLContext.host_flags.

  • bpo-35924: Добавьте в документацию curses.addstr() примечание, предупреждающее, что многострочные строки могут вызывать segfault’ы из-за ошибки ncurses.

  • bpo-36783: Добавлена документация C API для Time_FromTimeAndFold и PyDateTime_FromDateAndTimeAndFold в соответствии с PEP 495. Исправление от Edison Abahurire.

  • bpo-36797: Большая часть устаревшей документации по distutils была либо сокращена, либо более четко обозначена как сохраняемая только до тех пор, пока документация по setuptools не охватит ее самостоятельно.

  • bpo-22865: Добавьте подробности в документацию по функции pty.spawn.

  • bpo-35397: Устраните устаревание и добавьте документ urllib.parse.unwrap(). Исправление предоставлено Rémi Lapeyre.

  • bpo-32995: Добавлена контекстная переменная в глоссарий.

  • bpo-33519: Разрешить параметры с именами copy() и MutableSequence с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33482: Заставьте codecs.StreamRecoder.writelines принимать список байтов.

  • bpo-25735: Добавлена документация для func factorial, чтобы указать, что она возвращает целочисленные значения

  • bpo-20285: Расширьте object.__doc__ (docstring), чтобы сделать его более понятным. Измените pydoc.py так, чтобы в help(object) перечислялись методы объекта (для других классов help опускает методы базового класса объекта).

Тесты

  • bpo-37069: Разрешить параметры с именами test.support.catch_unraisable_exception() и test.support.captured_stderr() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-37098: Исправьте test_memfd_create на старых ядрах Linux.

  • bpo-37081: Тест с OpenSSL 1.1.1c

  • bpo-36829: Разрешить параметры с именами test.support.catch_unraisable_exception() и sys.unraisablehook() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36915: Главный процесс regrtest теперь всегда удаляет все временные каталоги рабочих процессов, даже если они терпят крах или если они убиты по прерыванию клавиатуры (CTRL+c).

  • bpo-36719: «python3 -m test -jN …» теперь продолжает выполнение следующих тестов при падении рабочего процесса (состояние CHILD_ERROR). Ранее набор тестов останавливался немедленно. Используйте –failfast для остановки при первой ошибке.

  • bpo-36816: Обновите Lib/test/selfsigned_pythontestdotnet.pem, чтобы он соответствовал новому TLS-сертификату self-signed.pythontest.net.

  • bpo-35925: Пропускать сетевые тесты httplib и nntplib, если в противном случае они окажутся неудачными из-за современной ОС или дистрибутива с политикой OpenSSL по умолчанию, отвергающей соединения с серверами со слабыми сертификатами.

  • bpo-36782: Добавьте тесты для нескольких функций C API в модуле datetime. Исправление Эдисона Абахурире.

  • bpo-36342: Исправьте test_multiprocessing в test_venv, если на платформе не работает sem_open.

Построить

  • bpo-36721: Разрешить параметры с именами --embed и python3-config --libs --embed с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    python-3.8-embed: Разрешить параметры с именами pkg-config python-3.8-embed --libs и -lpython3.8 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    С другой стороны, pkg-config python3.8 --libs больше не содержит -lpython3.8. Расширения C не должны быть связаны с libpython (за исключением Android, случай обрабатывается скриптом); это изменение специально несовместимо с обратной стороной.

  • bpo-36786: «make install» теперь запускает compileall параллельно.

Windows

  • bpo-36965: включение STATUS_CONTROL_C_EXIT без зависимости от компилятора MSC

  • bpo-35926: Обновление до OpenSSL 1.1.1b для Windows.

  • bpo-29883: Добавляет поддержку Windows для UDP-транспортов для Proactor Event Loop. Исправление от Adam Meily.

  • bpo-33407: Макрос Py_DEPRECATED() был реализован для MSVC.

macOS

  • bpo-36231: Поддержка сборки Python на macOS без установленного /usr/include. Начиная с macOS 10.14, системные заголовочные файлы доступны только в SDK, предоставляемом либо инструментами командной строки, либо приложением Xcode.

IDLE

  • bpo-35610: Замените теперь уже ненужный .context_use_ps1 на .prompt_last_line. Это завершает изменения, начатые в bpo-31858.

  • bpo-37038: Сделайте idlelib.run исполняемым; добавьте условие тестирования.

  • bpo-36958: Выведите любой аргумент, отличный от None или int, переданный в SystemExit или sys.exit().

  • bpo-36807: При сохранении файла вызывайте os.fsync(), чтобы биты сбрасывались, например, на USB-накопитель.

  • bpo-32411: В browser.py удалите лишнюю сортировку по номеру строки, поскольку словарь был создан в порядке возрастания номера строки.

Инструменты/демоверсии

  • bpo-37053: Корректная обработка строк типа u «bar» в Tools/parser/unparse.py. Исправление от Chih-Hsuan Yen.

C API

  • bpo-36763: Реализуйте PEP 587 «Конфигурация инициализации Python».

  • bpo-36379: Исправление сбоев при попытке использовать параметр modulo, когда __ipow__ реализован на C.

  • bpo-37107: Разрешить параметры с именами PyObject_CallMethodObjArgs() и _PyObject_CallMethodIdObjArgs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36974: Реализовать PEP 590: Vectorcall: протокол быстрого вызова для CPython. Это новый протокол для оптимизации вызовов пользовательских вызываемых объектов.

  • bpo-36763: Разрешить параметры с именами Py_Main() и Py_Exit(exitcode) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36922: Разрешить параметры с именами Py_TPFLAGS_METHOD_DESCRIPTOR и LOAD_METHOD с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36728: Разрешить параметры с именами PyEval_ReInitThreads() и PyOS_AfterFork_Child() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.8.0 alpha 4

Дата выхода: 2019-05-06

Безопасность

  • bpo-36742: Исправлена ошибка обработки символов предварительной нормализации в urlsplit().

  • bpo-30458: Адрес CVE-2019-9740, запрещая передачу URL-путей со встроенными пробелами или управляющими символами в основной запрос http-клиента. Такие потенциально вредоносные URL с инъекцией заголовка теперь вызывают исключение http.client.InvalidURL.

  • bpo-35755: Разрешить параметры с именами shutil.which() и os.confstr("CS_PATH") с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-36722: В отладочной сборке импорт теперь также ищет расширения C, скомпилированные в режиме релиза, и расширения C, скомпилированные в стабильном ABI.

  • bpo-32849: Исправьте код инициализации Python на FreeBSD, чтобы он правильно определял, когда дескриптор файла stdin (fd 0) недействителен.

  • bpo-36623: Удалите заголовки парсера и связанные с ними объявления функций, которые не имеют реализаций после удаления pgen.

  • bpo-20180: dict.pop() теперь на 33 % быстрее благодаря Argument Clinic. Исправление от Inada Naoki.

  • bpo-36611: Разрешить параметры с именами tracemalloc и PYMEM_DEBUG_SERIALNO с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36588: Разрешить параметры с именами sys.platform и 'aix' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36549: Измените str.capitalize, чтобы использовать заглавную букву для первого символа вместо прописной.

  • bpo-36540: Реализуйте PEP 570 (параметры Python только для позиционирования). Исправление от Пабло Галиндо.

  • bpo-36475: Разрешить параметры с именами PyEval_AcquireLock() и PyEval_AcquireThread() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36504: Исправьте переполнение знаковых целых чисел в _ctypes.c PyCArrayType_new().

  • bpo-20844: Исправление запуска скрипта с кодировкой cookie и окончанием строки LF, что может привести к ошибке в Windows.

  • bpo-24214: Исправлена поддержка обработчика ошибок surrogatepass в инкрементном декодере UTF-8.

  • bpo-36452: Разрешить параметры с именами dict и keys() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36459: Разрешить параметры с именами PyMem_FREE() и tok_nextc() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36433: Исправлено сообщение TypeError в вызове classmethoddescr_call.

  • bpo-36430: Исправьте возможную утечку ссылок в itertools.count().

  • bpo-36440: Включать имена узлов в сообщения ParserError вместо числовых идентификаторов. Исправление А. Скробова.

  • bpo-36143: Регенерируйте keyword из файла грамматики и токенов с помощью pgen. Исправление от Пабло Галиндо.

  • bpo-18372: Разрешить параметры с именами PyObject_GC_Track() и pickle с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-35952: Исправьте pythoninfo, когда компилятор отсутствует.

  • bpo-28238: Разрешить параметры с именами .find*() и {*}tag с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26978: pathlib.path.link_to() теперь реализована. Она создает жесткую ссылку, указывающую на путь.

  • bpo-1613500: Разрешить параметры с именами fileinput.FileInput и 'w' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36734: Разрешить параметры с именами faulthandler.c и stack_t current_stack с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-13611: Пакеты xml.etree.ElementTree получили поддержку сериализации C14N 2.0. Исправление Стефана Бехнеля.

  • bpo-36669: Добавьте поддержку недостающего оператора умножения матриц в weakref.proxy.

  • bpo-36676: XMLParser() в xml.etree.ElementTree предоставляет контекст префикса пространства имен для цели парсера, если он определяет методы обратного вызова «start_ns()» и/или «end_ns()». Исправление Стефана Бехнеля.

  • bpo-36673: TreeBuilder и XMLPullParser в xml.etree.ElementTree получили поддержку разбора комментариев и инструкций обработки. Исправление Стефана Бехнеля.

  • bpo-36650: C-версия functools.lru_cache() воспринимала вызовы с пустым словарем **kwargs как отличные от вызовов без ключевых слов. Это не приводило к неправильному ответу, но вызывало неожиданный пропуск кэша.

  • bpo-28552: Разрешить параметры с именами distutils.sysconfig и sys.executable с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35755: Разрешить параметры с именами shutil.which() и distutils.spawn.find_executable с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25430: улучшить производительность IPNetwork.__contains__()

  • bpo-30485: Выражения пути в xml.etree.ElementTree теперь могут обходиться без явных префиксов пространства имен для тегов (или нотации «{namespace}tag»), передавая пространство имен по умолчанию с пустым строковым префиксом.

  • bpo-36613: Исправьте asyncio wait(), не удаляющий обратный вызов при исключении

  • bpo-36598: Исправьте isinstance проверку Mock-объектов со спецификацией, когда код выполняется под трассировкой. Исправление от Karthikeyan Singaravelan.

  • bpo-18748: Разрешить параметры с именами -X и dev с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36575: Разрешить параметры с именами _lsprof и time.perf_counter() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33461: Разрешить параметры с именами json.loads и DeprecationWarning с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36559: Модуль random теперь предпочитает внутренний модуль _sha512, а не hashlib для seed(version=2), чтобы оптимизировать время импорта.

  • bpo-17561: Установите backlog=None по умолчанию для socket.create_server.

  • bpo-34373: Исправление обработки ошибок time.mktime() на AIX для года до 1970.

  • bpo-36232: Улучшено сообщение об ошибке при попытке открыть существующую базу данных DBM, которая на самом деле не существует. Исправление от Marco Rougeth.

  • bpo-36546: Добавить statistics.quantiles()

  • bpo-36050: Оптимизированный http.client.HTTPResponse.read() для большого отклика. Исправление от Inada Naoki.

  • bpo-36522: Если debuglevel установлен в значение >0 в http.client, выведите все значения для заголовков с несколькими значениями для одного и того же имени заголовка. Исправление от Matt Houglum.

  • bpo-36492: Отменена передача обязательных аргументов типа func в качестве аргументов ключевых слов в функциях, которые должны принимать произвольные аргументы ключевых слов и передавать их в другие функции. Теперь произвольные аргументы-ключи (даже с именами «self» и «func») могут передаваться этим функциям, если требуемые аргументы передаются как позиционные аргументы.

  • bpo-27181: Добавить statistics.geometric_mean().

  • bpo-30427: Разрешить параметры с именами os.path.normcase() и os.fspath() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36385: Прекращение отклонения октетов IPv4 из-за их неоднозначной восьмеричности. Ведущие нули игнорируются, и больше не предполагается, что они указывают на восьмеричные октеты. Октеты всегда являются десятичными числами. Октеты по-прежнему должны состоять не более чем из трех цифр, включая ведущие нули.

  • bpo-36434: Ошибки при записи в ZIP-файл больше не препятствуют его правильному закрытию.

  • bpo-36407: Исправлена неправильная запись отступов для секции CDATA в xml.dom.minidom. Автор исправления - Владимир Сурьянинов.

  • bpo-36326: inspect.getdoc() теперь может находить документацию для объектов-членов, когда __slots__ является словарем.

  • bpo-36366: Разрешить параметры с именами stop() и unittest.mock.patch() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36348: Метод imap.IMAP4.logout() больше не игнорирует произвольные исключения.

  • bpo-31904: Добавлена поддержка модуля времени и исправлены ошибки test_time для VxWorks.

  • bpo-36227: Разрешить параметры с именами default_namespace и xml_declaration с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36004: Разрешить параметры с именами datetime.date.fromisocalendar() и datetime.datetime.fromisocalendar() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35936: Разрешить параметры с именами modulefinder и imp с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35376: modulefinder корректно обрабатывает модули, имеющие то же имя, что и плохой пакет. Исправление авторства Брандта Бухера.

  • bpo-17396: modulefinder больше не аварийно завершается при возникновении синтаксических ошибок в последующем импорте. Исправление авторства Брандта Бухера.

  • bpo-35934: Разрешить параметры с именами create_server() и has_dualstack_ipv6() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23078: Разрешить параметры с именами classmethod() и staticmethod() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35416: Исправление потенциальных предупреждений о ресурсах в distutils. Исправление от Mickaël Schoentgen.

  • bpo-25451: Добавьте методы прозрачности в tkinter.PhotoImage. Исправление от Zackery Spytz.

  • bpo-35082: Не возвращайте удаленные атрибуты при вызове dir на unittest.mock.Mock.

  • bpo-34547: wsgiref.handlers.BaseHandler теперь изящно обрабатывает внезапные обрывы клиентских соединений. Исправление от Петтера Страндмарка.

  • bpo-31658: Разрешить параметры с именами xml.sax.parse() и path-like с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34139: Удалите устаревший сокет unix-датаграммы перед связыванием

  • bpo-33530: Реализована функция Happy Eyeballs в asyncio.create_connection(). Добавлены два новых аргумента, happy_eyeballs_delay и interleave, для задания поведения Happy Eyeballs.

  • bpo-33291: Не вызывайте ошибку AttributeError при вызове функций inspect isgeneratorfunction, iscoroutinefunction, isasyncgenfunction на методе, созданном из произвольного вызываемого объекта. Вместо этого возвращайте False.

  • bpo-31310: Исправьте multiprocessing.semaphore_tracker, чтобы он повторно использовался дочерними процессами

  • bpo-31292: Разрешить параметры с именами setup.py check --restructuredtext и include с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-36625: Удалите устаревшие комментарии из документаций в fractions.Fraction

  • bpo-30840: Относительный импорт документов

  • bpo-36523: Добавьте docstring для io.IOBase.writelines().

  • bpo-36425: Новый перевод документации: Simplified Chinese.

  • bpo-36345: Разрешить параметры с именами Tools/scripts/serve.py и :dir:`literalinclude` с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36345: Разрешить параметры с именами Tools/scripts/serve.py и wsgiref с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36157: Добавлена документация для PyInterpreterState_Main().

  • bpo-33043: Обновлена страница docs.python.org с добавлением ссылки „Contributing to Docs“ в конце страницы (между „Reporting Bugs“ и „About Documentation“). Обновлена страница „Found a Bug“ с дополнительными ссылками и информацией в разделе Documentation Bugs.

  • bpo-35581: @typing.type_check_only теперь позволяет в заглушках типов помечать функции и классы, недоступные во время выполнения.

  • bpo-33832: Добавьте запись в глоссарий для „магического метода“.

  • bpo-32913: Добавлен пример re.Match.groupdict в regex HOWTO.

Тесты

  • bpo-36719: Разрешить параметры с именами --findleaks и -jN/--multiprocess N с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36725: При использовании многопроцессорного режима (-jN) regrtest теперь лучше сообщает об ошибках при сбое рабочего процесса, а также немедленно завершает работу при сбое рабочего потока или при его прерывании.

  • bpo-36454: Измените test_time.test_monotonic(), чтобы он проверял только нижнюю границу времени, прошедшего после команды sleep, а не верхнюю. Это предотвратит ненужные провалы тестов на медленных билдботах. Исправление Виктора Стиннера.

  • bpo-32424: Улучшение тестового покрытия для xml.etree.ElementTree. Исправление Гордона П. Хемсли.

  • bpo-32424: Исправление опечатки в тесте test_cyclic_gc() для xml.etree.ElementTree. Исправление от Gordon P. Hemsley.

  • bpo-36635: Добавьте новый модуль _testinternalcapi для тестирования внутреннего API на языке C.

  • bpo-36629: Разрешить параметры с именами test_imap4_host_default_value() и test_imaplib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36611: Разрешить параметры с именами test_sys.test_getallocatedblocks() и tracemalloc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36560: Исправление поиска утечек по ссылкам в regrtest: вычисление дельт (количества ссылок, выделенных блоков памяти, количества дескрипторов файлов) во время прогрева, чтобы убедиться, что все инициализировано перед началом поиска утечек по ссылкам.

  • bpo-36565: Исправьте охоту за ссылками (python3 -m test -R 3:3), когда в Python нет встроенного модуля abc.

  • bpo-31904: Перенос test_resource в VxWorks: пропускать тесты, устанавливающие RLIMIT_FSIZE и RLIMIT_CPU.

  • bpo-31904: Исправьте test_tabnanny на VxWorks: скорректируйте сообщение об ошибке ENOENT.

  • bpo-36436: Исправьте _testcapi.pymem_buffer_overflow(): сбой выделения памяти.

  • bpo-31904: Исправьте test_utf8_mode на VxWorks: Python всегда использует UTF-8 на VxWorks.

  • bpo-36341: Исправление тестов, которые могли выдать ошибку PermissionError при вызове bind() на сокетах AF_UNIX.

Построить

  • bpo-36747: Удалите устаревшие скрипты scriptsinstall Makefile target.

  • bpo-21536: В Unix расширения C больше не связаны с libpython, за исключением Android и Cygwin.

    Теперь статически связанный Python может загрузить расширение на C, созданное с помощью общей библиотеки Python.

    libpython: Разрешить параметры с именами RTLD_LOCAL и RTLD_GLOBAL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    Были изменены distutils, python-config и python-config.py.

  • bpo-36707: Разрешить параметры с именами ./configure --with-pymalloc и m с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36635: Разрешить параметры с именами PyAPI_FUNC(type) и PyAPI_DATA(type) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31904: Не собирайте расширение _crypt на VxWorks.

  • bpo-36618: Разрешить параметры с именами -fmax-type-align=8 и CFLAGS с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36605: Разрешить параметры с именами make tags и make TAGS с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36465: Разрешить параметры с именами Py_DEBUG и Py_TRACE_REFS с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36577: setup.py теперь снова корректно сообщает о недостающих заголовках и библиотеках OpenSSL.

  • bpo-36544: Исправление регрессии, введенной в bpo-36146 при рефакторинге setup.py

  • bpo-36508: Разрешить параметры с именами python-config --ldflags и LINKFORSHARED с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36503: Удалите ссылки на «aix3» и «aix4». Исправление М. Фелта.

Windows

  • bpo-35920: Добавлены platform.win32_edition() и platform.win32_is_iot(). Добавлена поддержка кросс-компиляции пакетов для Windows ARM32. Пропущены тесты, работа которых на Windows IoT Core ARM32 не ожидается.

  • bpo-36649: Удаление пробелов в конце ключей реестра при установке через магазин.

  • bpo-34144: Исправлен activate.bat для корректного обновления кодовой страницы, когда chcp.com возвращает точки в выводе. Исправление от Lorenz Mende.

  • bpo-36509: Добавлен макет preset-iot для контейнеров Windows IoT ARM. Этот макет не содержит компонентов пользовательского интерфейса, таких как tkinter или IDLE. Он также не содержит файлов для поддержки on-target сборок, поскольку сборки Windows ARM32 должны быть кросс-компилированы при использовании MSVC.

  • bpo-35941: функция enum_certificates модуля ssl теперь возвращает в запросе сертификаты из всех доступных хранилищ сертификатов внутри windows, вместо того чтобы возвращать только сертификаты из общесистемного хранилища сертификатов. Сюда входят сертификаты из следующих хранилищ сертификатов: локальная машина, локальная машина предприятия, групповая политика локальной машины, текущий пользователь, групповая политика текущего пользователя, службы, пользователи. Функция ssl.enum_crls() изменена таким же образом, чтобы возвращать все списки отзыва сертификатов в хранилищах списков отзыва сертификатов windows.

  • bpo-36441: Исправлено создание venv при установке отладочных двоичных файлов.

  • bpo-36085: Включите лучшее разрешение DLL в Windows, используя безопасные пути поиска DLL и добавив os.add_dll_directory().

  • bpo-36010: Добавьте модуль стандартной библиотеки venv в дистрибутив nuget для Windows.

  • bpo-29515: Добавьте следующие константы модуля сокетов в Windows: IPPROTO_AH IPPROTO_CBT IPPROTO_DSTOPTS IPPROTO_EGP IPPROTO_ESP IPPROTO_FRAGMENT IPPROTO_GGP IPPROTO_HOPOPTS IPPROTO_ICLFXBM IPPROTO_ICMPV6 IPPROTO_IDP IPPROTO_IGMP IPPROTO_IGP IPPROTO_IPV4 IPPROTO_IPV6 IPPROTO_L2TP IPPROTO_MAX IPPROTO_ND IPPROTO_NONE IPPROTO_PGM IPPROTO_PIM IPPROTO_PUP IPPROTO_RDP IPPROTO_ROUTING IPPROTO_SCTP IPPROTO_ST

  • bpo-35947: Добавлена текущая версия libffi в cpython-source-deps. Измените _ctypes для использования текущей версии libffi под Windows.

  • bpo-34060: Сообщать о нагрузке на систему при запуске тестового набора на Windows. Исправление Аммара Аскара. Основано на предыдущей работе Джереми Клота.

  • bpo-31512: В обновлении Windows 10 Creators Update пользователи без высшего уровня подготовки теперь могут создавать симлинки, если на компьютере включен режим разработчика.

macOS

  • bpo-34602: Избегайте ошибок при установке лимита ресурсов стека macOS с помощью resource.setrlimit. Это отменяет предыдущее исправление для bpo-18075, которое заставляло использовать размер стека не по умолчанию при сборке исполняемого файла интерпретатора на macOS.

IDLE

  • bpo-36429: Исправление запуска IDLE с помощью pyshell. Добавьте псевдоним idlelib.pyshell сверху; удалите псевдоним pyshell снизу. Удалите устаревшую команду __name__==“__main__“.

Инструменты/демоверсии

  • bpo-14546: Исправьте обработку аргументов в Tools/scripts/lll.py.

C API

  • bpo-36763: Исправьте утечку памяти в Py_SetStandardStreamEncoding(): освободите память, если функция вызывается дважды.

  • bpo-36641: Разрешить параметры с именами PyDoc_VAR(name) и PyDoc_STRVAR(name, str) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36389: Разрешить параметры с именами CLEANBYTE и DEADDYTE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36443: Разрешить параметры с именами Py_DecodeLocale() и Py_Initialize() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36025: Разрешить параметры с именами PyDate_FromTimestamp() и TypeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35810: Измените PyObject_Init, чтобы корректно увеличивать refcount объектов Type, выделенных из кучи. Также исправлены refcount’ы выделенных из кучи типов, которые либо делали это вручную, либо не уменьшали refcount’ы типа в tp_dealloc

Python 3.8.0 alpha 3

Дата выхода: 2019-03-25

Безопасность

  • bpo-36216: Изменяет urlsplit(), чтобы вызывать ошибку ValueError, когда URL содержит символы, разлагающиеся при кодировке IDNA (NFKC-нормализация) на символы, которые влияют на разбор URL.

  • bpo-35121: Не отправляйте cookies домена A без атрибута Domain в домен B, если домен A совпадает по суффиксу с доменом B, при использовании cookiejar с политикой http.cookiejar.DefaultCookiePolicy. Исправление от Karthikeyan Singaravelan.

Ядро и встроенные модули

  • bpo-36421: Исправьте возможное двойное decref в _ctypes.c’s PyCArrayType_new().

  • bpo-36412: Исправление возможного сбоя при создании нового словаря.

  • bpo-36398: Исправление возможного сбоя в structseq_repr().

  • bpo-36256: Исправление ошибки в парсермодуле при разборе состояния в DFA, в котором есть две или более дуг с метками одного типа. Исправление Пабло Галиндо.

  • bpo-36365: repr(structseq) больше не ограничивается 512 байтами.

  • bpo-36374: Исправление возможного разыменования нулевого указателя в merge_consts_recursive(). Исправление от Zackery Spytz.

  • bpo-36236: При инициализации Python текущий каталог больше не добавляется к sys.path, если он был удален.

  • bpo-36352: Инициализация Python теперь не обрезает пути, а выдает ошибку, если путь слишком длинный.

  • bpo-36301: Инициализация Python теперь не выполняется, если при запуске произошел сбой декодирования конфигурационного файла pybuilddir.txt.

  • bpo-36333: Исправление утечки в _PyRuntimeState_Fini. Вклад внес Стефан Виртель.

  • bpo-36332: Встроенный compile() теперь может работать с объектами AST, содержащими выражения присваивания. Исправление от Пабло Галиндо.

  • bpo-36282: Улучшено сообщение об ошибке при слишком большом количестве позиционных аргументов в некоторых встроенных функциях.

  • bpo-30040: Новый пустой dict пока использует меньше памяти. Он использовал больше памяти, чем пустая диктанта, созданная dict.clear(). А создание и удаление пустой дикты происходит примерно в 2 раза быстрее. Исправление от Inada Naoki.

  • bpo-36262: Разрешить параметры с именами _Py_dg_strtod() и float(str) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36252: Обновление баз данных Unicode до версии 12.0.0.

  • bpo-36218: Исправление сегфайта, возникающего при сортировке списка неоднородных значений. Исправление внесли Rémi Lapeyre и Elliot Gorokhovsky.

  • bpo-36188: Устранены остатки обработки несвязанных методов в Python 2 в объектах методов и документации. Исправление от Martijn Pieters

  • bpo-36124: Добавьте новый dict, специфичный для интерпретатора, и предоставьте его в C-API через PyInterpreterState_GetDict(). Это параллельно PyThreadState_GetDict(). Однако модули расширения должны продолжать использовать PyModule_GetState() для своего внутреннего состояния, специфичного для каждого конкретного интерпретатора.

  • bpo-35975: Разрешить параметры с именами feature_version и ast.parse() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31904: Используйте UTF-8 в качестве системной кодировки на VxWorks.

  • bpo-36048: Разрешить параметры с именами __index__() и __int__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35808: Отказ от pgen и использование модифицированной версии pgen2 для генерации парсера. Исправление от Пабло Галиндо.

Библиотека

  • bpo-36401: В документации класса, создаваемой pydoc, теперь есть отдельный раздел для свойств, доступных только для чтения.

  • bpo-36320: В классе typing.NamedTuple() был устаревший атрибут _field_types в пользу атрибута __annotations__, который несет ту же информацию. Кроме того, оба атрибута были преобразованы из OrderedDict в обычный dict.

  • bpo-34745: Исправление asyncio проблем с памятью ssl, вызванных круговыми ссылками

  • bpo-36324: Добавьте метод в statistics.NormalDist для вычисления обратного кумулятивного нормального распределения.

  • bpo-36321: collections.namedtuple() неправильно указал имя атрибута. Чтобы быть согласованным с typing.NamedTuple, имя атрибута должно было быть «_field_defaults», а не «_fields_defaults». Для обратной совместимости теперь создаются оба варианта написания. В будущем ошибочная версия может быть удалена.

  • bpo-36297: Кодек «unicode_internal» удален. Он был устаревшим, начиная с версии Python 3.3. Исправление от Inada Naoki.

  • bpo-36298: Вызывать ошибку ModuleNotFoundError в pyclbr, когда модуль не может быть найден. Спасибо „mental“ за сообщение об ошибке.

  • bpo-36268: Переключает формат по умолчанию, используемый для записи таров с tarfile, на современный стандарт POSIX.1-2001 pax, а не на специфический для данного производителя GNU. Внесено C.A.M. Герлахом.

  • bpo-36285: Исправление целочисленных переполнений в модуле массивов. Исправление от Stephan Hohe.

  • bpo-31904: Добавьте поддержку модуля _signal для VxWorks.

  • bpo-36272: logging больше не игнорирует RecursionError. Исправление предоставлено Rémi Lapeyre.

  • bpo-36280: Добавьте поле kind в ast.Constant. Оно равно „u“, если литерал имеет префикс „u“ (т.е. юникодный литерал в стиле Python 2), иначе None.

  • bpo-35931: Разрешить параметры с именами pdb и debug с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36251: Исправьте строки формата, используемые для stderrprinter и re.Match reprs. Исправление от Stephan Hohe.

  • bpo-36235: Разрешить параметры с именами CFLAGS и customize_compiler() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35807: Обновите ensurepip для установки pip 19.0.3 и setuptools 40.8.0.

  • bpo-36139: Освободите GIL при закрытии объектов mmap.

  • bpo-36179: Исправление двух маловероятных утечек ссылок в _hashopenssl. Утечки происходят только в случаях работы вне памяти.

  • bpo-36169: Добавьте метод overlap() в statistics.NormalDist. Вычисляет коэффициент перекрытия для двух нормальных распределений.

  • bpo-36103: Размер буфера по умолчанию, используемый shutil.copyfileobj(), изменен с 16 до 64 килобайт на платформах, отличных от Windows, чтобы уменьшить накладные расходы на системные вызовы. Внесено Инадой Наоки.

  • bpo-36130: Разрешить параметры с именами pdb и skip=... с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35652: shutil.copytree(copy_function=…) ошибочно передает DirEntry вместо строки пути.

  • bpo-35178: Разрешить параметры с именами warnings.formatwarning() и line с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36106: Устранение потенциального столкновения имен с sinpi() из libm. Исправление от Дмитрия Пасечника.

  • bpo-36091: Очистите ссылку на генератор async в Lib/types. Исправление Генри Чена.

  • bpo-36043: Разрешить параметры с именами FileCookieJar и path-like object с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35899: Enum исправлен для корректной обработки пустых строк и строк с нелатинскими символами (т.е. „α“, „א“) без сбоев. Автор оригинального патча - Maxwell. При содействии Стефана Виртела.

  • bpo-21269: Разрешить параметры с именами args и kwargs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30670: Разрешить параметры с именами pprint.pp и pprint.pprint с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35843: Разрешить параметры с именами __getitem__ и _NamespacePath с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35802: Разрешить параметры с именами os.stat и os.lstat с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35715: Ликвидирует возвращаемое значение ProcessPoolExecutor _process_worker после того, как он больше не нужен, чтобы освободить память.

  • bpo-35493: Разрешить параметры с именами multiprocessing.connection.wait() и multiprocessing.Pool с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35661: Сохраните подсказку venv в файле pyvenv.cfg.

  • bpo-35121: Не устанавливайте cookie для запроса, если путь запроса совпадает с префиксом атрибута path cookie, но не заканчивается на «/». Исправление от Karthikeyan Singaravelan.

  • bpo-21478: Вызовы дочерней функции, созданной с помощью unittest.mock.create_autospec(), должны распространяться на родительскую. Исправление от Karthikeyan Singaravelan.

  • bpo-35198: Исправление компиляции расширений C++ на AIX

Документация

  • bpo-36329: Разрешить параметры с именами Tools/scripts/serve.py и make -C Doc/ serve с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36138: Улучшение документации о преобразовании datetime.timedelta в скаляры.

  • bpo-21314: В раздел Core Language FAQ по программированию добавлена новая запись, объясняющая использование слэша(/) в сигнатуре функции. Исправление Лисандроса Николау

Тесты

  • bpo-36234: test_posix.PosixUidGidTests: добавлены тесты на недопустимый тип uid/gid (str). Первоначальный патч написан Дэвидом Малкольмом.

  • bpo-29571: Разрешить параметры с именами test_re.test_locale_flag() и locale.getpreferredencoding() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36123: Исправьте состояние гонки в test_socket.

Построить

  • bpo-36356: Исправление утечек, которые приводили к сбою сборки при конфигурации с санитаром адресов.

  • bpo-36146: Разрешить параметры с именами TEST_EXTENSIONS и setup.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36146: Исправьте setup.py на macOS: добавьте /usr/include/ffi только для каталогов _ctypes, а не для всех расширений.

  • bpo-31904: Разрешить системе сборки кросс-сборку для VxWorks RTOS.

Windows

  • bpo-36312: Исправлены декодеры для следующих кодовых страниц: 50220, 50221, 50222, 50225, 50227, 50229, 57002 - 57011, 65000 и 42.

  • bpo-36264: Разрешить параметры с именами HOME и os.path.expanduser с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24643: Исправление коллизий имен из-за #define timezone _timezone в PC/pyconfig.h.

IDLE

  • bpo-36405: Использование распаковки диктов в idlelib.

  • bpo-36396: Удалите параметр fgBg из idlelib.config.GetHighlight(). Этот параметр использовался только дважды и изменял тип возвращаемого значения.

  • bpo-36176: Исправлены цвета автозаполнения и всплывающих подсказок IDLE. Предотвращает конфликты с темными темами Linux (и немного затемняет фон всплывающих подсказок).

  • bpo-23205: Для модуля grep добавлены тесты для findfiles, исправлена функция findfiles на функцию уровня модуля и исправлена функция findfiles на использование os.walk.

  • bpo-23216: Добавьте документацию в модули поиска IDLE.

  • bpo-36152: Удалите colorizer.ColorDelegator.close_when_done и соответствующий аргумент .close(). В IDLE с 2007 года оба аргумента всегда равны None или False.

  • bpo-32129: Избегайте размытой иконки приложения IDLE на macOS с Tk 8.6. Исправление Кевина Уолцера.

  • bpo-36096: Рефакторинг переменных класса в переменные экземпляра в колоризаторе.

  • bpo-30348: Увеличение тестового покрытия idlelib.autocomplete на 30%. Исправление от Louie Lu

Инструменты/демоверсии

  • bpo-35132: Исправьте команды py-list и py-bt в python-gdb.py на gdb7.

  • bpo-32217: Исправьте зависание скрипта на Windows.

C API

  • bpo-36381: Разрешить параметры с именами DeprecationWarning и PY_SSIZE_T_CLEAN с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36142: Весь заголовок coreconfig.h теперь исключен из Py_LIMITED_API. Переместите определения функций в новый внутренний заголовок pycore_coreconfig.h.

Python 3.8.0 alpha 2

Дата выхода: 2019-02-25

Ядро и встроенные модули

  • bpo-36052: Разрешить параметры с именами SyntaxError и __debug__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36012: Удвоена скорость записи переменных класса. При обновлении атрибута, не относящегося к дундеру, происходил ненужный вызов слотов обновления.

  • bpo-35942: Разрешить параметры с именами __fspath__ и PathLike с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-36016: gc.get_objects теперь могут принимать необязательный параметр, указывающий поколение, из которого нужно получить объекты. Исправление Пабло Галиндо.

  • bpo-1054041: Когда основной интерпретатор завершает работу из-за не пойманного KeyboardInterrupt, процесс теперь завершается соответствующим образом, чтобы его родительский процесс определил, что SIGINT или ^C завершили процесс. Это позволяет оболочкам и пакетным сценариям понять, что пользователь попросил их остановиться.

  • bpo-35992: Исправление того, что __class_getitem__() не вызывался для класса с пользовательским несабскриптовым метаклассом.

  • bpo-35993: Исправление падения на форке при использовании субинтерпретаторов. Внесено Стефаном Виртелом

  • bpo-35991: Исправьте потенциальную двойную свободу в Modules/_randommodule.c.

  • bpo-35961: Исправление сбоя в slice_richcompare(): используйте сильные ссылки, а не украденные ссылки для двух временных внутренних кортежей.

  • bpo-35911: Разрешить параметры с именами cell.__new__ и cell с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-12822: Разрешить параметры с именами pthread_cond_timedwait и pthread_condattr_setclock с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-15248: Теперь компилятор выдает синтаксические предупреждения в случае, когда перед кортежем или списком может быть пропущена запятая.

  • bpo-35886: Реализация PyInterpreterState была перенесена во внутренние заголовочные файлы (охраняемые Py_BUILD_CORE).

  • bpo-31506: Разрешить параметры с именами object.__new__ и object.__init__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35724: Обработка сигналов теперь гарантированно происходит относительно основного интерпретатора.

  • bpo-33608: Мы добавили новый внутренний _Py_AddPendingCall(), который работает относительно предоставленного интерпретатора. Это позволяет нам использовать существующую реализацию для того, чтобы попросить другой интерпретатор выполнить работу, которая не может быть выполнена в текущем интерпретаторе, например, decref объекта, которым владеет другой интерпретатор. Существующая Py_AddPendingCall() работает только относительно основного интерпретатора.

  • bpo-33989: Разрешить параметры с именами list.sort() и ob_type->tp_richcompare == NULL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-35512: unittest.mock.patch.dict(), используемый в качестве декоратора со строковой целью, разрешает цель во время вызова функции, а не во время построения декоратора. Исправление от Karthikeyan Singaravelan.

  • bpo-36018: Добавьте statistics.NormalDist, инструмент для создания и работы с нормальными распределениями случайных величин. Имеет составной класс, который рассматривает среднее и стандартное отклонение данных измерений как единое целое.

  • bpo-35904: Добавлена statistics.fmean() в качестве более быстрого варианта существующей функции mean() с плавающей точкой.

  • bpo-35918: Удален неработающий метод has_key из файла multiprocessing.managers.SyncManager.dict. Внесено Реми Лапейром.

  • bpo-18283: Добавьте поддержку байтов в shutil.which().

  • bpo-35960: Исправление dataclasses.field() отбрасывания пустых объектов отображения, переданных в качестве метаданных.

  • bpo-35500: Записывайте ожидаемые и фактические параметры вызова в отдельные строки в ошибках утверждения unittest.mock.Mock.assert_called_with(). Внесено Сьюзан Су.

  • bpo-35931: Разрешить параметры с именами pdb и debug с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24209: В скрипте http.server полагайтесь на getaddrinfo для привязки к предпочтительному адресу на основе параметра bind. Теперь привязка по умолчанию или привязка к имени может привязывать к IPv6 или двойному стеку, в зависимости от окружения.

  • bpo-35321: Разрешить параметры с именами __spec__.origin и _frozen_importlib с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35378: Исправлена проблема со ссылкой внутри multiprocessing.Pool, из-за которой пул оставался живым, если он был удален без явного закрытия или завершения. В итераторы пула добавлена новая сильная ссылка, связывающая время жизни пула с временем жизни его итераторов, чтобы пул не уничтожался, если итератор пула еще жив.

  • bpo-34294: Разрешить параметры с именами re.search() и re.findall() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35615: weakref: Исправление RuntimeError при копировании WeakKeyDictionary или WeakValueDictionary, из-за того что некоторые ключи или значения исчезали во время итерации.

  • bpo-35606: Разрешить параметры с именами math.prod() и sum() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32417: Разрешить параметры с именами datetime.datetime и datetime.timedelta с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35153: Разрешить параметры с именами xmlrpc.client.ServerProxy и xmlrpc.client.Transport с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34572: Исправьте реализацию pickle.loads на C, чтобы использовать механизмы блокировки importlib и тем самым избежать использования частично загруженных модулей. Исправление Тима Берджесса.

Документация

  • bpo-36083: Исправлено форматирование опций –check-hash-based-pycs в manpage Synopsis.

  • bpo-36007: Увеличьте минимальную версию sphinx до 1.8. Исправление Энтони Соттила.

  • bpo-22062: Обновление документации и docstrings для pathlib. Оригинальный патч Майка Шорта.

Тесты

  • bpo-27313: Избегайте сбоя test_ttk_guionly ComboboxTest в macOS Cocoa Tk.

  • bpo-36019: Добавьте test.support.TEST_HTTP_URL и замените ссылки http://www.example.com на эту новую константу. Внесено Стефаном Виртелом.

  • bpo-36037: Исправьте test_ssl для строгой конфигурации OpenSSL, подобной строгой криптополитике RHEL8. При необходимости используйте более старую версию TLS для минимальной версии TLS в SSL-контексте сервера, чтобы протестировать версию TLS старше, чем минимальная версия TLS по умолчанию.

  • bpo-35798: Добавлено test.support.check_syntax_warning().

  • bpo-35505: Сделайте test_imap4_host_default_value независимым от того, запущен ли локальный IMAP-сервер.

  • bpo-35917: мультипроцессинг: предоставить юнит-тесты для классов SyncManager и SharedMemoryManager + все разделяемые типы, которые должны поддерживаться ими. (патч от Giampaolo Rodola)

  • bpo-35704: Пропустите test_shutil.test_unpack_archive_xztar, чтобы предотвратить ошибку MemoryError на 32-битных AIX, когда значение MAXDATA меньше 0x20000000.

    Патч от Майкла Фелта (aixtools)

  • bpo-34720: Утверждение m_state != NULL для имитации функций обхода GC, которые некорректно обрабатывают создание модуля, если состояние модуля не было создано.

Windows

  • bpo-35976: Добавлена поддержка сборки ARM в файлы сборки Windows в PCBuild.

  • bpo-35692: pathlib больше не возникает при проверке существования файлов и каталогов на дисках, которые не готовы

  • bpo-35872: Использует базовый исполняемый файл Python при вызове venv в виртуальной среде

  • bpo-35873: Предотвращает наследование путей venv дочерними процессами

  • bpo-35299: Исправьте определение sysconfig директории источника и работу distutils с pyconfig.h во время профилирования PGO

IDLE

  • bpo-24310: IDLE – Образец шрифта в диалоговом окне настроек документа.

  • bpo-35833: Пересмотрите документ IDLE для управляющих кодов, отправляемых в Shell. Добавьте блок примеров кода.

  • bpo-35689: Добавьте документацию и unittests для colorizer.py.

Python 3.8.0 alpha 1

Дата выхода: 2019-02-03

Безопасность

  • bpo-35746: CVE-2019-5010: Исправление дерефа NULL-указателя в модуле ssl. Парсер сертификатов некорректно обрабатывал точки распространения CRL с пустыми DP или URI. Вредоносный или некачественный сертификат может привести к segfault. Об уязвимости (TALOS-2018-0758) сообщили Колин Рид и Николя Эдет из Cisco.

  • bpo-34812: Разрешить параметры с именами -I и multiprocessing с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34791: xml.sax и xml.dom.domreg больше не используют переменные окружения для переопределения реализаций парсера, когда sys.flags.ignore_environment задан аргументами -E или -I.

  • bpo-17239: Парсеры xml.sax и xml.dom.minidom больше не обрабатывают внешние сущности по умолчанию. Внешние объявления DTD и ENTITY больше не загружают файлы и не создают сетевые соединения.

  • bpo-34623: CVE-2018-14647: Модуль _elementtree с ускорением C теперь инициализирует соль рандомизации хэша из _Py_HashSecret вместо CSPRNG по умолчанию в libexpat.

  • bpo-34405: Обновлено до OpenSSL 1.1.0i для сборок Windows.

  • bpo-33871: Исправлена отправка части файла в os.sendfile() на macOS. Использование аргумента trailers могло привести к отправке большего количества байт из входного файла, чем было указано.

  • bpo-32533: Исправлена потокобезопасность обработки ошибок в _ssl.

  • bpo-33136: Защита модуля ssl от LibreSSL CVE-2018-8970. X509_VERIFY_PARAM_set1_host() вызывается с явным namelen. Новый тест гарантирует, что NULL-байты не допускаются.

  • bpo-33001: Минимальное исправление для предотвращения выхода за пределы буфера в os.symlink на Windows

  • bpo-32981: Разрешить параметры с именами CVE-2018-1060 и CVE-2018-1061 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28414: Модуль ssl теперь позволяет пользователям выполнять собственное en/decoding IDN при использовании SNI.

Ядро и встроенные модули

  • bpo-35877: Сделайте скобки необязательными для именованных выражений в операторе while. Исправление от Karthikeyan Singaravelan.

  • bpo-35814: В аннотированных присваиваниях разрешены те же выражения правой стороны, что и в обычных. В частности, теперь разрешено x: Tuple[int, int] = 1, 2 (без скобок справа).

  • bpo-35766: Добавляет опцию разбора комментариев типов PEP 484 в модуль ast. (По умолчанию отключена.) Это объединяет ключевую функциональность стороннего форка этого модуля, [typed_ast](https://github.com/python/typed_ast).

  • bpo-35713: Реорганизуйте инициализацию Python, чтобы раньше получать рабочие исключения и sys.stderr.

  • bpo-33416: Добавляет информацию о положении конечной строки и конечного столбца в узлы Python AST. Это изменение несовместимо с обратным развитием на уровне C.

  • bpo-35720: Исправлена незначительная утечка памяти в функции pymain_parse_cmdline_impl в Modules/main.c

  • bpo-35634: Разрешить параметры с именами func(**kwargs) и kwargs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35623: Исправление сбоя при сортировке очень длинных списков. Исправление от Stephan Hohe.

  • bpo-35214: добавлена инструментация сборки clang Memory Sanitizer для борьбы с ложными срабатываниями от posix, socket, time, test_io и test_faulthandler.

  • bpo-35560: Исправление ошибки утверждения в format() в отладочной сборке для форматирования с плавающей запятой с форматом «n», нулевой подстановкой и малой шириной. Релизная сборка не затронута. Исправление от Karthikeyan Singaravelan.

  • bpo-35552: Разрешить параметры с именами %s и %V с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35504: Исправление сегфайтов и SystemErrorпри удалении некоторых атрибутов. Исправление от Zackery Spytz.

  • bpo-35504: Исправлена ошибка SystemError при удалении атрибута characters_written из OSError.

  • bpo-35494: Улучшены сообщения о синтаксических ошибках для несбалансированных круглых скобок в f-строке.

  • bpo-35444: Исправлена обработка ошибок в методах pickling, когда не удавалось найти встроенный «getattr». Ускорена работа итераторов пикинга.

  • bpo-35436: Исправление различных проблем с обработкой ошибок выделения памяти. Исправление от Zackery Spytz.

  • bpo-35423: Отделите триггер обработки сигналов в цикле eval от механизма «ожидающих вызовов». Семантических изменений нет, а разница в производительности незначительна.

  • bpo-35357: Имена внутренних атрибутов unittest.mock._Call и unittest.mock.MagicProxy (name, parent & from_kall) теперь имеют префикс _mock_, чтобы избежать столкновений с широко используемыми атрибутами объектов. Исправлена незначительная опечатка в имени тестовой функции.

  • bpo-35372: Исправлен декодер кодовых страниц для ввода длиной более 2 ГБ, содержащих недекодируемые байты.

  • bpo-35336: Исправьте переменную окружения PYTHONCOERCECLOCALE=1: принудительное использование локали C только в том случае, если локаль LC_CTYPE равна «C».

  • bpo-31241: Атрибуты lineno и col_offset узлов AST для списков, генераторов выражений и кортежей теперь указывают на открывающую скобку или квадратную скобку. Для кортежей без скобок они указывают на позицию первого элемента.

  • bpo-33954: Разрешить параметры с именами str.format() и float.__format__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35269: Исправление возможного segfault, связанного с вновь созданным coroutine. Исправление от Zackery Spytz.

  • bpo-35224: Реализуйте PEP 572 (выражения присваивания). Автор патча - Эмили Морхаус.

  • bpo-32492: Ускорение доступа к атрибутам namedtuple() в 1,6 раза с помощью быстрого пути на C для дескрипторов имен. Исправление Пабло Галиндо.

  • bpo-35214: Исправлен выход за границы памяти при разборе усеченной юникодной управляющей последовательности в конце строки, такой как '\N'. При этом считывался один байт, выходящий за пределы выделенной памяти.

  • bpo-35214: В модули интерпретатора и расширений добавлены аннотации, чтобы они корректно работали под управлением санитара памяти clang. Новый флаг configure –with-memory-sanitizer был добавлен, чтобы облегчить выполнение тестовых сборок такого рода.

  • bpo-35193: Исправление ошибки в оптимизаторе peephole байткода, когда он мог считывать байты за пределы массива при удалении недостижимого кода. Эта ошибка присутствовала во всех выпусках Python 3.6 и 3.7 до настоящего момента.

  • bpo-35169: Улучшены сообщения об ошибках при запрещенных присваиваниях.

  • bpo-34022: Исправлена работа с файлами байткода на основе хэшей в zipimport. Исправление от Элвиса Пранскевичуса.

  • bpo-28401: Отладочные сборки больше не будут пытаться импортировать модули расширения, созданные для ABI, так как они никогда не были совместимы. Исправление Стефано Ривера.

  • bpo-29341: Уточните в документах методов os, что объекты типа path также принимаются в качестве входных параметров.

  • bpo-35050: Разрешить параметры с именами socket и AF_ALG с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29743: Разрешить параметры с именами ValueError и OverflowError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-16806: Разрешить параметры с именами lineno и col_offset с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35029: Разрешить параметры с именами SyntaxWarning и SyntaxError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34983: Раскрытие symtable.Symbol.is_nonlocal() в модуле symtable. Исправление от Пабло Галиндо.

  • bpo-34974: Разрешить параметры с именами bytes и bytearray с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34939: Разрешить аннотированные имена в пространстве имен модуля, которые объявлены глобальными до того, как произойдет аннотирование. Исправление Пабло Галиндо.

  • bpo-34973: Разрешить параметры с именами bytes() и list с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34876: Разрешить параметры с именами def и async def с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34879: Исправление возможного разыменования нулевого указателя в bytesobject.c. Исправление от Zackery Spytz.

  • bpo-34784: Исправьте реализацию PyStructSequence_NewType для создания StructSequences, выделяемых из кучи.

  • bpo-32912: Разрешить параметры с именами SyntaxWarning и DeprecationWarning с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34854: Исправлен сбой при компиляции строковых аннотаций, содержащих лямбду с аргументом «только ключ», не имеющим значения по умолчанию.

  • bpo-34850: Разрешить параметры с именами SyntaxWarning и is с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34824: Исправление возможного разыменования нулевого указателя в Modules/_ssl.c. Исправление от Zackery Spytz.

  • bpo-30156: Разрешить параметры с именами property_descr_get() и sys.getobjects() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34762: Исправьте C API contextvars для использования типов указателей PyObject*.

  • bpo-34751: Хэш-функция для кортежей теперь основана на xxHash, что дает лучшие результаты по коллизиям в (ранее) патологических случаях. Кроме того, на 64-битных системах это улучшает хэши кортежей в целом. Исправление сделано Йеруном Демейером при значительном участии Тима Питерса.

  • bpo-34735: Исправьте утечку памяти в Modules/timemodule.c. Исправление от Zackery Spytz.

  • bpo-34683: Исправлена ошибка, когда некоторые ошибки SyntaxError указывали на места, которые были смещены на один.

  • bpo-34651: Разрешить форк только основного интерпретатора. Это позволяет избежать возможности влияния на основной интерпретатор, что критично для работы среды выполнения.

  • bpo-34653: Удалите неиспользуемую функцию PyParser_SimpleParseStringFilename.

  • bpo-32236: Разрешить параметры с именами open() и buffering=1 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34641: Дальнейшее ограничение синтаксиса левой части аргументов ключевых слов в вызовах функций. В частности, теперь запрещено использовать f((keyword)=arg).

  • bpo-34637: Сделайте аргумент start для sum() видимым в качестве аргумента ключевого слова.

  • bpo-1621: Не предполагайте поведения переполнения знаковых целых чисел (неопределенное поведение C) при изменении размера хэш-таблицы.

  • bpo-34588: Исправьте ошибку «off-by-one» в функции обрезки рекурсивных вызовов при форматировании обратных трасс.

  • bpo-34485: В Windows локаль LC_CTYPE теперь устанавливается в предпочитаемую пользователем локаль при запуске. Ранее при запуске локаль LC_CTYPE была «C», но менялась при вызове setlocale(LC_CTYPE, «») или setlocale(LC_ALL, «»).

  • bpo-34485: Стандартные потоки, такие как sys.stdout, теперь используют обработчик ошибок «surrogateescape» вместо «strict» на локали POSIX (когда локаль C не принудительно и отключен режим UTF-8).

  • bpo-34485: Исправьте обработчик ошибок стандартных потоков, таких как sys.stdout: PYTHONIOENCODING=«:» теперь игнорируется вместо установки обработчика ошибок на «strict».

  • bpo-34485: Теперь Python получает кодировку локали вместе с кодом на C, чтобы инициализировать кодировку стандартных потоков, таких как sys.stdout. Более того, теперь кодировка инициализируется именем кодека Python, чтобы получить нормализованное имя кодировки и убедиться, что кодек загружен. Это изменение позволяет избежать импорта модулей _bootlocale и _locale при запуске по умолчанию.

  • bpo-34527: Во FreeBSD функции Py_DecodeLocale() и Py_EncodeLocale() теперь также заставляют использовать кодировку ASCII, если локаль LC_CTYPE равна «POSIX», а не только если локаль LC_CTYPE равна «C».

  • bpo-34527: Режим UTF-8 теперь включен и в локали «POSIX», а не только в локали «C».

  • bpo-34403: На HP-UX с локалью C или POSIX функция sys.getfilesystemencoding() теперь возвращает «ascii» вместо «roman8» (когда режим UTF-8 отключен и локаль C не принудительно установлена).

  • bpo-34523: Кодировка файловой системы Python теперь считывается раньше во время инициализации Python.

  • bpo-12458: Трассировки теперь показывают правильный номер строки для подвыражений в многострочных выражениях. В возвратах теперь отображается номер первой строки для многострочных выражений, а не номер строки последнего подвыражения.

  • bpo-34408: Предотвращение разыменования нулевого указателя и утечки ресурсов в PyInterpreterState_New().

  • bpo-34400: Исправьте неопределенное поведение в parsetok.c. Исправление от Zackery Spytz.

  • bpo-33073: Добавлена функция as_integer_ratio для ints, чтобы сделать их более совместимыми с float.

  • bpo-34377: Разрешить параметры с именами _PyObject_Free и _PyObject_Realloc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34353: Добавлена опция «socket» в stat.filemode() реализации Python, чтобы соответствовать реализации C.

  • bpo-34320: Исправление dict(od) не копировало порядок итераций OrderedDict.

  • bpo-34113: Исправлен сбой в отладочных сборках, когда стек опкодов корректировался отрицательными числами. Исправление от Константина Петрисора.

  • bpo-34100: Компилятор теперь рекурсивно объединяет константы в кортежах и фразенсетах. Атрибуты кода, такие как co_names, также объединяются.

  • bpo-34151: Немного улучшена производительность операций конкатенации, повторения и нарезки списков. Патч от Сергея Федосеева.

  • bpo-34170: -X dev: теперь можно переопределить аллокатор памяти с помощью PYTHONMALLOC, даже если включен режим разработчика.

  • bpo-33237: Улучшено сообщение AttributeError для частично инициализированного модуля.

  • bpo-34149: Исправьте функции min и max для получения поведения по умолчанию, когда ключ равен None.

  • bpo-34125: Профилирование несвязанных встроенных методов теперь работает при указании **kwargs.

  • bpo-34141: Оптимизирована выборка атомарных типов (None, bool, int, float, bytes, str).

  • bpo-34126: Исправление сбоев при профилировании некоторых некорректных вызовов несвязанных методов. Исправление от Jeroen Demeyer.

  • bpo-24618: Исправлено чтение недопустимой памяти при создании объекта кода со слишком маленьким кортежем varnames или слишком большим количеством аргументов.

  • bpo-34068: Разрешить параметры с именами io.IOBase.close() и closed с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34087: Исправление переполнения буфера при преобразовании юникода в числовые значения.

  • bpo-34080: Исправлена утечка памяти в компиляторе, когда он выдавал некоторые необычные ошибки при токенизации.

  • bpo-34066: Разрешить параметры с именами open() и with open() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34042: Исправьте dict.copy() для сохранения корректного общего количества ссылок (как сообщает sys.gettotalrefcount()).

  • bpo-33418: Исправлена потенциальная утечка памяти в объекте функции при создании цикла ссылок.

  • bpo-33985: Реализуйте атрибут contextvars.ContextVar.name.

  • bpo-33956: Обновление копии вендоризованной библиотеки Expat до версии 2.2.5.

  • bpo-24596: Разрешить параметры с именами PyRun_SimpleFileExFlags() и PyErr_Print() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33451: Закройте непосредственно выполняемые файлы pyc перед вызовом PyEval_EvalCode().

  • bpo-1617161: Разрешить параметры с именами BuiltinMethodType и ModuleType с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33824: Исправление «LC_ALL=C python3.7 -V»: корректный сброс парсера командной строки при изменении кодировки после чтения конфигурации Python.

  • bpo-33803: Исправление сбоя в hamt.c, вызванного включением GC tracking для объекта, у которого не все поля были установлены в NULL.

  • bpo-33738: Разрешить параметры с именами PyIter_Check() и PyIndex_Check() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33786: Исправьте асинхронные генераторы для корректной обработки GeneratorExit в athrow()

  • bpo-30167: Разрешить параметры с именами PyRun_SimpleFileExFlags и __cached__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33706: Исправление сбоя в инициализации Python при разборе опций командной строки. Спасибо Кристофу Гольке за сообщение об ошибке и исправление!

  • bpo-33597: Уменьшите размер PyGC_Head с 3 до 2 слов.

  • bpo-30654: Исправлен сброс обработчика SIGINT на SIG_DFL при выключении интерпретатора, даже если ранее был установлен пользовательский обработчик. Исправление от Филиппа Керлинга.

  • bpo-33622: Разрешить параметры с именами __del__ и gc.garbage с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33462: Сделайте представления dict и dict обратимыми. Исправление от Rémi Lapeyre.

  • bpo-23722: Разрешить параметры с именами RuntimeError и __classcell__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33499: Разрешить параметры с именами PYTHONPYCACHEPREFIX и -X с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25711: Модуль zipimport был переписан на чистом Python.

  • bpo-33509: Исправьте параметр module_globals в warnings.warn_explicit(): не падайте, если module_globals не является dict.

  • bpo-31849: Исправьте предупреждение о сравнении знака/незнака в pyhash.c.

  • bpo-33475: Исправлены различные ошибки при преобразовании аннотаций в строки и оптимизированы круглые скобки в строковом представлении.

  • bpo-20104: Разрешить параметры с именами setpgroup и resetids с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33391: Исправьте утечку в функции set_symmetric_difference().

  • bpo-33363: Разрешить параметры с именами async with и async for с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28055: Исправление не выровненных доступов в siphash24(). Исправление от Rolf Eike Beer.

  • bpo-33128: Исправление ошибки, из-за которой PathFinder дважды появлялся в sys.meta_path. Автор исправления - Пабло Галиндо Сальгадо.

  • bpo-33331: Модули, импортированные последними, теперь очищаются первыми при завершении работы интерпретатора.

  • bpo-33312: Исправлены предупреждения clang ubsan (undefined behavior sanitizer) в dictobject.c путем корректировки объявления внутренней структуры общих ключей struct _dictkeysobject.

  • bpo-33305: Улучшены сообщения об ошибках синтаксиса для недопустимых числовых литералов.

  • bpo-33306: Улучшены сообщения о синтаксических ошибках для несбалансированных круглых скобок.

  • bpo-33234: Конструктор списка будет предварительно определять размер и не перераспределять его, если известна длина входных данных.

  • bpo-33270: Ставить имена для всех объектов анонимного кода. Исправление от Zackery Spytz.

  • bpo-30455: Код на C и Python, а также документация, связанная с токенами, теперь генерируются из одного исходного файла Grammar/Tokens.

  • bpo-33176: Добавьте метод toreadonly() к просмотру памяти.

  • bpo-33231: Исправьте потенциальную утечку памяти в normalizestring().

  • bpo-33205: Разрешить параметры с именами round_up_to_power_2(used*2+hashtable_size/2) и round_up_to_power_2(used*3) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29922: Разрешить параметры с именами __aenter__() и __aexit__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33199: Исправление ma_version_tag в реализации dict не инициализируется при копировании из dict с общим доступом к ключу.

  • bpo-33053: При использовании ключа -m путь sys.path[0] теперь явно расширяется как начальный рабочий каталог, а не остается пустым (что позволяет импортировать из текущего рабочего каталога на момент импорта).

  • bpo-33138: Изменено стандартное сообщение об ошибке для непикетируемых и некопируемых типов. Теперь оно говорит «cannot pickle» вместо «can’t pickle» или «cannot serialize».

  • bpo-33018: Улучшение согласованности ошибок, вызываемых issubclass() при вызове с неклассом и абстрактным базовым классом в качестве первого и второго аргументов соответственно. Исправление Джоша Бронсона.

  • bpo-33083: math.factorial больше не принимает аргументы, которые не являются int-подобными. Исправление Пабло Галиндо.

  • bpo-33041: Добавлен новый опкод END_ASYNC_FOR и исправлены следующие проблемы:

    • Установка глобальных StopAsyncIteration больше не нарушает циклы async for.

    • Переход в цикл async for теперь отключен.

    • Выход из цикла async for больше не приводит к повреждению стека.

  • bpo-25750: Исправление редкого сбоя Python из-за неправильного подсчета ссылок в type_getattro(), если дескриптор удаляет себя из класса. Исправление от Jeroen Demeyer.

  • bpo-33041: Исправлена генерация байткода для «async for» со сложной целью. Остановка итерации StopAsyncIteration, поднятая при присваивании или распаковке, теперь будет распространяться вместо остановки итерации.

  • bpo-33026: Исправлено выскакивание из блока «с» при установке f_lineno.

  • bpo-33005: Исправление падения при форке при использовании пользовательского аллокатора памяти (например, при использовании переменной окружения PYTHONMALLOC). _PyGILState_Reinit() и _PyInterpreterState_Enable() теперь используют стандартный RAW-распределитель памяти для выделения нового мьютекса интерпретатора на форке.

  • bpo-32911: Разрешить параметры с именами bpo-29463 и docstring с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-17288: Предотвращение переходов из событий трассировки „return“ и „exception“.

  • bpo-32946: Импорт имен из уже импортированного модуля с помощью «from … import …» теперь выполняется на 30% быстрее, если модуль не является пакетом.

  • bpo-32932: Сделайте сообщение об ошибке более наглядным, если в __all__ есть объекты, не являющиеся строками.

  • bpo-32925: Разрешить параметры с именами x in [a, b] и for x in [a, b] с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32889: Разрешить параметры с именами Py_ADDRESS_IN_RANG и address_in_range с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32836: Не используйте временные переменные в случаях понимания списков/диктов/наборов

  • bpo-31356: Удалите новый API, добавленный в bpo-31356 (менеджер контекста gc.ensure_disabled()).

  • bpo-32305: Разрешить параметры с именами __file__ и __spec__.origin с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32303: Разрешить параметры с именами __spec__.loader и __loader__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32711: Исправьте предупреждающие сообщения для Python/ast_unparse.c. Исправление от Stéphane Wirtel

  • bpo-32583: Исправление возможного падения встроенных декодеров Unicode, вызванного ошибками записи за пределы границ при использовании настраиваемых обработчиков ошибок декодирования.

  • bpo-32489: Разрешить параметры с именами continue и finally с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-17611: Разрешить параметры с именами break и continue с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    BREAK_LOOP: Разрешить параметры с именами CONTINUE_LOOP и SETUP_LOOP с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32285: Новая функция unicodedata.is_normalized, которая может проверить, находится ли строка в определенной нормальной форме.

  • bpo-10544: Выражения Yield теперь запрещены в комплексных и генераторных выражениях, за исключением выражения для крайнего итерируемого.

  • bpo-32117: Распаковка итераций теперь разрешена без круглых скобок в операторах yield и return, например yield 1, 2, 3, *rest. Спасибо Дэвиду Катберту за это изменение и Джордану Чепмену за добавленные тесты.

  • bpo-31902: Разрешить параметры с именами col_offset и ast.AsyncFor с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25862: Разрешить параметры с именами tell() и io.TextIOWrapper с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21983: Исправление сбоя в ctypes.cast() в случае, если аргумент type является структурированным типом данных ctypes. Исправление от Эрика Суна и Орена Милмана.

  • bpo-31577: Исправление сбоя в os.utime() в случае плохого аргумента ns. Исправление от Орена Милмана.

  • bpo-29832: Удалите ссылки на „getsockaddrarg“ из различных сообщений об ошибках сокетов. Исправление от Орена Милмана.

Библиотека

  • bpo-35845: Добавьте параметр „order“ в memoryview.tobytes().

  • bpo-35864: Метод _asdict() для collections.namedtuple теперь возвращает обычный dict, а не OrderedDict.

  • bpo-35537: ExitStack теперь используется внутри subprocess.Popen для очистки файловых дескрипторов pipe. В обычной работе поведение не изменилось. Но если закрытие одного хэндла приведет к исключению, то теперь остальные будут закрыты вместо утечки (патч от Giampaolo Rodola).

  • bpo-35847: RISC-V требовалось CTYPES_PASS_BY_REF_HACK. Исправления ctypes Структура test_pass_by_value.

  • bpo-35813: Подмодуль общей памяти добавлен в многопроцессорную обработку, чтобы избежать необходимости сериализации между процессами

  • bpo-35780: Исправление ошибок lru_cache(), возникающих в рекурсивном, реентерабельном или многопоточном коде. Эти ошибки могли приводить к появлению бесхозных ссылок и застреванию кэша в состоянии с меньшим, чем заданное максимальное количество ссылок. Исправлена обработка отрицательного maxsize, который должен был восприниматься как ноль. Исправление ошибок при переключении флага состояния «полный». Исправление неправильного упорядочивания ссылок при возникновении ошибок. Синхронизация кода на C и чистого кода на Python для пути экономии места в функциях с одним позиционным аргументом. В этом распространенном случае накладные расходы пространства на запись в кэш lru сокращаются почти вдвое. Исправлен подсчет промахов в кэше. В случаях ошибок подсчет промахов не совпадал с фактическим количеством вызовов базовой пользовательской функции.

  • bpo-35537: Разрешить параметры с именами os.posix_spawn() и os.posix_spawnp() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23846: asyncio.ProactorEventLoop теперь перехватывает и регистрирует ошибки отправки, когда self-pipe переполнен.

  • bpo-34323: Разрешить параметры с именами asyncio и IocpProactor.close() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35674: Добавьте новую функцию os.posix_spawnp(). Исправление от Joannah Nanjekye.

  • bpo-35733: Разрешить параметры с именами ast.Constant(boolean) и ast.Num с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35726: QueueHandler.prepare() теперь создает копию записи перед ее изменением и постановкой в очередь, чтобы избежать влияния на другие обработчики в цепочке.

  • bpo-35719: Ускорение работы многоаргументных math функций atan2(), copysign(), remainder() и hypot() в 1,3–2,5 раза.

  • bpo-35717: Исправление исключения KeyError, возникающего при использовании перечислений и компиляции. Заплатка предоставлена Rémi Lapeyre.

  • bpo-35699: Исправлено обнаружение Visual Studio Build Tools 2017 в distutils

  • bpo-32710: Исправление утечек памяти в asyncio ProactorEventLoop при сбое операции с перекрытием.

  • bpo-35702: Константа time.CLOCK_UPTIME_RAW теперь доступна для macOS 10.12.

  • bpo-32710: Разрешить параметры с именами ReadFile() и WSASend() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35682: Исправление asyncio.ProactorEventLoop.sendfile(): не пытайтесь установить результат внутреннего будущего, если оно уже выполнено.

  • bpo-35283: Добавьте предупреждение об устаревании для метода threading.Thread.isAlive(). Исправление от Donghee Na.

  • bpo-35664: Улучшение производительности operator.itemgetter() на 33% за счет оптимизированной обработки аргументов и добавления быстрого пути для распространенного случая единственного неотрицательного целочисленного индекса в кортеже (что является типичным случаем использования в стандартной библиотеке).

  • bpo-35643: Исправлена ошибка SyntaxWarning: invalid escape sequence в Modules/_sha3/cleanup.py. Исправление от Mickaël Schoentgen.

  • bpo-35619: Разрешить параметры с именами help() и pydoc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28503: Разрешить параметры с именами crypt и crypt_r() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35614: Исправлена функция help() для метаклассов. Исправление от Sanyam Khurana.

  • bpo-35568: Разрешить параметры с именами raise(signum) и raise_signal с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35588: Разрешить параметры с именами divmod() и fractions.Fraction с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35585: Ускоряет построение перечислений по значению, например http.HTTPStatus(200).

  • bpo-30561: random.gammavariate(1.0, beta) теперь вычисляет тот же результат, что и random.expovariate(1.0 / beta). Это синхронизирует два алгоритма и устраняет некоторые идиосинкразии в старой реализации. Однако при этом поток случайных величин получается не таким, как раньше.

  • bpo-35537: Разрешить параметры с именами subprocess и os.posix_spawn() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35526: Откладываем «шутку» barry_as_FLUFL.mandatory до версии Python 4.0

  • bpo-35523: Разрешить параметры с именами ctypes и import ctypes с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31784: Разрешить параметры с именами uuid.uuid1() и time.time_ns() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35513: Разрешить параметры с именами TextTestRunner и unittest.runner с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35502: Исправлена утечка ссылок в xml.etree.ElementTree.TreeBuilder в случае незавершенного построения дерева (в частности, когда возникала ошибка при разборе XML).

  • bpo-35348: Разрешить параметры с именами platform.architecture() и file с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35491: Разрешить параметры с именами multiprocessing и Pool.__repr__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35477: Разрешить параметры с именами multiprocessing.Pool.__enter__() и with pool: с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31446: Копирует командную строку, переданную CreateProcessW, поскольку эта функция может изменять содержимое входного буфера.

  • bpo-35471: Python 2.4 отказался от поддержки MacOS 9. Модуль macpath был устаревшим в Python 3.7. Теперь модуль удален.

  • bpo-23057: Разблокировать цикл событий Proactor при получении прерывания от клавиатуры в Windows

  • bpo-35052: Исправьте xml.dom.minidom cloneNode() в документе с сущностью: передавайте правильные аргументы обработчику пользовательских данных сущности.

  • bpo-20239: Разрешить повторное удаление назначений атрибутов unittest.mock.Mock. Исправление Пабло Галиндо.

  • bpo-17185: Разрешить параметры с именами __signature__ и inspect с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35445: Ошибки памяти при создании posix.environ больше не игнорируются.

  • bpo-35415: Проверьте аргумент fileno= для socket.socket().

  • bpo-35424: Разрешить параметры с именами multiprocessing.Pool и ResourceWarning с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35330: Разрешить параметры с именами Mock и side_effect с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35346: Удалите поддержку Mac OS 9 и Rhapsody из модуля platform. Последний релиз Rhapsody состоялся в 2000 году. Последний выпуск Mac OS 9 состоялся в 2001 году.

  • bpo-10496: Разрешить параметры с именами check_environ() и distutils.utils с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-10496: Разрешить параметры с именами posixpath.expanduser() и HOME с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35389: Разрешить параметры с именами platform.libc_ver() и os.confstr('CS_GNU_LIBC_VERSION') с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35394: Добавьте пустые слоты в абстрактные протоколы asyncio.

  • bpo-35310: Разрешить параметры с именами select.select() и select.select() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35380: Включите TCP_NODELAY в Windows для цикла событий proactor asyncio.

  • bpo-35341: Разрешить параметры с именами collections.OrderedDict и typing с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35371: Исправлено возможное падение os.utime() на Windows при передаче неверных аргументов.

  • bpo-35346: Разрешить параметры с именами platform.uname() и stderr с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35066: Ранее вызов метода strftime() на объекте datetime с завершающим „%“ в строке формата приводил к исключению. Однако это происходило только при использовании модуля datetime C; реализация на python не соответствовала такому поведению. Теперь Datetime совместим с PEP-399 и не будет выбрасывать исключение при наличии в строке форматирования символа „%“.

  • bpo-35345: Разрешить параметры с именами platform.popen и os.popen() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35344: Разрешить параметры с именами platform.platform() и platform.mac_ver() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35312: Сделайте lib2to3.pgen2.parse.ParseError пригодным для маринования в обе стороны. Исправление Энтони Соттила.

  • bpo-35308: Разрешить параметры с именами webbrowser и BROWSER с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24746: Избегайте удаления пробельных символов в конце doctest fancy diff. Оригинальный патч от R. David Murray & Jairo Trad. Исправлено Саньямом Кхураной.

  • bpo-28604: Разрешить параметры с именами locale.localeconv() и LC_CTYPE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35277: Обновите ensurepip для установки pip 18.1 и setuptools 40.6.2.

  • bpo-24209: Добавляет поддержку IPv6 при прямом вызове http.server.

  • bpo-35226: Разрешить параметры с именами unittest.mock.call и mock_calls с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29564: Модуль предупреждений теперь предлагает включить tracemalloc, если указан источник, модуль tracemalloc доступен, но tracemalloc не отслеживает выделение памяти.

  • bpo-35189: Модифицируйте следующую функцию fnctl, чтобы повторить попытку, если она прервана сигналом (EINTR): flock, lockf, fnctl

  • bpo-30064: Используйте add_done_callback() в sock_* asyncio API для ранней отписки читателя/писателя при калькировании.

  • bpo-35186: Разрешить параметры с именами setup.py upload и bdist_rpm с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35152: Разрешите отправлять более 2 ГБ одновременно при многопроцессорном соединении на системах, отличных от Windows.

  • bpo-35062: Исправьте неправильный разбор аргумента translate в _io.IncrementalNewlineDecoder.

  • bpo-35065: Разрешить параметры с именами StreamReaderProtocol._untrack_reader и _untrack_reader с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34160: ElementTree и minidom теперь сохраняют порядок атрибутов, указанный пользователем.

  • bpo-35079: Улучшите документ difflib.SequenceManager.get_matching_blocks, добавив „non-overlapping“ и заменив „!=“ на „<“.

  • bpo-33710: Разрешить параметры с именами l*gettext() и gettext с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35017: Разрешить параметры с именами socketserver.BaseServer.serve_forever() и shutdown() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35024: Разрешить параметры с именами importlib и wrote <bytecode path> с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35047: Разрешить параметры с именами unittest.mock и assert_not_called с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31047: Исправление ошибки ntpath.abspath, когда он не удалял концевой разделитель в Windows. Исправление Тима Грэма.

  • bpo-35053: tracemalloc теперь пытается обновить traceback, когда объект повторно используется из «свободного списка» (оптимизация для ускорения создания объектов, используется, например, встроенным типом списка).

  • bpo-31553: Добавьте опцию –json-lines в json.tool. Исправление от hongweipeng.

  • bpo-34794: Исправлена утечка в Tkinter при передаче Python-обёртки вокруг Tcl_Obj обратно в Tcl/Tk.

  • bpo-34909: Enum: исправление подклассификации внуков, когда родитель смешивается с конкретными типами данных.

  • bpo-35022: Разрешить параметры с именами unittest.mock.MagicMock и __fspath__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35008: Разрешить параметры с именами __setstate__() и xml.etree.ElementTree.Element с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23420: Проверьте значение параметра „-s“ в cProfile CLI. Исправление от Роберта Куски

  • bpo-33947: классы данных теперь обрабатывают рекурсивные репризы без возникновения ошибки RecursionError.

  • bpo-34890: Разрешить параметры с именами inspect.iscoroutinefunction() и inspect.isgeneratorfunction() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34521: Разрешить параметры с именами socket.CMSG_SPACE() и socket.CMSG_LEN() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31522: Параметр from_ функции mailbox.mbox.get_string теперь может быть успешно установлен в значение не по умолчанию.

  • bpo-34970: Защитите задачи слабой манипуляции множествами в asyncio.all_tasks()

  • bpo-34969: gzip: Добавьте –fast, –best в gzip CLI, эти параметры будут использоваться для быстрого метода сжатия (быстро) или лучшего метода сжатия (медленнее, но меньше файл). Также измените уровень сжатия по умолчанию на 6 (компромисс).

  • bpo-16965: Разрешить параметры с именами execfile и 'rb' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34966: pydoc теперь поддерживает псевдонимы не только на методы, определенные в конечном классе, но и на наследуемые методы. Документная строка не дублируется для псевдонимов.

  • bpo-34926: Разрешить параметры с именами mimetypes.MimeTypes.guess_type() и path-like object с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23831: Разрешить параметры с именами moveto() и tkinter.Canvas с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34941: Разрешить параметры с именами find() и findtext() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32680: Разрешить параметры с именами smtplib.SMTP и sock с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34769: Исправление того, что генераторы async не завершались, когда цикл событий находился в режиме отладки, а сборщик мусора работал в другом потоке.

  • bpo-34936: Разрешить параметры с именами TclError и tkinter.Spinbox.selection_element() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34829: Разрешить параметры с именами selection_from и selection_range с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34911: Добавлен аргумент secure_protocols в http.cookiejar.DefaultCookiePolicy для настройки протоколов, а также для добавления поддержки по умолчанию wss, безопасного протокола websocket.

  • bpo-34922: Разрешить параметры с именами digest() и hexdigest() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34925: 25-процентное ускорение разбора аргументов для функций в модуле bisect.

  • bpo-34900: Исправлено unittest.TestCase.debug() при использовании для вызова тестовых методов с подтестами. Исправление Бруно Оливейры.

  • bpo-34844: Улучшение logging.Formatter - Обеспечение совпадения стилей и fmt в logging.Formatter - Добавлен метод validate в каждом классе стилей формата: StrFormatStyle, PercentStyle, StringTemplateStyle. - Этот метод вызывается в конструкторе класса logging.Formatter - Также повторно поднимаем KeyError в методе format каждого класса стиля, чтобы было немного понятно, что это ошибка с недействительными полями формата.

  • bpo-34897: Настройте проверку test.support.missing_compiler_executable так, чтобы номинальное имя команды «» игнорировалось. Исправление Майкла Фелта.

  • bpo-34871: Разрешить параметры с именами sys.modules и __text_signature__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34898: Разрешить параметры с именами mtime и gzip.compress с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28441: Разрешить параметры с именами sys.executable и .exe с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34866: Разрешить параметры с именами max_num_fields и cgi.FieldStorage с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34711: http.server гарантирует, что он сообщает HTTPStatus.NOT_FOUND, когда локальный путь заканчивается на «/» и не является каталогом, даже если базовая ОС (например, AIX) принимает такой путь как корректную ссылку на файл. Исправление Майкла Фелта.

  • bpo-34872: Исправьте самоотмену в реализации asyncio.Task на C

  • bpo-34849: Не регистрируйте ожидание selector.select в итерации цикла asyncio. Ожидание - это нормальное явление для любой программы asyncio, регистрация его времени просто добавляет шум в журналы без какой-либо полезной информации.

  • bpo-34022: Разрешить параметры с именами SOURCE_DATE_EPOCH и py_compile.compile() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34819: Разрешить параметры с именами Executor.map() и as_completed() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34758: Добавьте .wasm -> application/wasm в список распознаваемых типов файлов и заголовков типов содержимого

  • bpo-34789: xml.sax.make_parser() теперь принимает любую итерабельную переменную в качестве аргумента parser_list. Исправление Андреса Дельфино.

  • bpo-34334: Разрешить параметры с именами QueueHandler и exc_text с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34687: В Windows asyncio теперь по умолчанию использует ProactorEventLoop, а не SelectorEventLoop.

  • bpo-5950: Поддержка чтения zip-файлов с архивными комментариями в zipimport.

  • bpo-32892: Разрешить параметры с именами ast.Constant и Num с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34728: Разрешить параметры с именами loop и asyncio.sleep с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34738: ZIP-файлы, созданные distutils, теперь будут содержать записи для каталогов.

  • bpo-34659: Добавьте необязательный инициальный аргумент в itertools.accumulate().

  • bpo-29577: Поддержка нескольких классов-миксинов при создании Enums.

  • bpo-34670: Добавьте SSLContext.post_handshake_auth и SSLSocket.verify_client_post_handshake для функции аутентификации после рукопожатия в TLS 1.3.

  • bpo-32718: Сценарий Activate.ps1 от venv работает с PowerShell Core 6.1 и теперь доступен для всех операционных систем.

  • bpo-31177: Исправлена ошибка, не позволявшая использовать reset_mock для экземпляров mock с удаленными атрибутами

  • bpo-34672: Разрешить параметры с именами 'Z' и time.strftime() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34666: Разрешить параметры с именами asyncio.StreamWriter.awrite и asyncio.StreamWriter.aclose() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-6721: Приобретайте часто используемые внутренние блокировки модуля логирования при выполнении fork()ing, чтобы избежать тупиковых ситуаций в дочернем процессе.

  • bpo-34658: Исправление редкого необработанного интерпретатором исключения состояния SystemError, наблюдавшегося только при использовании subprocess с prexec_fn, когда обработчик after_parent был зарегистрирован с помощью os.register_at_fork и системный вызов fork завершился неудачей.

  • bpo-34652: Убедитесь, что os.lchmod() никогда не определяется в Linux.

  • bpo-34638: Хранит слабую ссылку на читателя потока, чтобы разорвать цикл сильных ссылок между читателем и протоколом. Это позволяет обнаружить и закрыть сокет, если поток будет удален (собран мусор) без вызова close().

  • bpo-34536: Разрешить параметры с именами Enum._missing_ и ValueError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34636: Ускорение повторного сканирования многих несовпадающих символов для s w и d в объектах байтов. (микрооптимизация)

  • bpo-24412: Разрешить параметры с именами addModuleCleanup() и addClassCleanup() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34630: Не регистрировать ошибки SSL-сертификата в коде asyncio (регистрация ошибок соединения и так пропускается).

  • bpo-32490: Предотвращение дублирования имен файлов в сообщениях исключений subprocess. Исправление от Zackery Spytz.

  • bpo-34363: dataclasses.asdict() и .astuple() теперь корректно обрабатывают namedtuples.

  • bpo-34625: Обновите версию библиотеки vendorized expat до 2.2.6.

  • bpo-32270: Модуль подпроцесса больше не закрывает ошибочно перенаправленные fds, даже если они находились в pass_fds за пределами стандартного набора {0, 1, 2}.

  • bpo-34622: Разрешить параметры с именами asyncio.CancelledError и asyncio.InvalidStateError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34610: Исправлен итератор multiprocessing.managers.DictProxy.

  • bpo-34421: Исправление протоколирования distutils для строк, отличных от ASCII. Это вызывало проблемы с установкой под Windows.

  • bpo-34604: Разрешить параметры с именами pwd.getpwnam и grp.getgrnam с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30977: Заставьте uuid.UUID использовать __slots__, чтобы уменьшить занимаемую им память. Основано на оригинальном патче от Wouter Bolsterlee.

  • bpo-34574: Итераторы OrderedDict больше не исчерпываются при pickling. Исправление от Сергея Федосеева.

  • bpo-8110: Разрешить параметры с именами subprocess и sys.platform == 'win32' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34530: Разрешить параметры с именами distutils.spawn.find_executable() и os.defpath с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34563: В Windows исправьте multiprocessing.Connection для очень большого чтения: исправьте _winapi.PeekNamedPipe() и _winapi.ReadFile() для чтения, превышающего INT_MAX (обычно 2**31-1).

  • bpo-34558: Исправьте опечатку в Lib/ctypes/_aix.py

  • bpo-34282: Разрешить параметры с именами Enum._convert и EnumMeta._convert_ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-22872: Разрешить параметры с именами ValueError и multiprocessing.Queue.put() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34515: Разрешить параметры с именами lib2to3.pgen2.tokenize и PEP 3131 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-13312: Предотвращает возможное целочисленное переполнение (неопределенное поведение) в коде обработки года модуля времени при передаче очень низкого отрицательного значения года.

  • bpo-34472: Улучшена совместимость с потоковыми файлами в zipfile. Ранее необязательная подпись не записывалась, и некоторые приложения ZIP не поддерживались. Исправление от Silas Sewell.

  • bpo-34454: Исправление сбоя в методах .fromisoformat() типов datetime, когда им передается юникод с кодовыми точками, не кодируемыми в форматеUTF-8. В частности, datetime.fromisoformat() теперь принимает суррогатные кодовые точки юникода, используемые в качестве разделителя. Отчет и тесты Алексея Избышева, исправление Пола Гансла.

  • bpo-6700: Исправление inspect.getsourcelines для фреймов/трассировок на уровне модуля. Исправление Владимира Матвеева.

  • bpo-34171: Разрешить параметры с именами trace и trace.cover с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34441: Разрешить параметры с именами ABC и __subclasses__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34427: Разрешить параметры с именами a.extend(a) и MutableSequence с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34412: Заставьте signal.strsignal() работать на HP-UX. Патч от Михаила Осипова.

  • bpo-20849: shutil.copytree теперь принимает новый ключевой аргумент dirs_exist_ok. Исправление Джоша Бронсона.

  • bpo-31715: Разрешить параметры с именами .mjs и application/javascript с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34384: Разрешить параметры с именами os.readlink() и path-like с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-22602: Декодер UTF-7 теперь выдает UnicodeDecodeError для неправильно сформированных последовательностей, начинающихся с «+» (как указано в RFC 2152). Исправление от Zackery Spytz.

  • bpo-2122: Разрешить параметры с именами mmap.flush() и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34341: При добавлении в ZIP-архив с расширением ZIP64 больше не увеличивается размер дополнительных полей существующих записей.

  • bpo-34333: Исправьте %-форматирование в pathlib.PurePath.with_suffix() при форматировании сообщения об ошибке.

  • bpo-18540: Разрешить параметры с именами imaplib.IMAP4 и imaplib.IMAP4_SSL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26502: Реализуйте метод traceback.FrameSummary.__len__(), чтобы сохранить совместимость со старым API кортежей.

  • bpo-34318: Разрешить параметры с именами assertRaises() и assertRaisesRegex() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-9372: Разрешить параметры с именами __getitem__() и xml.dom.pulldom.DOMEventStream с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33613: Исправление состояния гонки в multiprocessing.semaphore_tracker, когда трекер получает SIGINT до того, как успевает зарегистрировать обработчики сигналов для его игнорирования.

  • bpo-34248: Разрешить параметры с именами dbm.gnu.open() и dbm.ndbm.open() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33089: Добавьте math.dist() для вычисления евклидова расстояния между двумя точками.

  • bpo-34246: smtplib.SMTP.send_message() больше не изменяет содержимое аргумента mail_options. Исправление Пабло С. Блюма де Агиара.

  • bpo-31047: Исправление ntpath.abspath для недействительных путей в windows. Исправление от Franz Woellert.

  • bpo-32321: Добавьте обратную связь чистого Python для functools.reduce. Исправление Роберта Райта.

  • bpo-34270: Разрешить параметры с именами get_name() и set_name() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34263: цикл событий asyncio не будет передавать таймауты длиннее одного дня в epoll/select и т. д.

  • bpo-34035: Исправление нескольких ошибок AttributeError в методах zipfile seek(). Исправление от Mickaël Schoentgen.

  • bpo-32215: Устранение регрессии производительности в sqlite3, когда оператор DML появлялся в строке, отличной от остальной части SQL-запроса.

  • bpo-34075: Откажитесь от передачи экземпляров, не являющихся ThreadPoolExecutor, в AbstractEventLoop.set_default_executor().

  • bpo-34251: Разрешить параметры с именами msilib.Win64 и distutils с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-19891: Игнорировать ошибки, вызванные отсутствующим/незаписываемым homedir, при записи истории во время выхода из интерактивной сессии. Исправление Энтони Соттила.

  • bpo-33089: Улучшена функция math.hypot() для поддержки более чем двух измерений.

  • bpo-34228: tracemalloc: Переменная окружения PYTHONTRACEMALLOC=0 и опция командной строки -X tracemalloc=0 теперь позволяют явно отключить tracemalloc при запуске.

  • bpo-13041: Разрешить параметры с именами shutil.get_terminal_size() и argparse.HelpFormatter с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34213: Разрешить замороженным классам данных иметь поле с именем «object». Ранее это противоречило внутреннему использованию «object».

  • bpo-34052: Разрешить параметры с именами sqlite3.Connection.create_aggregate() и sqlite3.Connection.create_function() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34197: Разрешить параметры с именами csv и bool с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32788: Разрешить параметры с именами TypeError и __adapt__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21446: Разрешить параметры с именами reload и importlib.reload() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-940286: метод pydoc Helper.showtopic() теперь корректно выводит перекрестные ссылки на тему.

  • bpo-34164: Разрешить параметры с именами base64.b32decode() и base64.Error с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33729: Исправлены проблемы с разбором аргументов в hashlib.

  • bpo-34097: ZipFile может застегивать файлы старше 1980-01-01 и новее 2107-12-31, используя новый параметр strict_timestamps, ценой установки временной метки на предел.

  • bpo-34108: Удаление лишнего CR в рефакторе 2to3.

  • bpo-34070: Убедитесь, что при открытии файла с помощью buffering=-1 проверяется только, является ли хэндл tty.

  • bpo-27494: Исправлено bpo-27494. 2to3 теперь не принимает запятую в конце выражений генератора.

  • bpo-33967: functools.singledispatch теперь выдает TypeError вместо IndexError, когда не передаются позиционные аргументы.

  • bpo-34041: Добавьте параметр deterministic в метод sqlite3.Connection.create_function(). Исправление от Сергея Федосеева.

  • bpo-34056: Разрешить параметры с именами imp.load_module и get_data() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34054: Разрешить параметры с именами time.monotonic() и time.time() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34043: Оптимизация производительности распаковки tarfile примерно на 15% при использовании gzip.

  • bpo-34044: Разрешить параметры с именами subprocess.Popen и STARTUPINFO с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34010: Исправлена регрессия производительности при чтении потоков с помощью tarfile. Буферизованное чтение должно использовать список, а не добавлять к объекту байт.

  • bpo-34019: webbrowser: Исправление аргументов, передаваемых браузеру Opera при открытии нового URL с помощью модуля webbrowser. Исправление от Bumsik Kim.

  • bpo-34003: csv.DictReader теперь создает дикты вместо OrderedDicts. Исправление Майкла Селика.

  • bpo-33978: Закрытие существующих обработчиков логирования перед реконфигурацией через fileConfig и dictConfig. Исправление от Karthikeyan Singaravelan.

  • bpo-14117: Внесите небольшие изменения в turtledemo. Пример „wikipedia“ теперь стал „rosette“, описывая то, что он рисует. Уменьшен вывод „penrose“. Устранен вывод „1024“ для „tree“.

  • bpo-33974: Разрешить параметры с именами " и \ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27500: Исправьте getaddrinfo для корректного разрешения IPv6-адресов.

  • bpo-24567: Улучшение функции random.choices() для обработки субнормальных входных весов, которые иногда могут вызвать ошибку IndexError.

  • bpo-33871: Разрешить параметры с именами os.readv() и os.writev() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25007: Разрешить параметры с именами copy.copy() и copy.deepcopy() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33929: мультипроцессинг: Исправлено состояние гонки в Popen из multiprocessing.popen_spawn_win32. Теперь дочерний процесс дублирует конец трубы для чтения, а не «крадет» его. Ранее конец трубы для чтения «похищался» дочерним процессом, но при этом происходила утечка хэндла, если дочерний процесс завершался до того, как он успевал похитить хэндл у родительского процесса.

  • bpo-33899: Модуль Tokenize теперь неявно выдает NEWLINE при получении входных данных, не содержащих завершающей новой строки. Теперь это поведение соответствует тому, что делает внутренний токенизатор языка C. Внесено Аммаром Аскаром.

  • bpo-33897: Добавлен ключевой аргумент „force“ в logging.basicConfig().

  • bpo-33695: Разрешить параметры с именами shutil.copytree() и os.scandir() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33916: bz2 и lzma: Когда Decompressor.__init__() вызывается дважды, освободите старую блокировку, чтобы не допустить утечки памяти.

  • bpo-32568: Сделайте select.epoll() и его документацию согласованными в отношении sizehint и flags.

  • bpo-33833: Исправлена ошибка в asyncio, когда ProactorSocketTransport регистрировал AssertionError, если принудительно закрывался во время записи.

  • bpo-33663: Преобразование длины содержимого в строку перед помещением в заголовок.

  • bpo-33721: Разрешить параметры с именами os.path и exists() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26544: Исправлена реализация platform.libc_ver(). Она почти всегда возвращала версию „2.9“ для glibc.

  • bpo-33843: Разрешить параметры с именами cgi.escape и cgi.parse_qs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33842: Удалите tarfile.filemode, который устарел с Python 3.3.

  • bpo-30167: Предотвращение исключения site.main(), если установлен PYTHONSTARTUP. Исправление от Стива Вебера.

  • bpo-33805: Улучшение сообщения об ошибке dataclasses.replace(), когда InitVar не указан

  • bpo-33687: Разрешить параметры с именами os.chmod() и uu.decode() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33812: Экземпляр Datetime d с tzinfo не None, но с d.tzinfo.utcoffset(d), возвращающим None, теперь рассматривается методом astimezone() как наивный.

  • bpo-32108: В configparser не очищайте секцию, если она назначена самой себе.

  • bpo-27397: Заставьте модуль электронной почты правильно обрабатывать строки base64 недействительной длины.

  • bpo-33578: Реализуйте методы состояния многобайтовых кодеров/декодеров

  • bpo-30805: Избегайте состояния гонки с помощью отладочного протоколирования

  • bpo-33476: Исправьте _header_value_parser.py, когда в группе адресов отсутствовала финальная „;“. Внесено Энрике Перес-Терроном

  • bpo-33694: asyncio: Исправление состояния гонки, приводящего к потере данных при pause_reading()/resume_reading() при использовании ProactorEventLoop.

  • bpo-32493: Разрешить параметры с именами uuid_enc_be и configure.ac с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33792: Добавьте asyncio.WindowsSelectorEventLoopPolicy и asyncio.WindowsProactorEventLoopPolicy.

  • bpo-33274: W3C DOM Level 1 определяет возвращаемое значение функции Element.removeAttributeNode() как «Узел Attr, который был удален». xml.dom.minidom теперь соответствует этому требованию.

  • bpo-33778: Обновите базу данных unicodedata до версии 11.0.0 Unicode.

  • bpo-33165: Добавлен параметр stacklevel в вызовы протоколирования, чтобы позволить использовать обертки/помощники для API протоколирования.

  • bpo-33770: улучшите сообщение об исключении base64 для кодированных входных данных недопустимой длины

  • bpo-33769: asyncio/start_tls: Исправьте сообщение об ошибке; отмените обратные вызовы в случае необработанной ошибки; пометьте SSLTransport как закрытый, если он был прерван.

  • bpo-33767: Разрешить параметры с именами + и * с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33734: asyncio/ssl: Исправление ошибки AttributeError, увеличение таймаута рукопожатия по умолчанию

  • bpo-31014: Исправлено создание контроллера для webbrowser, когда пользователь указывает путь к записи в переменной окружения BROWSER. Основано на исправлении Джона Стилла.

  • bpo-2504: Добавьте gettext.pgettext() и варианты.

  • bpo-33197: Добавьте свойство описания для _ParameterKind

  • bpo-32751: При отмене задания из-за таймаута asyncio.wait_for() теперь будет ждать, пока отмена не завершится.

  • bpo-32684: Исправьте сбор, чтобы он распространял отмену самого себя даже при return_exceptions.

  • bpo-33654: Поддержка переключения типов протоколов в SSLTransport.set_protocol().

  • bpo-33674: Приостановите транспорт как можно раньше, чтобы еще больше снизить риск вызова data_received() до connection_made().

  • bpo-33671: Разрешить параметры с именами shutil.copyfile() и shutil.copy() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33674: Исправьте состояние гонки в SSLProtocol.connection_made() из asyncio.sslproto: немедленно начинайте рукопожатие вместо использования call_soon(). Ранее функция data_received() могла быть вызвана до начала хендшейка, что приводило к зависанию или сбою хендшейка.

  • bpo-31647: Исправлена ошибка, при которой вызов write_eof() на _SelectorSocketTransport после того, как он уже закрыт, приводил к ошибке AttributeError.

  • bpo-32610: Заставьте asyncio.all_tasks() возвращать только отложенные задачи.

  • bpo-32410: Избегайте блокировки файлового ввода-вывода в коде отката sendfile

  • bpo-33469: Исправление RuntimeError после закрытия цикла, в котором использовался run_in_executor

  • bpo-33672: Исправление сбоя Task.__repr__ при использовании фальшивых корутинов Cython

  • bpo-33654: Исправьте transport.set_protocol() для поддержки переключения между asyncio.Protocol и asyncio.BufferedProtocol. Исправьте loop.start_tls() для работы с asyncio.BufferedProtocols.

  • bpo-33652: Пикули переменных типов и подзаписанные дженерики теперь защищены от будущего и совместимы со старыми версиями Python.

  • bpo-32493: Исправлено uuid.uuid1() на FreeBSD.

  • bpo-33238: Разрешить параметры с именами InvalidStateError и concurrent.futures с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33618: Доработка и документирование предварительной и экспериментальной поддержки TLS 1.3 с OpenSSL 1.1.1

  • bpo-33625: Разрешить параметры с именами grp.getgrnam и grp.getgrgid с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33623: Исправление возможного SIGSGV при создании asyncio.Future в __del__.

  • bpo-11874: Используйте лучший регекс при разбиении использования на оборачиваемые части. Позволяет избежать ошибок утверждения при использовании пользовательских строк metavar.

  • bpo-30877: Исправлена ошибка в Python-реализации декодера JSON, из-за которой кэш разобранных строк не очищался после завершения декодирования. Основано на исправлении от c-fos.

  • bpo-33604: Удаление HMAC по умолчанию в md5, помеченное для удаления в 3.8 (удаление изначально планировалось в 3.6, перенесено в 3.8 в PR 7062).

  • bpo-33582: Выдать предупреждение об устаревании для inspect.formatargspec

  • bpo-21145: Добавьте декоратор functools.cached_property для вычисляемых свойств, кэшируемых в течение жизни экземпляра.

  • bpo-33570: Изменение настроек набора шифров TLS 1.3 для совместимости с OpenSSL 1.1.1-pre6 и более новыми версиями. В OpenSSL 1.1.1 шифры TLS 1.3 будут включены по умолчанию.

  • bpo-28556: Разрешить параметры с именами typing.Union и Union[Manager, Employee] с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-12486: tokenize.generate_tokens() теперь документирован как общедоступный API для токенизации юникодных строк. Ранее он присутствовал, но не был задокументирован.

  • bpo-33540: Разрешить параметры с именами block_on_close и ForkingMixIn с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33548: tempfile._candidate_tempdir_list должен учитывать общие места TEMP

  • bpo-33109: подпарсеры argparse снова не требуются по умолчанию, возвращая изменение в поведении, введенное bpo-26510 в 3.7.0a2.

  • bpo-33541: Разрешить параметры с именами _strptime.LocaleTime.__pad и _LocaleTime__pad с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33536: dataclasses.make_dataclass теперь проверяет недопустимые имена полей и дубликаты полей. Также добавлена проверка на недопустимые спецификации полей.

  • bpo-33542: Запретите uuid.get_node использовать DUID вместо MAC в Windows. Исправление от Цви Эффрона

  • bpo-26819: Исправление состояния гонки с ReadTransport.resume_reading в цикле событий проактора Windows.

  • Исправление сбоя в typing.get_type_hints(), когда ClassVar предоставлялся как строковая прямая ссылка.

  • bpo-33516: Разрешить параметры с именами unittest.mock.MagicMock и __round__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28612: Разрешить параметры с именами RobotFileParser и RobotFileParser.site_maps() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28167: Удалите platform.linux_distribution, который был устаревшим с версии 3.5.

  • bpo-33504: Разрешить параметры с именами configparser и collections.OrderedDict с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33505: Оптимизация asyncio.ensure_future() за счет переупорядочивания проверок if: 1,17x быстрее.

  • bpo-33497: Добавляет параметр errors в cgi.parse_multipart и заставляет кодировку в FieldStorage использовать заданные ошибки (необходимо для Twisted). Исправление от Amber Brown.

  • bpo-29235: Класс cProfile.Profile теперь можно использовать в качестве менеджера контекста. Исправление Скотта Сандерсона.

  • bpo-33495: Измените repr поля dataclasses.Fields, чтобы использовать repr каждого из его членов, а не str. Так будет понятнее, что на самом деле представляет собой каждое поле. Это особенно актуально для члена „type“.

  • bpo-26103: Разрешить параметры с именами inspect.isdatadescriptor и __set__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29209: Разрешить параметры с именами doctype() и XMLParser с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33453: Исправление работы классов данных при использовании буквальных аннотаций строковых типов или при использовании PEP 563 «Отложенная оценка аннотаций». Определяются только специфические строковые префиксы для ClassVar («ClassVar» и «typing.ClassVar») и InitVar («InitVar» и «dataclasses.InitVar»).

  • bpo-28556: Разрешить параметры с именами NamedTuple.__new__ и *args с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33365: Выводить значения заголовков помимо ключей заголовков, а не только ключи заголовков, если debuglevel установлен на >0 в http.client. Исправление Марко Стригла.

  • bpo-20087: Обновлено сопоставление псевдонимов с локалями, поддерживаемыми glibc 2.27.

  • bpo-33422: Исправление удаления кавычек в конце строки при поиске байтовых/строковых литералов в pydoc. Исправление от Андреса Дельфино.

  • bpo-28167: Разрешить параметры с именами platform.linux_distribution и platform.dist с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33281: Исправление регрессии ctypes.util.find_library на macOS.

  • bpo-33311: В текстовом и html-выводе, генерируемом cgitb, не отображаются круглые скобки, если текущий вызов выполняется непосредственно в модуле. Исправление Стефана Блондона.

  • bpo-27300: Классы файлов в tempfile теперь принимают параметр errors, который дополняет уже существующий encoding. Исправление Стефана Хохе.

  • bpo-32933: unittest.mock.mock_open() теперь поддерживает итерацию по содержимому файла. Исправление от Тони Флури.

  • bpo-33217: Поднимать TypeError при поиске объектов, не являющихся Enum, в классах Enum и членах Enum.

  • bpo-33197: Обновление сообщения об ошибке при построении недействительного inspect.Parameters Исправление от Donghee Na.

  • bpo-33383: Исправлен сбой в методе get() объекта базы данных dbm.ndbm при его вызове с одним аргументом.

  • bpo-33375: Модуль предупреждений теперь находит Python-файл, связанный с предупреждением, из объекта кода, а не из глобального пространства имен фрейма. Это соответствует тому, как tracebacks и pdb находят имена файлов, и должно лучше работать для динамически выполняемого кода.

  • bpo-33336: Разрешить параметры с именами imaplib и MOVE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32455: Добавлен параметр прыжок в dis.stack_effect().

  • bpo-27485: Переименование и устаревание недокументированных функций в urllib.parse().

  • bpo-33332: Добавьте signal.valid_signals(), чтобы раскрыть функциональность POSIX sigfillset().

  • bpo-33251: Разрешить параметры с именами ConfigParser.items() и vars() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33329: Исправление регрессии многопроцессорной обработки на новых версиях glibcs

  • bpo-33334: dis.stack_effect() теперь поддерживает все определенные опкоды, включая NOP и EXTENDED_ARG.

  • bpo-991266: Разрешить параметры с именами Comment и http.cookies.SimpleCookie с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33131: Обновление поставляемой версии pip до 10.0.1.

  • bpo-33308: Разрешить параметры с именами parser и line_info=False с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23403: lib2to3 теперь использует протокол pickle 4 для предварительно вычисленных грамматик.

  • bpo-33266: lib2to3 теперь распознает строки rf'...'.

  • bpo-11594: Убедитесь, что при использовании lib2to3 соблюдаются окончания строк.

  • bpo-33254: Разрешить параметры с именами importlib.resources.contents() и importlib.abc.ResourceReader.contents() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33265: Разрешить параметры с именами contextlib.ExitStack и contextlib.AsyncExitStack с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33263: Исправление утечки FD в _SelectorSocketTransport. Патч от Влада Старостина.

  • bpo-33256: Разрешить параметры с именами <module> и cgitb.html() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33144: Разрешить параметры с именами random.Random() и getrandbits() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33185: Разрешить параметры с именами -m и bpo-33053 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    os.getcwd(): Разрешить параметры с именами sys.path и "." с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29613: Разрешить параметры с именами SameSite и http.cookies с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33169: Разрешить параметры с именами None и sys.path_importer_cache с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33203: Разрешить параметры с именами random.Random.choice() и IndexError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33224: Обновите difflib.mdiff() для PEP 479. Преобразуйте не пойманную StopIteration в генераторе в return-выражение.

  • bpo-33209: Конечное обрамление в конце реализации C pickle.Pickler.dump().

  • bpo-32861: Представление urllib.robotparser’а __str__ теперь включает в себя записи с подстановочными знаками и поля «Crawl-delay» и «Request-rate». Также удалены лишние новые строки, которые добавлялись в конец строки. Исправление Майкла Лазара.

  • bpo-23403: Разрешить параметры с именами DEFAULT_PROTOCOL и pickle с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20104: Улучшена обработка ошибок и исправлена утечка ссылок в os.posix_spawn().

  • bpo-33106: Удаление ключа из базы данных dbm, доступной только для чтения, вызывает специфическую для модуля ошибку вместо KeyError.

  • bpo-33175: В классах данных Field.__set_name__ теперь ищет специальный метод __set_name__ на классе, а не на экземпляре значения по умолчанию.

  • bpo-32380: Создайте functools.singledispatchmethod для поддержки общей одиночной диспетчеризации дескрипторов и методов.

  • bpo-33141: Пусть объекты Field передают через __set_name__ свои значения по умолчанию, если у них есть свой __set_name__.

  • bpo-33096: Разрешите ttk.Treeview.insert вставлять iid, имеющий булево значение false. Обратите внимание, что iid=0 и iid=False будут одинаковыми. Исправление Гарвита Кхатри.

  • bpo-32873: Рассматривайте переменные типа и специальные формы типизации как неизменяемые при копировании и pickle. Это исправляет несколько мелких проблем и несоответствий, а также улучшает обратную совместимость с Python 3.6.

  • bpo-33134: При вычислении __hash__ класса данных используйте таблицу поиска, содержащую функцию, которая возвращает значение __hash__. Это лучше, чем искать строку, а затем тестировать ее, чтобы понять, что делать.

  • bpo-33127: Модуль ssl теперь компилируется с LibreSSL 2.7.1.

  • bpo-32505: Вызывает ошибку TypeError, если переменная-член класса данных имеет тип Field, но не имеет аннотации типа.

  • bpo-33078: Исправление сбоя на OSX, вызванного тестами, полагающимися на sem_getvalue

  • bpo-33116: Добавьте „Field“ в dataclasses.__all__.

  • bpo-32896: Исправление ошибки, когда при подклассификации класса данных с полем, использующим default_factory, создавался некорректный класс.

  • bpo-33100: Классы данных: Если поле имеет значение по умолчанию, которое является MemberDescriptorType, то это связано с тем, что поле находится в __слотах__, а не с действительным значением по умолчанию.

  • bpo-32953: Если класс, не являющийся классом данных, наследуется от замороженного класса данных, разрешите добавлять атрибуты в производный класс. Нельзя присваивать атрибуты только замороженному классу данных. Требуйте, чтобы все классы данных в иерархии были либо все замороженными, либо все незамороженными.

  • bpo-33097: Вызывает RuntimeError при вызове executor.submit во время выключения интерпретатора.

  • bpo-32968: Деление по модулю и по полу с участием дроби и float должно возвращать float.

  • bpo-33061: Разрешить параметры с именами NoReturn и __all__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33078: Исправьте обработку размера в multiprocessing.Queue при возникновении ошибки pickling.

  • bpo-33064: Разрешить параметры с именами *args и **kwargs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33056: FIX корректное закрытие утечек fds в concurrent.futures.ProcessPoolExecutor.

  • bpo-33021: Освобождение GIL во время вызова fstat(), что позволяет избежать зависания всех потоков при вызове mmap.mmap(), os.urandom() и random.seed(). Исправление Нира Соффера.

  • bpo-31804: Избегайте сбоев в multiprocessing.Process, если стандартные потоки закрыты или отсутствуют при выходе.

  • bpo-33034: Разрешить параметры с именами urlparse() и urlsplit() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30249: Улучшение сообщений исключений struct.unpack_from() для проблем с размером буфера и смещением.

  • bpo-33037: Пропускать отправку/получение данных после закрытия транспорта SSL.

  • bpo-27683: Разрешить параметры с именами ipaddress и hosts() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-22674: Добавьте функцию strsignal() в модуль сигналов, которая возвращает системное описание заданного сигнала, как возвращает strsignal(3).

  • bpo-32999: Разрешить параметры с именами ABC.__subclasscheck__(cls, subclass) и subclass с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33009: Исправьте inspect.signature() для однопараметрических partialmethods.

  • bpo-32969: Раскрытие нескольких отсутствующих констант в zlib и исправление соответствующей документации.

  • bpo-32056: Разрешить параметры с именами aifc и wave с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32970: Улучшена разборка инструкции MAKE_FUNCTION.

  • bpo-32844: Исправление неправильного перенаправления низкого дескриптора (0 или 1) на stderr в подпроцессе, если другой низкий дескриптор закрыт.

  • bpo-32960: Для классов данных запрещено наследовать замороженные классы от незамороженных, а также запрещено наследовать незамороженные классы от замороженных. Это ограничение будет снято в будущем.

  • bpo-32713: Исправлена работа tarfile.itn с выходящими за границы плавающими значениями. Автор исправления - Джоффри Фюрер.

  • bpo-32257: Модуль ssl теперь содержит константу OP_NO_RENEGOTIATION, доступную с OpenSSL 1.1.0h или 1.1.1.

  • bpo-32951: Прямое инстанцирование объектов SSLSocket и SSLObject теперь запрещено. Конструкторы никогда не были документированы, протестированы или разработаны как публичные конструкторы. Пользователи должны были использовать ssl.wrap_socket() или SSLContext.

  • bpo-32929: Удалите трехсоставной параметр «hash» и добавьте булево значение «unsafe_hash». Если unsafe_hash равен True, добавьте функцию __hash__, но если такой __hash__ существует, вызовите TypeError. Если unsafe_hash равно False, добавьте __hash__, основанный на значениях eq= и frozen=. Поведение unsafe_hash=False аналогично старому поведению hash=None. unsafe_hash=False используется по умолчанию, как раньше было hash=None.

  • bpo-32947: Добавьте OP_ENABLE_MIDDLEBOX_COMPAT и протестируйте обходной путь для TLSv1.3 для будущей совместимости с OpenSSL 1.1.1.

  • bpo-32146: Документирование взаимодействия между замороженными исполняемыми файлами и методами запуска spawn и forkserver в многопроцессорных системах.

  • bpo-30622: Модуль ssl теперь обнаруживает отсутствие поддержки NPN в LibreSSL.

  • bpo-32922: dbm.open() теперь кодирует имя файла кодировкой файловой системы, а не кодировкой по умолчанию.

  • bpo-32759: Освободить неиспользуемые арены в multiprocessing.heap.

  • bpo-32859: Разрешить параметры с именами os.dup2 и dup3 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32556: nt._getfinalpathname, nt._getvolumepathname и nt._getdiskusage теперь корректно конвертируются из байтов.

  • bpo-21060: Перепишите сбивающее с толку сообщение из setup.py upload с «No dist file created in earlier command» на более полезное «Must create and upload files in one command».

  • bpo-32857: Разрешить параметры с именами tkinter и after_cancel(None) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32852: Убедитесь, что sys.argv остается в виде списка при выполнении трассировки.

  • bpo-31333: Разрешить параметры с именами _abc и abc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

    _abc_registry: Разрешить параметры с именами _abc_cache и _abc_negative_cache с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32841: Исправлена проблема asyncio.Condition, из-за которой после уведомления и отмены условной блокировки отмена молча игнорировалась. Исправление от Bar Harel.

  • bpo-32819: ssl.match_hostname() была упрощена и больше не зависит от модуля re и ipaddress для подстановочных символов и IP-адресов. Улучшено сообщение об ошибках, связанных с недействительными подстановочными знаками.

  • bpo-19675: multiprocessing.Pool больше не сливает процессы при неудачной инициализации.

  • bpo-32394: сокет: Удаление флагов TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL на старых версиях Windows во время выполнения.

  • bpo-31787: Исправлены утечки методов __init__() в различных модулях. (Внесено Ореном Милманом)

  • bpo-30157: Исправлено угадывание кавычек и разделителя в csv.Sniffer.sniff(), когда только последнее поле заключено в кавычки. Исправление от Джейка Дэвиса.

  • bpo-30688: Добавлена поддержка эскейпов \N{name} в регулярных выражениях. Основано на исправлении Джонатана Юниса.

  • bpo-32792: collections.ChainMap() сохраняет порядок базовых отображений.

  • bpo-32775: fnmatch.translate() больше не создает шаблоны, содержащие операции над множествами. Наборы, начинающиеся с „[“ или содержащие „–“, „&&“, „~~“ или „||“, будут по-другому интерпретироваться в регулярных выражениях в будущих версиях. В настоящее время они выдают предупреждения. fnmatch.translate() теперь позволяет избежать случайного получения шаблонов, содержащих такие наборы.

  • bpo-32622: Реализуйте собственный быстрый sendfile для цикла событий проактора Windows.

  • bpo-32777: Исправление редкого, но потенциально возможного тупика дочернего процесса preexec в подпроцессе на POSIX-системах при пометке дескрипторов файлов, наследуемых при exec в дочернем процессе. Эта ошибка, похоже, появилась в версии 3.4.

  • bpo-32647: Модуль ctypes раньше зависел от косвенной линковки для dlopen. Теперь разделяемое расширение явно связывается с libdl на платформах с dl.

  • bpo-32749: Разрешить параметры с именами dbm.dumb и dbm.dumb.open() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32741: Реализуйте метод asyncio.TimerHandle.when().

  • bpo-32691: Используйте mod_spec.parent при запуске модулей с pdb

  • bpo-32734: Исправлена проблема безопасности asyncio.Lock(), из-за которой один и тот же замок можно было получить и заблокировать несколько раз, не освобождая его. Исправление от Bar Harel.

  • bpo-32727: Не включать поле имени в SMTP-конверт с адреса. Исправление от Стефана Виртела

  • bpo-31453: Добавлены константы TLSVersion и атрибуты SSLContext.maximum_version / minimum_version. В новом API реализована функция OpenSSL 1.1 https://web.archive.org/web/20180309043602/https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html.

  • bpo-24334: Внутренние детали реализации модуля ssl были очищены. В SSLSocket стало на один уровень непрямой связи меньше. Информация о владельце и сессии теперь обрабатывается конструктором SSLSocket и SSLObject. Упрощена реализация привязки каналов.

  • bpo-31848: Исправьте обработку ошибок в Aifc_read.initfp(), когда чанк SSND не был найден. Исправление от Zackery Spytz.

  • bpo-32585: Добавьте виджет Ttk spinbox в tkinter.ttk. Исправление от Alan D Moore.

  • bpo-32512: Разрешить параметры с именами profile и -m module_name с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-8525: help() для типа теперь отображает встроенные подклассы. Это сделано в первую очередь для того, чтобы помочь с уведомлением о более специфических подклассах исключений.

    Патч от Саньям Кхурана.

  • bpo-31639: http.server теперь раскрывает класс ThreadingHTTPServer и использует его при запуске модуля с -m, чтобы справиться с предварительным открытием сокетов веб-браузерами.

  • bpo-29877: compileall: импортировать ProcessPoolExecutor только при необходимости, предотвращая зависания на платформах с низкими ресурсами

  • bpo-32221: Разрешить параметры с именами %scope и socket.recvfrom() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32147: binascii.unhexlify() теперь работает в 2 раза быстрее. Патч от Сергея Федосеева.

  • bpo-30693: Класс TarFile теперь рекурсирует каталоги воспроизводимым способом.

  • bpo-30693: Класс ZipFile теперь рекурсирует каталоги воспроизводимым способом.

  • bpo-31680: Добавлено curses.ncurses_version.

  • bpo-31908: Разрешить параметры с именами trace и --missing с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31608: Разрешить параметры с именами TypeError и collections.deque с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31425: Добавляет поддержку сокетов семейства адресов AF_QIPCRTR, поддерживаемых ядром Linux. Оно используется для связи с сервисами, такими как GPS или радио, работающими на устройствах Qualcomm. Исправление авторства Бьорна Андерссона.

  • bpo-22005: Разрешить параметры с именами datetime и date с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27645: Разрешить параметры с именами sqlite3.Connection и backup с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-16865: Поддержка массивов >=2GiB в ctypes. Исправление от Сегева Файнера.

  • bpo-31508: Разрешить параметры с именами tkinter.ttk.Treeview.selection и selection_set с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29456: Исправлены ошибки в нормализации хангыля: u1176, u11a7 и u11c3

Документация

  • bpo-21257: Документ http.client.parse_headers().

  • bpo-34764: Улучшите пример iter() со вторым аргументом sentinel.

  • bpo-35564: Явно задайте переменную master_doc в conf.py для соответствия Sphinx 2.0

  • bpo-35511: Указано, что класс profile.Profile не поддерживает методы enable и disable. Также уточнено, что объект Profile в качестве менеджера контекста поддерживается только в модуле cProfile.

  • bpo-10536: Улучшение документации по gettext. Исправление от Éric Araujo

  • bpo-35089: Разрешить параметры с именами typing.io и typing.re с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35038: Исправьте документацию о несуществующем атрибуте f_restricted в объекте фрейма. Исправление Стефана Виртела

  • bpo-35042: Замените PEP XYZ на роль pep и разрешите использовать прямые ссылки на PEP.

  • bpo-35044: Исправьте документацию с ролью exc для присвоенного исключения. Исправление от Стефана Виртела

  • bpo-35035: Разрешить параметры с именами email.utils и email.utils.rst с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34967: Используйте app.add_object_type() вместо устаревшей функции Sphinx app.description_unit()

  • bpo-34913: Добавьте документацию о новом интерфейсе командной строки модуля gzip.

  • bpo-32174: документ chm правильно отображает символы, отличные от ASCII, в некоторых системах MBCS Windows.

  • bpo-11233: Создание директивы доступности для документации. Оригинальный патч Георга Брандла.

  • bpo-34790: Документируйте, как передача корутинов в asyncio.wait() может запутать.

  • bpo-34552: Разрешить параметры с именами == и is с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28617: Исправлена информация в документации stdtypes о типах, поддерживающих тесты на принадлежность.

  • bpo-20177: Перенос datetime.date.fromtimestamp в Argument Clinic. Исправление Тима Хоффмана.

  • bpo-34065: Исправьте неверно написанный синтаксис разметки документации basicConfig

  • bpo-33460: заменили многоточие на правильные коды ошибок в главе 3 учебника.

  • bpo-33847: Добавьте запись оператора „@“ в индекс.

  • bpo-33409: Уточнена связь между режимом PYTHONCOERCECLOCALE в PEP 538 и режимом PYTHONUTF8 в PEP 540.

  • bpo-33197: Добавьте тег versionadded в документацию ParameterKind.description

  • bpo-17045: Улучшение документации C-API для PyTypeObject. Это включает в себя добавление нескольких таблиц быстрых ссылок и множество недостающих записей о слотах/типефах. Существующие записи также были приведены в порядок и получили более последовательный формат.

  • bpo-33736: Разрешить параметры с именами asyncio.open_connection() и asyncio.start_server() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23859: Документ, подтверждающий, что asyncio.wait() не отменяет свои фьючерсы по тайм-ауту.

  • bpo-32436: Документ PEP 567 меняется на asyncio.

  • bpo-33604: Обновите значение HMAC md5 по умолчанию на DeprecationWarning, удалите до версии 3.8.

  • bpo-33594: Разрешить параметры с именами getargspec и from_function с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33503: Исправьте неработающую ссылку на pypi

  • bpo-33421: Добавьте недостающую документацию для typing.AsyncContextManager.

  • bpo-33487: BZ2file теперь выдает DeprecationWarning при передаче buffering=None, сообщение об устаревании и документация также теперь явно указывают, что это устарело с версии 3.0.

  • bpo-33378: Добавьте переключатель корейского языка для https://docs.python.org/3/

  • bpo-33276: Уточните, что атрибут __path__ в модулях не может быть просто любым значением.

  • bpo-33201: Модернизируйте документацию по написанию типов расширения C.

  • bpo-33195: Разрешить параметры с именами Py_UNICODE и c-api/arg с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33126: Документ PyBuffer_ToContiguous().

  • bpo-27212: Измените документацию для рецепта islice(), чтобы он потреблял начальные значения вплоть до начального индекса.

  • bpo-28247: Обновите документацию zipapp, чтобы описать, как создавать автономные приложения.

  • bpo-18802: Изменения в документации для ipaddress. Исправление от Jon Foster и Berker Peksag.

  • bpo-27428: Разрешить параметры с именами WindowsRegistryFinder и MetaPathFinder с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28124: Функция модуля ssl ssl.wrap_socket() была отменена и устарела в пользу более безопасного и эффективного метода SSLContext.wrap_socket().

  • bpo-17232: Уточнение документации для -O и -OO. Исправление Терри Риди.

  • bpo-32436: Добавьте документацию для модуля contextvars (PEP 567).

  • bpo-32800: Обновление ссылки на w3c doc для стандартных пространств имен xml.

  • bpo-11015: Обновление документации test.support.

  • bpo-32613: Обновите faq/windows.html, чтобы использовать команду py из PEP 397 вместо python.

  • bpo-8722: Разрешить параметры с именами __getattr__() и get() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32614: Измените примеры RE в документации, чтобы использовать необработанные строки для предотвращения DeprecationWarning, и добавьте текст в REGEX HOWTO, чтобы подчеркнуть это ухудшение.

  • bpo-20709: Удалите абзац, в котором мы объясняем, что os.utime() не поддерживает каталог в качестве пути в Windows. Исправление от Jan-Philip Gehrcke

  • bpo-32722: Удалите неудачный пример в учебнике по генератору выражений. Исправление от Стефана Виртела

  • bpo-31972: Улучшите документацию для подклассов pathlib.PurePath.

  • bpo-30607: Используйте внешний пакет python-docs-theme при сборке документации.

  • bpo-8243: Добавьте примечание о поведении исключений curses.addch и curses.addstr при записи за пределами окна или блокнота.

  • bpo-32337: Обновление документации, связанной с заказом dict.

  • bpo-25041: Разрешить параметры с именами AF_PACKET и socket с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31432: Уточните значение флагов CERT_NONE, CERT_OPTIONAL и CERT_REQUIRED для ssl.SSLContext.verify_mode.

Тесты

  • bpo-35772: Исправление тестов разреженных файлов test_tarfile на ppc64 с файловой системой tmpfs. Исправьте функцию, проверяющую, поддерживает ли файловая система разреженные файлы: создайте файл, содержащий данные и «дыры», вместо того, чтобы создавать файл, не содержащий данных. Эффективный размер блока tmpfs - это размер страницы (tmpfs живет в страничном кэше). RHEL использует 64 килобайта страниц на aarch64, ppc64, ppc64le, только s390x и x86_64 используют 4 килобайта страниц, в то время как тест пробивает дыры по 4 килобайта.

  • bpo-35045: Сделайте тесты ssl менее строгими, а также примите TLSv1 в качестве системы по умолчанию. Изменения устраняют брешь в test_min_max_version на Fedora 29.

  • bpo-32710: Разрешить параметры с именами test_asyncio/test_sendfile.py и tearDownModule() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33717: test.pythoninfo теперь регистрирует информацию обо всех часах, а не только о time.time() и time.perf_counter().

  • bpo-35488: Добавьте тест в pathlib’s Path.match(), чтобы убедиться, что он не поддерживает рекурсивное сопоставление шаблонов в стиле glob**.

  • bpo-31731: Исправление состояния гонки в check_interrupted_write() test_io: создание непосредственно потока с заблокированным сигналом SIGALRM, а не блокирование сигнала позже из потока. Ранее существовала вероятность того, что поток получит сигнал до того, как он будет заблокирован.

  • bpo-35424: Исправьте test_multiprocessing_main_handling: используйте multiprocessing.Pool с менеджером контекста, а затем явно присоединяйтесь к пулу.

  • bpo-35519: Разрешить параметры с именами test.bisect и test.bisect_cmd с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35513: Разрешить параметры с именами time.time() и time.monotonic() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34279: Разрешить параметры с именами test.support.run_unittest() и TestDidNotRun с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35412: Добавьте тестовый пример в test_future4: проверка юникодного литерала.

  • bpo-26704: Добавлен тест, демонстрирующий двойное исправление метода экземпляра. Исправление Энтони Соттила.

  • bpo-33725: test_multiprocessing_fork может упасть на последних версиях macOS. Пока проблема не будет решена, пропустите тест на macOS.

  • bpo-35352: Измените test_asyncio для использования набора сертификатов из тестового каталога.

  • bpo-35317: Разрешить параметры с именами mktime() и test_email с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21263: После нескольких сообщений о том, что test_gdb не работает должным образом на macOS, и поскольку gdb больше не поставляется по умолчанию, test_gdb теперь пропускается на macOS, когда для компиляции Python используется LLVM Clang. Исправление от Lysandros Nikolaou

  • bpo-34279: regrtest выдает предупреждение, если в конкретном тестовом файле не было выполнено ни одного теста. Также выдается новое состояние конечного результата, если ни один тест не был выполнен во всех тестовых файлах. Исправление от Pablo Galindo.

  • bpo-34962: make docstest в Doc теперь проходит. и выполняется в CI

  • bpo-23596: Используйте argparse для командной строки модуля gzip. Исправление от Antony Lee

  • bpo-34537: Разрешить параметры с именами test_gdb.test_strings() и LC_ALL=C с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34587: test_socket: Удалите RDSTest.testCongestion(). Тест пытается заполнить буфер сокета приемника и ожидает ошибки. Но протокол RDS этого не требует. Более того, Linux-реализация RDS ожидает, что производитель сообщений снизит свою скорость, а приемник не должен вызывать ошибку. Тест не работает на Fedora 28 по своему замыслу, так что просто удалите его.

  • bpo-34661: Исправьте test_shutil, если unzip не поддерживает -t.

  • bpo-34200: Исправлена недетерминированная нестабильность test_pkg из-за неиспользования страшной логики test.support.module_cleanup() для сохранения и восстановления содержимого sys.modules между тестовыми случаями.

  • bpo-34569: Экспериментальные каналы данных PEP 554 теперь корректно передают отрицательные объекты PyLong между суб-интерпретаторами на 32-битных системах. Исправление Майкла Фелта.

  • bpo-34594: Исправьте использование жестко закодированных значений errno в тестах.

  • bpo-34579: Исправьте test_embed для AIX Исправление от Michael Felt

  • bpo-34542: Используйте 3072 RSA-ключа и подпись SHA-256 для тестовых сертификатов и ключей.

  • bpo-11193: Уберите специальное условие для AIX в test_subprocess.test_undecodable_env

  • bpo-34347: Исправьте test_utf8_mode.test_cmd_line для AIX

  • bpo-34490: На AIX с сокетами семейства AF_UNIX getsockname() не предоставляет „sockname“, поэтому пропускайте вызовы transport.get_extra_info(„sockname“)

  • bpo-34391: Исправьте проверку ftplib на TLS 1.3 при чтении из сокета данных.

  • bpo-11192: Разрешить параметры с именами test_socket и inet_pton6_zone() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34399: Обновите все RSA-ключи и DH-параметры, чтобы они использовали не менее 2048 бит.

  • bpo-34373: Разрешить параметры с именами test_mktime и test_pthread_getcpuclickid с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-11191: Пропускать тест distutils „test_search_cpp“ при использовании XLC в качестве патча компилятора от aixtools (Майкл Фелт)

  • Улучшено сообщение об ошибке, когда mock assert_has_calls не работает.

  • bpo-33746: Исправление test_unittest при запуске в режиме verbose.

  • bpo-33901: Исправьте test_dbm_gnu на macOS с gdbm 1.15: добавьте большее значение, чтобы убедиться, что размер файла меняется.

  • bpo-33873: Исправлена ошибка в regrtest, из-за которой при использовании –huntrleaks/-R запускался дополнительный тест. Выход с ошибкой в случае указания неверных параметров для –huntrleaks/-R (должен быть использован как минимум один прогон разминки и одно повторение).

  • bpo-33562: Проверьте, что глобальная политика цикла событий asyncio не оставлена ни одним тестом.

  • bpo-33655: Игнорируйте сбои test_posix_fallocate на платформах BSD, которые могут быть вызваны работой на ZFS.

  • bpo-32962: Исправлен test_gdb, когда Python компилируется с флагами -mcet -fcf-protection -O0.

  • bpo-33358: Разрешить параметры с именами test_embed.test_pre_initialization_sys_options() и --enable-shared с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32872: Избежать проблемы совместимости regrtest с пакетами пространства имен.

  • bpo-32517: Разрешить параметры с именами test_asyncio и KqueueSelector с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32663: Разрешить параметры с именами SMTPUTF8SimTests и test_smtplib.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27643: Тесту Test_C нужны «короткие подписанные» битовые поля, но компилятор IBM XLC (на AIX) этого не поддерживает Пропустите код и тест при использовании AIX и XLC

    Применимо к Python2-2.7 и более поздним версиям

  • bpo-19417: Добавьте test_bdb.py.

  • bpo-31809: Добавьте тесты для проверки соединения с кривыми secp ECDH.

Построить

  • bpo-34691: Модуль _contextvars теперь встроен в основную библиотеку Python под Windows.

  • bpo-35683: Улучшены шаги сборки Azure Pipelines, теперь они корректно проверяют макеты

  • bpo-35642: Удалите файл asynciomodule.c из pythoncore.vcxproj

  • bpo-35550: Исправление некорректных проверок #ifdef в Solaris, чтобы при компиляции искать __sun && __SVR4 вместо sun.

  • bpo-35499: Разрешить параметры с именами make profile-opt и CFLAGS_NODIST с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35257: Избегайте утечки флагов компоновщика из Link Time Optimizations (LTO) в distutils при компиляции расширений C.

  • bpo-35351: При сборке Python с помощью clang и LTO флаги LTO больше не передаются в CFLAGS для сборки сторонних расширений C через distutils.

  • bpo-35139: Разрешить параметры с именами pyexpat и Modules/Setup с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35059: PCbuild: Установите InlineFunctionExpansion в OnlyExplicitInline (опция «/Ob1») в pyproject.props в режиме Debug для расширения функций, помеченных как inline. Это изменение должно сделать Python, скомпилированный в режиме отладки, немного быстрее на Windows.

  • bpo-35011: Восстанавливает использование pyexpatns.h для изоляции нашей встроенной копии библиотеки expat C, чтобы ее символы не конфликтовали при компоновке или динамической загрузке со встроенным приложением или другими модулями расширения с их собственной версией libexpat.

  • bpo-28015: Have –with-lto корректно работает с clang.

  • bpo-34765: Обновите устаревший файл install-sh до последней ревизии из automake v1.16.1

  • bpo-34585: Проверка порядка байтов с плавающей точкой в configure.ac с помощью тестов компиляции вместо выполнения кода, чтобы эти проверки работали в кросс-компилируемых сборках.

  • bpo-34710: Исправлена сборка модуля SSL с OpenSSL и педантичными CFLAGS.

  • bpo-34582: Добавьте вывод JUnit XML для регрессионных тестов и обновите сборки Azure DevOps.

  • bpo-34081: Сделать предупреждения Sphinx ошибками в Makefile Docs.

  • bpo-34555: Разрешить параметры с именами HAVE_LINUX_VM_SOCKETS_H и HAVE_SOCKADDR_ALG с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33015: Разрешить параметры с именами PyThread_start_new_thread() и NULL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34245: Общая библиотека Python теперь устанавливается с правом записи (режим 0755), что является стандартным способом установки таких библиотек.

  • bpo-34121: Исправление обнаружения атомарной поддержки C11 на clang.

  • bpo-32430: Переименуйте Modules/Setup.dist в Modules/Setup и уберите необходимость вручную копировать первый во второй при обновлении локального дерева исходников.

  • bpo-30345: Добавьте -g в LDFLAGS при компиляции с LTO, чтобы получить отладочные символы.

  • bpo-5755: Разрешить параметры с именами -Wstrict-prototypes и CFLAGS_NODIST с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33614: Обеспечивает правильную регенерацию файлов определения модулей для стабильного ABI в Windows.

  • bpo-33648: Флаг конфигурации –with-c-locale-warning был удален. Он не оказывал никакого влияния уже около года.

  • bpo-33522: Включите сборки CI в Visual Studio Team Services по адресу https://python.visualstudio.com/cpython.

  • bpo-33512: проверка конфигурации на «длинный дубль» была упрощена

  • bpo-33483: Компилятор C теперь корректно определяется из стандартных переменных окружения. Опции –without-gcc и –with-icc были удалены.

  • bpo-33394: Включает подробную сборку для модулей расширения, когда GNU make передаются макросы в командной строке.

  • bpo-33393: Обновление файлов config.guess и config.sub.

  • bpo-33377: Добавьте новые триплеты для вариантов mips r6 и riscv (используются в суффиксах расширений).

  • bpo-32232: Разрешить параметры с именами Modules/Setup и -DPy_BUILD_CORE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33182: Тесты встраивания снова могут быть собраны с помощью clang 6.0

  • bpo-33163: Обновите pip до версии 9.0.3 и setuptools до версии 39.0.1.

  • bpo-33012: в gcc 8 добавлена новая эвристика для обнаружения некорректных приведений функций, и стоковая сборка python, похоже, довольно часто выдает это предупреждение. Наиболее распространенным является приведение функции METH_NOARGS (которая использует только один аргумент) к PyCFunction. Исправьте это, добавив фиктивный аргумент во все функции, реализующие METH_NOARGS.

  • bpo-32898: Исправление отладочной сборки python при использовании COUNT_ALLOCS.

  • bpo-29442: Замените optparse на argparse в setup.py

Windows

  • bpo-35890: Исправление согласованности вызовов API для GetVersionEx и wcstok.

  • bpo-32560: Разрешить параметры с именами py и STARTUPINFO с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35854: Исправление EnvBuilder и –symlinks в venv на Windows

  • bpo-35811: Избегайте распространения настроек venv при запуске через py.exe

  • bpo-35797: Исправьте исполняемый файл по умолчанию, используемый модулем многопроцессорной обработки

  • bpo-35758: Разрешить сборку на ARM с помощью MSVC.

  • bpo-29734: Исправление утечки хэндлов в os.stat на Windows.

  • bpo-35596: Используйте непроверенные PYC для встраиваемого дистрибутива, чтобы избежать ограничений zipimport.

  • bpo-35596: Исправление многократного добавления vcruntime140.dll в дистрибутив с возможностью встраивания.

  • bpo-35402: Обновление сборки Windows для использования Tcl и Tk 8.6.9

  • bpo-35401: Обновление сборки Windows до OpenSSL 1.1.0j

  • bpo-34977: venv на Windows теперь будет использовать перенаправление python.exe, а не копировать фактические двоичные файлы из базового окружения.

  • bpo-34977: Добавляет поддержку создания пакета Windows App Store

  • bpo-35067: Удалите модуль _distutils_findvs и используйте вместо него vswhere.exe.

  • bpo-32557: Разрешите shutil.disk_usage использовать путь к файлу в Windows

  • bpo-34770: Исправление возможного разыменования нулевого указателя в pyshellext.cpp.

  • bpo-34603: Исправление возврата структур из функций, производимых MSVC

  • bpo-34581: Охрана специфического для MSVC кода в socketmodule.c с #ifdef _MSC_VER.

  • bpo-34532: Исправлен код выхода из списка аргументов версии для py.exe.

  • bpo-34062: Исправлены аргументы „–list“ и „–list-paths“ для программы запуска py.exe

  • bpo-34225: Убедитесь, что каталоги INCLUDE и LIB не заканчиваются обратной косой чертой.

  • bpo-34011: Изменен набор кода, который копировал все DLL и init.tcl из запущенного Python в создаваемый venv. Эти копии нужны только при запуске из исходной сборки Python, и код копирования теперь выполняется только в этом случае, а не каждый раз, когда создается venv.

  • bpo-34006: Отмените ограничение на длину строки для справочных документов Windows. Ограничение на длину строки не нужно, поскольку страницы отображаются в отдельном приложении, а не на вкладке браузера. Кроме того, оно может плохо взаимодействовать с настройками DPI.

  • bpo-31546: Восстанавливает работу PyOS_InputHook в ожидании ввода пользователя в подсказке. Это восстанавливает интеграцию интерактивных окон GUI (таких как фигуры Matplotlib) с подсказкой в Windows.

  • bpo-30237: Ошибка вывода, когда ReadConsole отменяется CancelSynchronousIo вместо аварийного завершения.

  • bpo-33895: GIL освобождается при вызове функций, которые получают блокировку загрузчика Windows.

  • bpo-33720: Уменьшает максимальную глубину рекурсии маршала в релизных сборках.

  • bpo-29097: Разрешить параметры с именами datetime.fromtimestamp() и OSError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33316: PyThread_release_lock всегда терпит неудачу

  • bpo-33184: Обновление программы установки Windows для использования OpenSSL 1.1.0h.

  • bpo-32890: Исправьте использование GetLastError() вместо errno в os.execve() и os.truncate().

  • bpo-33016: Исправьте потенциальное использование неинициализированной памяти в nt._getfinalpathname

  • bpo-32903: Исправление утечки памяти в os.chdir() в Windows, если текущий каталог задан как UNC-путь.

  • bpo-32901: Обновите версии Tcl и Tk до 8.6.8

  • bpo-31966: Исправлена ошибка WindowsConsoleIO.write() для записи пустых данных.

  • bpo-32409: Убедитесь, что activate.bat может обрабатывать содержимое Unicode.

  • bpo-32457: Улучшена обработка денормализованного пути к исполняемому файлу при запуске Python.

  • bpo-32370: Используйте правильную кодировку для вывода ipconfig в модуле uuid. Исправление от Segev Finer.

  • bpo-29248: Разрешить параметры с именами os.readlink() и PrintNameOffset с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1104: Правильно обрабатывайте длину строки в msilib.SummaryInfo.GetProperty(), чтобы она не обрезала последний символ.

macOS

  • bpo-35401: Обновите программу установки macOS для использования OpenSSL 1.1.0j.

  • bpo-35025: Разрешить параметры с именами CLOCK_GETTIME и timemodule с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24658: На macOS исправлено чтение из файла и запись в файл размером более 2 ГБ.

  • bpo-34405: Обновление до OpenSSL 1.1.0i для сборок установщика macOS.

  • bpo-33635: В macOS stat на некоторых файловых дескрипторах (/dev/fd/3 f.e) приводит к ошибке OSError, связанной с плохим файловым дескриптором. Защита от этого исключения была добавлена в методы is_dir, is_file и аналогичные. DirEntry.is_dir также может выбросить это исключение, поэтому _RecursiveWildcardSelector._iterate_directories также был расширен тем же шаблоном игнорирования ошибок.

  • bpo-13631: Файл .editrc в домашней директории пользователя теперь корректно обрабатывается при инициализации readline через эмуляцию editline на macOS.

  • bpo-33184: Обновите сборку программы установки macOS для использования OpenSSL 1.1.0h.

  • bpo-32726: Сборка и соединение с частной копией Tcl/Tk 8.6 для программы установки macOS 10.6+. Вариант установщика 10.9+ уже делает это. Это означает, что Python 3.7, предоставляемый установщиками python.org macOS, больше не нуждается в использовании каких-либо внешних версий Tcl/Tk, как системных, так и установленных пользователем, таких как ActiveTcl.

  • bpo-32901: Обновление программы установки macOS 10.9+ до версии Tcl/Tk 8.6.8.

  • bpo-31903: Разрешить параметры с именами _scproxy и SystemConfiguration с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

IDLE

  • bpo-35770: IDLE macosx удаляет Options => Configure IDLE. Ранее он по ошибке удалил Window => Zoom Height. (Теперь Zoom Height находится в меню Options). На Mac диалог настроек доступен через Preferences в меню IDLE.

  • bpo-35769: Измените новое имя файла IDLE с „Untitled“ на „untitled“

  • bpo-35660: Исправьте импорты в idlelib.window.

  • bpo-35641: Правильный формат calltip, если функция не имеет документальной строки.

  • bpo-33987: Используйте ttk Frame для ttk-виджетов.

  • bpo-34055: Исправление ошибочных «умных» отступов и новых строк в IDLE Shell.

  • bpo-35591: Find Selection теперь работает, когда выбор не найден.

  • bpo-35196: Ускоряет подсчет строк соковыжималки.

  • bpo-35598: Обновите config_key: используйте имена PEP 8 и виджеты ttk, сделайте некоторые объекты глобальными и добавьте тесты.

  • bpo-28097: Добавление записей предыдущей/следующей истории в меню оболочки.

  • bpo-35208: Squeezer теперь правильно считает обернутые строки перед новыми строками.

  • bpo-35555: Закрашивает пункт контекстного меню «Код», если он неприменим.

  • bpo-35521: Документирование функции контекста кода редактора IDLE. Добавьте несколько внутренних ссылок в документацию по IDLE.

  • bpo-22703: Ярлык контекстного меню Code Context теперь переключается между Show/Hide Code Context. В меню Zoom Height теперь переключаются между Zoom/Restore Height. Высота масштаба переместилась из меню «Окно» в меню «Параметры».

  • bpo-35213: Там, где это уместно, используйте „macOS“ в idlelib.

  • bpo-34864: В macOS предупреждение, если для системного предпочтения «Предпочитать вкладки при открытии документов» установлено значение «Всегда».

  • bpo-34864: Документ о двух проблемах IDLE на MacOS. Настройка System Preferences Dock «prefer tabs always» отключает некоторые функции IDLE. Меню немного отличается от того, что описано для Windows и Linux.

  • bpo-35202: Удалите неиспользуемый импорт из lib/idlelib

  • bpo-33000: Документ о том, что оболочка IDLE не имеет ограничений по количеству строк. Программа, которая выполняется бесконечно, может переполнить память.

  • bpo-23220: Объясните, как оболочка IDLE отображает вывод.

  • bpo-35099: Улучшена документация о выполнении пользовательского кода в IDLE. Раздел переименован из «IDLE – консольные различия» в «Выполнение пользовательского кода». В основном он охватывает последствия использования пользовательских sys.stdxxx объектов.

  • bpo-35097: Добавьте подраздел IDLE doc, объясняющий окна редактора. Темы включают открытие, строку заголовка и состояния, расширение .py* и запуск.

  • bpo-35093: Документируйте программу просмотра документов IDLE в документе IDLE doc. Добавьте параграф в раздел «Справка и настройки», подраздел «Источники справки».

  • bpo-35088: Обновление документа idlelib.help.copy_string. Теперь мы используем git и бэкпортирование вместо hg и прямого слияния.

  • bpo-35087: Обновление файлов справки idlelib для текущей сборки doc. Основное изменение - удаление номеров разделов главы.

  • bpo-34548: Используйте настроенную цветовую тему для текстовых представлений, доступных только для чтения.

  • bpo-1529353: Включает «сжатие» длинных выводов в оболочке, чтобы избежать снижения производительности и очистить историю без ее потери. Сжатые выводы можно скопировать, просмотреть в отдельном окне и «разжать».

  • bpo-34047: Исправлено направление прокрутки колеса мыши на macOS.

  • bpo-34275: Сделайте всплывающие подсказки IDLE всегда видимыми на Mac. Для некоторых комбинаций MacOS-tk требуется .update_idletasks(). Исправление Кевина Уолцера.

  • bpo-34120: Исправление невосприимчивости после закрытия некоторых окон и диалогов.

  • bpo-33975: Избегайте мелкого шрифта при выполнении htests. Поскольку часть цели тестов с человеческим взглядом - определить, что виджеты выглядят правильно, важно, чтобы при тестировании они выглядели так же, как при выполнении IDLE.

  • bpo-33905: Добавьте тест для idlelib.stackview.StackBrowser.

  • bpo-33924: Измените ключ mainmenu.menudefs „windows“ на „window“. Все остальные клавиши menudef - это строчные версии пунктов главного меню.

  • bpo-33906: Переименуйте idlelib.windows в window Match Window в главном меню и удалите последнее множественное имя модуля.

  • bpo-33917: Исправьте и задокументируйте idlelib/idle_test/template.py. Переработанный файл компилируется, запускается и тестируется нормально. idle_test/README.txt объясняет, как использовать его для создания новых тестовых файлов IDLE.

  • bpo-33904: IDLE: В rstrip переименуйте класс RstripExtension в Rstrip

  • bpo-33907: Для согласованности и ясности переименуйте модуль и классы IDLE. Модуль calltips и его класс CallTips теперь calltip и Calltip. В модуле calltip_w класс CallTip теперь CalltipWindow.

  • bpo-33856: Добавьте «help» в приветственное сообщение IDLE

  • bpo-33839: IDLE: рефакторинг ToolTip и CallTip, добавление документации и тестов

  • bpo-33855: Минимальное тестирование всех модулей IDLE. Добавьте недостающие файлы, импортируйте модуль, инстанцируйте классы и проверьте покрытие. Проверьте существующие файлы.

  • bpo-33656: В Windows добавьте вызов API, сообщающий, что tk масштабируется с учетом DPI. В Windows 8.1+ или 10, при неизменных свойствах DPI-совместимости бинарного файла Python и разрешении монитора более 96 DPI, это должно сделать текст и линии более четкими. В остальных случаях это не должно иметь никакого эффекта.

  • bpo-33768: Щелчок по контекстной строке перемещает эту строку в верхнюю часть окна редактора.

  • bpo-33763: IDLE: Используйте текстовый виджет, доступный только для чтения, для контекста кода вместо виджета метки.

  • bpo-33664: Прокрутка текста редактора IDLE по строкам. Ранее колесо мыши и ползунок полосы прокрутки перемещали текст на фиксированное количество пикселей, что приводило к неполным строкам в верхней части окна редактора. Это изменение также применяется к окнам вывода shell и grep, но не к представлениям текста только для чтения.

  • bpo-33679: Включить настройку цвета для контекста кода в зависимости от темы. Используйте вкладку «Основные моменты», чтобы посмотреть настройки для встроенных тем или добавить настройки в пользовательские темы.

  • bpo-33642: Отображение до maxlines непустых строк для контекста кода. Если текущий контекст отсутствует, отображается одна пустая строка.

  • bpo-33628: IDLE: Очистка файла codecontext.py и его теста.

  • bpo-33564: Контекст кода IDLE теперь распознает async как открывающий блок.

  • bpo-21474: Обновление определения слова/идентификатора с ascii на unicode. В текстовых полях и полях ввода это влияет на выделение двойным щелчком мыши, перемещение влево/вправо с помощью Control-left/right и удаление влево/вправо с помощью Control-BACKSPACE/DEL.

  • bpo-33204: IDLE: постоянно окрашивает недопустимые строковые префиксы. Строковый префикс „u“ не может быть сопряжен ни с „r“, ни с „f“. Последовательно закрашивайте столько префиксов, начиная с правого, сколько допустимо. Пересмотрите и расширьте тест колоризатора.

  • bpo-32984: Разрешить параметры с именами __file__ и -s с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32940: Упрощение и переименование StringTranslatePseudoMapping в pyparse.

  • bpo-32916: Разрешить параметры с именами str и code с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32905: Удалите неиспользуемый код в модуле pyparse.

  • bpo-32874: Добавьте тесты для pyparse.

  • bpo-32837: Использование системной и зависящей от места кодировки по умолчанию для open() - плохая идея для системных и зависящих от места файлов IDLE.

  • bpo-32826: Добавьте «encoding=utf-8» к open() в test_help_about IDLE. GUI-тест test_file_buttons() просматривает только начальные строки с кодировкой ascii-only, но не работает на системах, где open() по умолчанию имеет значение „ascii“, потому что readline() внутренне читает и декодирует достаточно далеко вперед, чтобы встретить не-ascii символ в CREDITS.txt.

  • bpo-32831: Добавьте документацию и тесты для codecontext.

  • bpo-32765: Обновление документальной строки вкладки «Общие» в configdialog для добавления новых виджетов в список виджетов.

Инструменты/демоверсии

  • bpo-35884: Добавьте скрипт бенчмарка для проверки различных способов доступа к переменным: Tools/scripts/var_access_benchmark.py.

  • bpo-34989: python-gdb.py теперь обрабатывает ошибки при вычислении номера строки кадра Python.

  • bpo-20260: Клиника аргументов теперь имеет небитовые преобразователи unsigned int.

  • bpo-32962: Разрешить параметры с именами UnicodeDecodeError и string() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32962: python-gdb теперь перехватывает ValueError на read_var(): когда в Python нет отладочных символов, например.

  • bpo-33189: pygettext.py теперь распознает только литеральные строки в качестве документальных строк и переводимых строк и отвергает байтовые литералы и выражения f-строк.

  • bpo-31920: Исправлена работа с каталогами в качестве аргументов в скрипте pygettext. Основано на патче Олега Красникова.

  • bpo-29673: Исправьте макросы pystackv и pystack gdbinit.

  • bpo-25427: Удалите скрипт pyvenv в пользу python3 -m venv, чтобы уменьшить путаницу в вопросе о том, для какого интерпретатора Python будет создано виртуальное окружение.

  • bpo-32885: Разрешить параметры с именами -n и Tools/scripts/pathfix.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32222: Исправление того, что pygettext не извлекал документальные строки для функций с аргументами, аннотированными типом. Исправление Тоби Харрадайна.

  • bpo-31583: Исправление 2to3 для использования с опцией –add-suffix, но без опции –output-dir для относительного пути к файлам в текущем каталоге.

C API

  • bpo-35713: Разрешить параметры с именами PyByteArray_Init() и PyByteArray_Fini() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33817: Исправлено _PyBytes_Resize() для пустых байтовых объектов.

  • bpo-35322: Разрешить параметры с именами PyUnicode_EncodeLocale() и PyUnicode_EncodeFSDefault() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35059: Разрешить параметры с именами Py_INCREF() и Py_DECREF() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35296: Разрешить параметры с именами make install и Include/internal/*.h с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35081: Разрешить параметры с именами #ifdef Py_BUILD_CORE и Include/*.h с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35259: Условно объявлять Py_FinalizeEx() (новое в 3.6) на основе Py_LIMITED_API. Исправление Артура Нойфельда.

  • bpo-35081: Разрешить параметры с именами _PyObject_GC_TRACK() и _PyObject_GC_UNTRACK() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-35134: Создание нового подкаталога Include/cpython/.

  • bpo-34725: Добавляет _Py_SetProgramFullPath, чтобы встраиватели могли переопределять sys.executable

  • bpo-34910: Разрешить параметры с именами PyObject_Print() и -1 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-34523: Py_DecodeLocale() и Py_EncodeLocale() теперь используют кодировку UTF-8 в Windows, если флаг Py_LegacyWindowsFSEncodingFlag равен нулю.

  • bpo-34193: Исправьте множественное число в сообщениях TypeError в getargs.c и typeobject.c: „1 аргумент“ вместо „1 аргументов“ и „1 элемент“ вместо „1 элементов“.

  • bpo-34127: Возвращает грамматически корректное сообщение об ошибке, основанное на количестве аргументов. Исправление от Karthikeyan Singaravelan.

  • bpo-23927: Разрешить параметры с именами SystemError и PyArg_ParseTupleAndKeywords() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32455: Добавлено PyCompile_OpcodeStackEffectWithJump().

  • bpo-34008: Py_Main() снова можно вызывать после Py_Initialize(), как в Python 3.6.

  • bpo-32500: Разрешить параметры с именами PySequence_Size() и PySequence_GetItem() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33818: Разрешить параметры с именами PyExceptionClass_Name() и const char * с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33042: Встраиваемые приложения могут снова вызывать PySys_ResetWarnOptions, PySys_AddWarnOption и PySys_AddXOption перед вызовом Py_Initialize.

  • bpo-32374: Документируйте, что m_traverse для многофазных инициализированных модулей может вызываться с m_state=NULL, и добавьте проверку на вменяемость

  • bpo-30863: Разрешить параметры с именами PyUnicode_AsWideChar() и PyUnicode_AsWideCharString() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.7.0 final

Дата выхода: 2018-06-27

Библиотека

C API

  • bpo-33932: Вызов Py_Initialize() дважды ничего не дает, вместо того чтобы завершиться фатальной ошибкой: восстановите поведение Python 3.6.

Python 3.7.0 релиз-кандидат 1

Дата выхода: 2018-06-12

Ядро и встроенные модули

  • bpo-33803: Исправление сбоя в hamt.c, вызванного включением GC tracking для объекта, у которого не все поля были установлены в NULL.

  • bpo-33706: Исправление сбоя в инициализации Python при разборе опций командной строки. Спасибо Кристофу Гольке за сообщение об ошибке и исправление!

  • bpo-30654: Исправлен сброс обработчика SIGINT на SIG_DFL при выключении интерпретатора, даже если ранее был установлен пользовательский обработчик. Исправление от Филиппа Керлинга.

  • bpo-31849: Исправьте предупреждение о сравнении знака/незнака в pyhash.c.

Библиотека

  • bpo-30167: Предотвращение исключения site.main(), если установлен PYTHONSTARTUP. Исправление от Стива Вебера.

  • bpo-33812: Экземпляр Datetime d с tzinfo не None, но с d.tzinfo.utcoffset(d), возвращающим None, теперь рассматривается методом astimezone() как наивный.

  • bpo-30805: Избегайте состояния гонки с помощью отладочного протоколирования

  • bpo-33694: asyncio: Исправление состояния гонки, приводящего к потере данных при pause_reading()/resume_reading() при использовании ProactorEventLoop.

  • bpo-32493: Разрешить параметры с именами uuid_enc_be и configure.ac с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33792: Добавьте asyncio.WindowsSelectorEventLoopPolicy и asyncio.WindowsProactorEventLoopPolicy.

  • bpo-33778: Обновите базу данных unicodedata до версии 11.0.0 Unicode.

  • bpo-33770: улучшите сообщение об исключении base64 для кодированных входных данных недопустимой длины

  • bpo-33769: asyncio/start_tls: Исправьте сообщение об ошибке; отмените обратные вызовы в случае необработанной ошибки; пометьте SSLTransport как закрытый, если он был прерван.

  • bpo-33767: Разрешить параметры с именами + и * с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33734: asyncio/ssl: Исправление ошибки AttributeError, увеличение таймаута рукопожатия по умолчанию

  • bpo-11874: Используйте лучший регекс при разбиении использования на оборачиваемые части. Позволяет избежать ошибок утверждения при использовании пользовательских строк metavar.

  • bpo-33582: Выдать предупреждение об устаревании для inspect.formatargspec

Документация

  • bpo-33409: Уточнена связь между режимом PYTHONCOERCECLOCALE в PEP 538 и режимом PYTHONUTF8 в PEP 540.

  • bpo-33736: Разрешить параметры с именами asyncio.open_connection() и asyncio.start_server() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31432: Уточните значение флагов CERT_NONE, CERT_OPTIONAL и CERT_REQUIRED для ssl.SSLContext.verify_mode.

Построить

  • bpo-5755: Разрешить параметры с именами -Wstrict-prototypes и CFLAGS_NODIST с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Windows

  • bpo-33720: Уменьшает максимальную глубину рекурсии маршала в релизных сборках.

IDLE

  • bpo-33656: В Windows добавьте вызов API, сообщающий, что tk масштабируется с учетом DPI. В Windows 8.1+ или 10, при неизменных свойствах DPI-совместимости бинарного файла Python и разрешении монитора более 96 DPI, это должно сделать текст и линии более четкими. В остальных случаях это не должно иметь никакого эффекта.

  • bpo-33768: Щелчок по контекстной строке перемещает эту строку в верхнюю часть окна редактора.

  • bpo-33763: IDLE: Используйте текстовый виджет, доступный только для чтения, для контекста кода вместо виджета метки.

  • bpo-33664: Прокрутка текста редактора IDLE по строкам. Ранее колесо мыши и ползунок полосы прокрутки перемещали текст на фиксированное количество пикселей, что приводило к неполным строкам в верхней части окна редактора. Это изменение также применяется к окнам вывода shell и grep, но не к представлениям текста только для чтения.

  • bpo-33679: Включить настройку цвета для контекста кода в зависимости от темы. Используйте вкладку «Основные моменты», чтобы посмотреть настройки для встроенных тем или добавить настройки в пользовательские темы.

  • bpo-33642: Отображение до maxlines непустых строк для контекста кода. Если текущий контекст отсутствует, отображается одна пустая строка.

Python 3.7.0 beta 5

Дата выхода: 2018-05-30

Ядро и встроенные модули

  • bpo-33622: Разрешить параметры с именами __del__ и gc.garbage с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33509: Исправьте параметр module_globals в warnings.warn_explicit(): не падайте, если module_globals не является dict.

  • bpo-20104: Новый os.posix_spawn, добавленный в 3.7.0b1, был удален, поскольку мы все еще работаем над тем, как должен выглядеть API. Ожидайте его появления в версии 3.8.

  • bpo-33475: Исправлены различные ошибки при преобразовании аннотаций в строки и оптимизированы круглые скобки в строковом представлении.

  • bpo-33391: Исправьте утечку в функции set_symmetric_difference().

  • bpo-28055: Исправление не выровненных доступов в siphash24(). Исправление от Rolf Eike Beer.

  • bpo-32911: Разрешить параметры с именами bpo-29463 и docstring с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21983: Исправление сбоя в ctypes.cast() в случае, если аргумент type является структурированным типом данных ctypes. Исправление от Эрика Суна и Орена Милмана.

Библиотека

  • bpo-32751: При отмене задания из-за таймаута asyncio.wait_for() теперь будет ждать, пока отмена не завершится.

  • bpo-32684: Исправьте сбор, чтобы он распространял отмену самого себя даже при return_exceptions.

  • bpo-33654: Поддержка переключения типов протоколов в SSLTransport.set_protocol().

  • bpo-33674: Приостановите транспорт как можно раньше, чтобы еще больше снизить риск вызова data_received() до connection_made().

  • bpo-33674: Исправьте состояние гонки в SSLProtocol.connection_made() из asyncio.sslproto: немедленно начинайте рукопожатие вместо использования call_soon(). Ранее функция data_received() могла быть вызвана до начала хендшейка, что приводило к зависанию или сбою хендшейка.

  • bpo-31647: Исправлена ошибка, при которой вызов write_eof() на _SelectorSocketTransport после того, как он уже закрыт, приводил к ошибке AttributeError.

  • bpo-32610: Заставьте asyncio.all_tasks() возвращать только отложенные задачи.

  • bpo-32410: Избегайте блокировки файлового ввода-вывода в коде отката sendfile

  • bpo-33469: Исправление RuntimeError после закрытия цикла, в котором использовался run_in_executor

  • bpo-33672: Исправление сбоя Task.__repr__ при использовании фальшивых корутинов Cython

  • bpo-33654: Исправьте transport.set_protocol() для поддержки переключения между asyncio.Protocol и asyncio.BufferedProtocol. Исправьте loop.start_tls() для работы с asyncio.BufferedProtocols.

  • bpo-33652: Пикули переменных типов и подзаписанные дженерики теперь защищены от будущего и совместимы со старыми версиями Python.

  • bpo-32493: Исправлено uuid.uuid1() на FreeBSD.

  • bpo-33618: Доработка и документирование предварительной и экспериментальной поддержки TLS 1.3 с OpenSSL 1.1.1

  • bpo-33623: Исправление возможного SIGSGV при создании asyncio.Future в __del__.

  • bpo-30877: Исправлена ошибка в Python-реализации декодера JSON, из-за которой кэш разобранных строк не очищался после завершения декодирования. Основано на исправлении от c-fos.

  • bpo-33570: Изменение настроек набора шифров TLS 1.3 для совместимости с OpenSSL 1.1.1-pre6 и более новыми версиями. В OpenSSL 1.1.1 шифры TLS 1.3 будут включены по умолчанию.

  • bpo-28556: Разрешить параметры с именами typing.Union и Union[Manager, Employee] с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33540: Разрешить параметры с именами block_on_close и ForkingMixIn с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33548: tempfile._candidate_tempdir_list должен учитывать общие места TEMP

  • bpo-33109: подпарсеры argparse снова не требуются по умолчанию, возвращая изменение в поведении, введенное bpo-26510 в 3.7.0a2.

  • bpo-33536: dataclasses.make_dataclass теперь проверяет недопустимые имена полей и дубликаты полей. Также добавлена проверка на недопустимые спецификации полей.

  • bpo-33542: Запретите uuid.get_node использовать DUID вместо MAC в Windows. Исправление от Цви Эффрона

  • bpo-26819: Исправление состояния гонки с ReadTransport.resume_reading в цикле событий проактора Windows.

  • Исправление сбоя в typing.get_type_hints(), когда ClassVar предоставлялся как строковая прямая ссылка.

  • bpo-33505: Оптимизация asyncio.ensure_future() за счет переупорядочивания проверок if: 1,17x быстрее.

  • bpo-33497: Добавляет параметр errors в cgi.parse_multipart и заставляет кодировку в FieldStorage использовать заданные ошибки (необходимо для Twisted). Исправление от Amber Brown.

  • bpo-33495: Измените repr поля dataclasses.Fields, чтобы использовать repr каждого из его членов, а не str. Так будет понятнее, что на самом деле представляет собой каждое поле. Это особенно актуально для члена „type“.

  • bpo-33453: Исправление работы классов данных при использовании буквальных аннотаций строковых типов или при использовании PEP 563 «Отложенная оценка аннотаций». Определяются только специфические строковые префиксы для ClassVar («ClassVar» и «typing.ClassVar») и InitVar («InitVar» и «dataclasses.InitVar»).

  • bpo-28556: Разрешить параметры с именами NamedTuple.__new__ и *args с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20087: Обновлено сопоставление псевдонимов с локалями, поддерживаемыми glibc 2.27.

  • bpo-33422: Исправление удаления кавычек в конце строки при поиске байтовых/строковых литералов в pydoc. Исправление от Андреса Дельфино.

  • bpo-28167: Разрешить параметры с именами platform.linux_distribution и platform.dist с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33197: Обновление сообщения об ошибке при построении недействительного inspect.Parameters Исправление от Donghee Na.

  • bpo-33263: Исправление утечки FD в _SelectorSocketTransport. Патч от Влада Старостина.

  • bpo-32861: Представление __str__ urllib.robotparser’а теперь включает записи с подстановочными знаками и поля «Crawl-delay» и «Request-rate». Исправление Майкла Лазара.

  • bpo-32257: Модуль ssl теперь содержит константу OP_NO_RENEGOTIATION, доступную с OpenSSL 1.1.0h или 1.1.1.

  • bpo-16865: Поддержка массивов >=2GiB в ctypes. Исправление от Сегева Файнера.

Документация

  • bpo-23859: Документ, подтверждающий, что asyncio.wait() не отменяет свои фьючерсы по тайм-ауту.

  • bpo-32436: Документ PEP 567 меняется на asyncio.

  • bpo-33604: Обновите значение HMAC md5 по умолчанию на DeprecationWarning, удалите до версии 3.8.

  • bpo-33503: Исправьте неработающую ссылку на pypi

  • bpo-33421: Добавьте недостающую документацию для typing.AsyncContextManager.

Тесты

  • bpo-33655: Игнорируйте сбои test_posix_fallocate на платформах BSD, которые могут быть вызваны работой на ZFS.

  • bpo-32604: Удалите модуль _xxsubinterpreters (предназначенный для тестирования) и связанные с ним хелперы. Этот модуль был первоначально добавлен недавно в 3.7b1.

Построить

  • bpo-33614: Обеспечивает правильную регенерацию файлов определения модулей для стабильного ABI в Windows.

  • bpo-33522: Включите сборки CI в Visual Studio Team Services по адресу https://python.visualstudio.com/cpython.

  • bpo-33012: Добавьте -Wno-cast-function-type для gcc 8 для отключения предупреждений о приведении функций к PyCFunction в списках определений методов.

macOS

  • bpo-13631: Файл .editrc в домашней директории пользователя теперь корректно обрабатывается при инициализации readline через эмуляцию editline на macOS.

IDLE

  • bpo-33628: IDLE: Очистка файла codecontext.py и его теста.

  • bpo-33564: Контекст кода IDLE теперь распознает async как открывающий блок.

  • bpo-32831: Добавьте документацию и тесты для codecontext.

Python 3.7.0 beta 4

Дата выхода: 2018-05-02

Ядро и встроенные модули

  • bpo-33363: Разрешить параметры с именами async with и async for с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33128: Исправление ошибки, из-за которой PathFinder дважды появлялся в sys.meta_path. Автор исправления - Пабло Галиндо Сальгадо.

  • bpo-33312: Исправлены предупреждения clang ubsan (undefined behavior sanitizer) в dictobject.c путем корректировки объявления внутренней структуры общих ключей struct _dictkeysobject.

  • bpo-33231: Исправьте потенциальную утечку памяти в normalizestring().

  • bpo-33205: Разрешить параметры с именами round_up_to_power_2(used*2+hashtable_size/2) и round_up_to_power_2(used*3) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29922: Разрешить параметры с именами __aenter__() и __aexit__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33199: Исправление ma_version_tag в реализации dict не инициализируется при копировании из dict с общим доступом к ключу.

Библиотека

  • bpo-33281: Исправление регрессии ctypes.util.find_library на macOS.

  • bpo-33383: Исправлен сбой в методе get() объекта базы данных dbm.ndbm при его вызове с одним аргументом.

  • bpo-33329: Исправление регрессии многопроцессорной обработки на новых версиях glibcs

  • bpo-991266: Разрешить параметры с именами Comment и http.cookies.SimpleCookie с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33131: Обновление поставляемой версии pip до 10.0.1.

  • bpo-33308: Разрешить параметры с именами parser и line_info=False с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33266: lib2to3 теперь распознает строки rf'...'.

  • bpo-11594: Убедитесь, что при использовании lib2to3 соблюдаются окончания строк.

  • bpo-33254: Разрешить параметры с именами importlib.resources.contents() и importlib.abc.ResourceReader.contents() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33256: Разрешить параметры с именами <module> и cgitb.html() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33185: Разрешить параметры с именами -m и bpo-33053 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33169: Разрешить параметры с именами None и sys.path_importer_cache с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33217: Устранить поиск объектов, не являющихся Enum, в классах Enum и членах Enum (в версии 3.8+ будет поднят TypeError).

  • bpo-33203: Разрешить параметры с именами random.Random.choice() и IndexError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33224: Обновите difflib.mdiff() для PEP 479. Преобразуйте не пойманную StopIteration в генераторе в return-выражение.

  • bpo-33209: Конечное обрамление в конце реализации C pickle.Pickler.dump().

  • bpo-20104: Улучшена обработка ошибок и исправлена утечка ссылок в os.posix_spawn().

  • bpo-33175: В классах данных Field.__set_name__ теперь ищет специальный метод __set_name__ на классе, а не на экземпляре значения по умолчанию.

  • bpo-33097: Вызывает RuntimeError при вызове executor.submit во время выключения интерпретатора.

  • bpo-31908: Разрешить параметры с именами trace и --missing с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-33378: Добавьте переключатель корейского языка для https://docs.python.org/3/

  • bpo-33276: Уточните, что атрибут __path__ в модулях не может быть просто любым значением.

  • bpo-33201: Модернизируйте документацию по написанию типов расширения C.

  • bpo-33195: Разрешить параметры с именами Py_UNICODE и c-api/arg с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-8243: Добавьте примечание о поведении исключений curses.addch и curses.addstr при записи за пределами окна или блокнота.

  • bpo-32337: Обновление документации, связанной с заказом dict.

Тесты

  • bpo-33358: Разрешить параметры с именами test_embed.test_pre_initialization_sys_options() и --enable-shared с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Построить

  • bpo-33394: Включает подробную сборку для модулей расширения, когда GNU make передаются макросы в командной строке.

  • bpo-33393: Обновление файлов config.guess и config.sub.

  • bpo-33377: Добавьте новые триплеты для вариантов mips r6 и riscv (используются в суффиксах расширений).

  • bpo-32232: Разрешить параметры с именами Modules/Setup и -DPy_BUILD_CORE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33182: Тесты встраивания снова могут быть собраны с помощью clang 6.0

Windows

  • bpo-33184: Обновление программы установки Windows для использования OpenSSL 1.1.0h.

macOS

  • bpo-33184: Обновите сборку программы установки macOS для использования OpenSSL 1.1.0h.

IDLE

  • bpo-21474: Обновление определения слова/идентификатора с ascii на unicode. В текстовых полях и полях ввода это влияет на выделение двойным щелчком мыши, перемещение влево/вправо с помощью Control-left/right и удаление влево/вправо с помощью Control-BACKSPACE/DEL.

  • bpo-33204: IDLE: постоянно окрашивает недопустимые строковые префиксы. Строковый префикс „u“ не может быть сопряжен ни с „r“, ни с „f“. Последовательно закрашивайте столько префиксов, начиная с правого, сколько допустимо. Пересмотрите и расширьте тест колоризатора.

Инструменты/демоверсии

  • bpo-33189: pygettext.py теперь распознает только литеральные строки в качестве документальных строк и переводимых строк и отвергает байтовые литералы и выражения f-строк.

  • bpo-31920: Исправлена работа с каталогами в качестве аргументов в скрипте pygettext. Основано на патче Олега Красникова.

  • bpo-29673: Исправьте макросы pystackv и pystack gdbinit.

  • bpo-31583: Исправление 2to3 для использования с опцией –add-suffix, но без опции –output-dir для относительного пути к файлам в текущем каталоге.

Python 3.7.0 beta 3

Дата выхода: 2018-03-29

Безопасность

  • bpo-33136: Защита модуля ssl от LibreSSL CVE-2018-8970. X509_VERIFY_PARAM_set1_host() вызывается с явным namelen. Новый тест гарантирует, что NULL-байты не допускаются.

  • bpo-33001: Минимальное исправление для предотвращения выхода за пределы буфера в os.symlink на Windows

  • bpo-32981: Разрешить параметры с именами CVE-2018-1060 и CVE-2018-1061 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-33053: При использовании ключа -m путь sys.path[0] теперь явно расширяется как начальный рабочий каталог, а не остается пустым (что позволяет импортировать из текущего рабочего каталога на момент импорта).

  • bpo-33018: Улучшение согласованности ошибок, вызываемых issubclass() при вызове с неклассом и абстрактным базовым классом в качестве первого и второго аргументов соответственно. Исправление Джоша Бронсона.

  • bpo-33041: Исправлено выскакивание, когда функция содержит цикл async for.

  • bpo-33026: Исправлено выскакивание из блока «с» при установке f_lineno.

  • bpo-33005: Исправление падения при форке при использовании пользовательского аллокатора памяти (например, при использовании переменной окружения PYTHONMALLOC). _PyGILState_Reinit() и _PyInterpreterState_Enable() теперь используют стандартный RAW-распределитель памяти для выделения нового мьютекса интерпретатора на форке.

  • bpo-17288: Предотвращение переходов из событий трассировки „return“ и „exception“.

  • bpo-32836: Не используйте временные переменные в случаях понимания списков/диктов/наборов

Библиотека

  • bpo-33141: Пусть объекты Field передают через __set_name__ свои значения по умолчанию, если у них есть свой __set_name__.

  • bpo-33096: Разрешите ttk.Treeview.insert вставлять iid, имеющий булево значение false. Обратите внимание, что iid=0 и iid=False будут одинаковыми. Исправление Гарвита Кхатри.

  • bpo-32873: Рассматривайте переменные типа и специальные формы типизации как неизменяемые при копировании и pickle. Это исправляет несколько мелких проблем и несоответствий, а также улучшает обратную совместимость с Python 3.6.

  • bpo-33134: При вычислении __hash__ класса данных используйте таблицу поиска, содержащую функцию, которая возвращает значение __hash__. Это лучше, чем искать строку, а затем тестировать ее, чтобы понять, что делать.

  • bpo-33127: Модуль ssl теперь компилируется с LibreSSL 2.7.1.

  • bpo-32505: Вызывает ошибку TypeError, если переменная-член класса данных имеет тип Field, но не имеет аннотации типа.

  • bpo-33078: Исправление сбоя на OSX, вызванного тестами, полагающимися на sem_getvalue

  • bpo-33116: Добавьте „Field“ в dataclasses.__all__.

  • bpo-32896: Исправление ошибки, когда при подклассификации класса данных с полем, использующим default_factory, создавался некорректный класс.

  • bpo-33100: Классы данных: Если поле имеет значение по умолчанию, которое является MemberDescriptorType, то это связано с тем, что поле находится в __слотах__, а не с действительным значением по умолчанию.

  • bpo-32953: Если класс, не являющийся классом данных, наследуется от замороженного класса данных, разрешите добавлять атрибуты в производный класс. Нельзя присваивать атрибуты только замороженному классу данных. Требуйте, чтобы все классы данных в иерархии были либо все замороженными, либо все незамороженными.

  • bpo-33061: Разрешить параметры с именами NoReturn и __all__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33078: Исправьте обработку размера в multiprocessing.Queue при возникновении ошибки pickling.

  • bpo-33064: Разрешить параметры с именами *args и **kwargs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33056: FIX корректное закрытие утечек fds в concurrent.futures.ProcessPoolExecutor.

  • bpo-33021: Освобождение GIL во время вызова fstat(), что позволяет избежать зависания всех потоков при вызове mmap.mmap(), os.urandom() и random.seed(). Исправление Нира Соффера.

  • bpo-31804: Избегайте сбоев в multiprocessing.Process, если стандартные потоки закрыты или отсутствуют при выходе.

  • bpo-33037: Пропускать отправку/получение данных после закрытия транспорта SSL.

  • bpo-27683: Разрешить параметры с именами ipaddress и hosts() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32999: Разрешить параметры с именами ABC.__subclasscheck__(cls, subclass) и subclass с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33009: Исправьте inspect.signature() для однопараметрических partialmethods.

  • bpo-32969: Раскрытие нескольких отсутствующих констант в zlib и исправление соответствующей документации.

  • bpo-32056: Разрешить параметры с именами aifc и wave с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32844: Исправление неправильного перенаправления низкого дескриптора (0 или 1) на stderr в подпроцессе, если другой низкий дескриптор закрыт.

  • bpo-32857: Разрешить параметры с именами tkinter и after_cancel(None) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31639: http.server теперь раскрывает класс ThreadedHTTPServer и использует его при запуске модуля с -m, чтобы справиться с предварительным открытием сокетов веб-браузерами.

  • bpo-27645: Разрешить параметры с именами sqlite3.Connection и backup с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-33126: Документ PyBuffer_ToContiguous().

  • bpo-27212: Измените документацию для рецепта islice(), чтобы он потреблял начальные значения вплоть до начального индекса.

  • bpo-28247: Обновите документацию zipapp, чтобы описать, как создавать автономные приложения.

  • bpo-18802: Изменения в документации для ipaddress. Исправление от Jon Foster и Berker Peksag.

  • bpo-27428: Разрешить параметры с именами WindowsRegistryFinder и MetaPathFinder с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Тесты

  • bpo-32872: Избежать проблемы совместимости regrtest с пакетами пространства имен.

  • bpo-32517: Разрешить параметры с именами test_asyncio и KqueueSelector с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-19417: Добавьте test_bdb.py.

Построить

  • bpo-33163: Обновите pip до версии 9.0.3 и setuptools до версии 39.0.1.

Windows

  • bpo-33016: Исправьте потенциальное использование неинициализированной памяти в nt._getfinalpathname

  • bpo-32903: Исправление утечки памяти в os.chdir() в Windows, если текущий каталог задан как UNC-путь.

macOS

  • bpo-32726: Сборка и соединение с частной копией Tcl/Tk 8.6 для программы установки macOS 10.6+. Вариант установщика 10.9+ уже делает это. Это означает, что Python 3.7, предоставляемый установщиками python.org macOS, больше не нуждается в использовании каких-либо внешних версий Tcl/Tk, как системных, так и установленных пользователем, таких как ActiveTcl.

IDLE

  • bpo-32984: Разрешить параметры с именами __file__ и -s с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32940: Упрощение и переименование StringTranslatePseudoMapping в pyparse.

Инструменты/демоверсии

  • bpo-32885: Разрешить параметры с именами -n и Tools/scripts/pathfix.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

C API

  • bpo-33042: Встраиваемые приложения могут снова вызывать PySys_ResetWarnOptions, PySys_AddWarnOption и PySys_AddXOption перед вызовом Py_Initialize.

  • bpo-32374: Документируйте, что m_traverse для многофазных инициализированных модулей может вызываться с m_state=NULL, и добавьте проверку на вменяемость

Python 3.7.0 beta 2

Дата выхода: 2018-02-27

Безопасность

  • bpo-28414: Модуль ssl теперь позволяет пользователям выполнять собственное en/decoding IDN при использовании SNI.

Ядро и встроенные модули

  • bpo-32889: Разрешить параметры с именами Py_ADDRESS_IN_RANG и address_in_range с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31356: Удалите новый API, добавленный в bpo-31356 (менеджер контекста gc.ensure_disabled()).

  • bpo-32305: Разрешить параметры с именами __file__ и __spec__.origin с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32303: Разрешить параметры с именами __spec__.loader и __loader__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32711: Исправьте предупреждающие сообщения для Python/ast_unparse.c. Исправление от Stéphane Wirtel

  • bpo-32583: Исправление возможного падения встроенных декодеров Unicode, вызванного ошибками записи за пределы границ при использовании настраиваемых обработчиков ошибок декодирования.

Библиотека

  • bpo-32960: Для классов данных запрещено наследовать замороженные классы от незамороженных, а также запрещено наследовать незамороженные классы от замороженных. Это ограничение будет снято в будущем.

  • bpo-32713: Исправлена работа tarfile.itn с выходящими за границы плавающими значениями. Автор исправления - Джоффри Фюрер.

  • bpo-32951: Прямое инстанцирование объектов SSLSocket и SSLObject теперь запрещено. Конструкторы никогда не были документированы, протестированы или разработаны как публичные конструкторы. Пользователи должны были использовать ssl.wrap_socket() или SSLContext.

  • bpo-32929: Удалите трехсоставной параметр «hash» и добавьте булево значение «unsafe_hash». Если unsafe_hash равен True, добавьте функцию __hash__, но если такой __hash__ существует, вызовите TypeError. Если unsafe_hash равно False, добавьте __hash__, основанный на значениях eq= и frozen=. Поведение unsafe_hash=False аналогично старому поведению hash=None. unsafe_hash=False используется по умолчанию, как раньше было hash=None.

  • bpo-32947: Добавьте OP_ENABLE_MIDDLEBOX_COMPAT и протестируйте обходной путь для TLSv1.3 для будущей совместимости с OpenSSL 1.1.1.

  • bpo-30622: Модуль ssl теперь обнаруживает отсутствие поддержки NPN в LibreSSL.

  • bpo-32922: dbm.open() теперь кодирует имя файла кодировкой файловой системы, а не кодировкой по умолчанию.

  • bpo-32859: Разрешить параметры с именами os.dup2 и dup3 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32556: nt._getfinalpathname, nt._getvolumepathname и nt._getdiskusage теперь корректно конвертируются из байтов.

  • bpo-25988: Разрешить параметры с именами DeprecationWarning и collections с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21060: Перепишите сбивающее с толку сообщение из setup.py upload с «No dist file created in earlier command» на более полезное «Must create and upload files in one command».

  • bpo-32852: Убедитесь, что sys.argv остается в виде списка при выполнении трассировки.

  • bpo-31333: Разрешить параметры с именами _abc и abc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32841: Исправлена проблема asyncio.Condition, из-за которой после уведомления и отмены условной блокировки отмена молча игнорировалась. Исправление от Bar Harel.

  • bpo-32819: ssl.match_hostname() была упрощена и больше не зависит от модуля re и ipaddress для подстановочных символов и IP-адресов. Улучшено сообщение об ошибках, связанных с недействительными подстановочными знаками.

  • bpo-32394: сокет: Удаление флагов TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL на старых версиях Windows во время выполнения.

  • bpo-31787: Исправлены утечки методов __init__() в различных модулях. (Внесено Ореном Милманом)

  • bpo-30157: Исправлено угадывание кавычек и разделителя в csv.Sniffer.sniff(), когда только последнее поле заключено в кавычки. Исправление от Джейка Дэвиса.

  • bpo-32792: collections.ChainMap() сохраняет порядок базовых отображений.

  • bpo-32775: fnmatch.translate() больше не создает шаблоны, содержащие операции над множествами. Наборы, начинающиеся с „[“ или содержащие „–“, „&&“, „~~“ или „||“, будут по-другому интерпретироваться в регулярных выражениях в будущих версиях. В настоящее время они выдают предупреждения. fnmatch.translate() теперь позволяет избежать случайного получения шаблонов, содержащих такие наборы.

  • bpo-32622: Реализуйте собственный быстрый sendfile для цикла событий проактора Windows.

  • bpo-32777: Исправление редкого, но потенциально возможного тупика дочернего процесса preexec в подпроцессе на POSIX-системах при пометке дескрипторов файлов, наследуемых при exec в дочернем процессе. Эта ошибка, похоже, появилась в версии 3.4.

  • bpo-32647: Модуль ctypes раньше зависел от косвенной линковки для dlopen. Теперь разделяемое расширение явно связывается с libdl на платформах с dl.

  • bpo-32741: Реализуйте метод asyncio.TimerHandle.when().

  • bpo-32691: Используйте mod_spec.parent при запуске модулей с pdb

  • bpo-32734: Исправлена проблема безопасности asyncio.Lock(), из-за которой один и тот же замок можно было получить и заблокировать несколько раз, не освобождая его. Исправление от Bar Harel.

  • bpo-32727: Не включать поле имени в SMTP-конверт с адреса. Исправление от Стефана Виртела

  • bpo-31453: Добавлены константы TLSVersion и атрибуты SSLContext.maximum_version / minimum_version. В новом API реализована функция OpenSSL 1.1 https://web.archive.org/web/20180309043602/https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html.

  • bpo-24334: Внутренние детали реализации модуля ssl были очищены. В SSLSocket стало на один уровень непрямой связи меньше. Информация о владельце и сессии теперь обрабатывается конструктором SSLSocket и SSLObject. Упрощена реализация привязки каналов.

  • bpo-31848: Исправьте обработку ошибок в Aifc_read.initfp(), когда чанк SSND не был найден. Исправление от Zackery Spytz.

  • bpo-32585: Добавьте виджет Ttk spinbox в tkinter.ttk. Исправление от Alan D Moore.

  • bpo-32221: Разрешить параметры с именами %scope и socket.recvfrom() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30693: Класс TarFile теперь рекурсирует каталоги воспроизводимым способом.

  • bpo-30693: Класс ZipFile теперь рекурсирует каталоги воспроизводимым способом.

Документация

  • bpo-28124: Функция модуля ssl ssl.wrap_socket() была отменена и устарела в пользу более безопасного и эффективного метода SSLContext.wrap_socket().

  • bpo-17232: Уточнение документации для -O и -OO. Исправление Терри Риди.

  • bpo-32436: Добавьте документацию для модуля contextvars (PEP 567).

  • bpo-32800: Обновление ссылки на w3c doc для стандартных пространств имен xml.

  • bpo-11015: Обновление документации test.support.

  • bpo-8722: Разрешить параметры с именами __getattr__() и get() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32614: Измените примеры RE в документации, чтобы использовать необработанные строки для предотвращения DeprecationWarning, и добавьте текст в REGEX HOWTO, чтобы подчеркнуть это ухудшение.

  • bpo-31972: Улучшите документацию для подклассов pathlib.PurePath.

Тесты

  • bpo-31809: Добавьте тесты для проверки соединения с кривыми secp ECDH.

Построить

  • bpo-32898: Исправление отладочной сборки python при использовании COUNT_ALLOCS.

Windows

  • bpo-32901: Обновите версии Tcl и Tk до 8.6.8

  • bpo-31966: Исправлена ошибка WindowsConsoleIO.write() для записи пустых данных.

  • bpo-32409: Убедитесь, что activate.bat может обрабатывать содержимое Unicode.

  • bpo-32457: Улучшена обработка денормализованного пути к исполняемому файлу при запуске Python.

  • bpo-32370: Используйте правильную кодировку для вывода ipconfig в модуле uuid. Исправление от Segev Finer.

  • bpo-29248: Разрешить параметры с именами os.readlink() и PrintNameOffset с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

macOS

  • bpo-32901: Обновление программы установки macOS 10.9+ до версии Tcl/Tk 8.6.8.

IDLE

  • bpo-32916: Разрешить параметры с именами str и code с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32905: Удалите неиспользуемый код в модуле pyparse.

  • bpo-32874: Добавьте тесты для pyparse.

  • bpo-32837: Использование системной и зависящей от места кодировки по умолчанию для open() - плохая идея для системных и зависящих от места файлов IDLE.

  • bpo-32826: Добавьте «encoding=utf-8» к open() в test_help_about IDLE. GUI-тест test_file_buttons() просматривает только начальные строки с кодировкой ascii-only, но не работает на системах, где open() по умолчанию имеет значение „ascii“, потому что readline() внутренне читает и декодирует достаточно далеко вперед, чтобы встретить не-ascii символ в CREDITS.txt.

  • bpo-32765: Обновление документальной строки вкладки «Общие» в configdialog для добавления новых виджетов в список виджетов.

Инструменты/демоверсии

  • bpo-32222: Исправление того, что pygettext не извлекал документальные строки для функций с аргументами, аннотированными типом. Исправление Тоби Харрадайна.

Python 3.7.0 beta 1

Дата выхода: 2018-01-30

Ядро и встроенные модули

  • bpo-32703: Исправьте ResourceWarning корутины, если во время ее финализации есть активный набор ошибок.

  • bpo-32650: Pdb и другие отладчики, зависящие от bdb.py, будут корректно перешагивать через (следующую команду) нативные корутины. Исправление от Pablo Galindo.

  • bpo-28685: Оптимизация list.sort() и sorted() за счет использования специализированных по типу сравнений, когда это возможно.

  • bpo-32685: Улучшение предложения, когда Python 2 форма оператора print либо присутствует в той же строке, что и заголовок составного оператора, либо завершается точкой с запятой вместо новой строки. Исправление Нитиша Чандры.

  • bpo-32697: Теперь Python явно сохраняет порядок определения параметров, относящихся только к ключевым словам. Он всегда сохранял их порядок, но раньше такое поведение не гарантировалось; теперь оно гарантировано и проверено.

  • bpo-32690: Словарь locals() теперь отображается в том лексическом порядке, в котором были определены переменные. Ранее порядок был обратным.

  • bpo-32677: Разрешить параметры с именами .isascii() и str с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32670: Применяйте PEP 479 для всего кода. Это означает, что ручное вызывание исключения StopIteration из генератора запрещено для всего кода, независимо от того, использовалось ли „from __future__ import generator_stop“ или нет.

  • bpo-32591: Добавлена встроенная поддержка отслеживания происхождения объектов coroutine; см. sys.set_coroutine_origin_tracking_depth и CoroutineType.cr_origin. Это заменяет использование в режиме отладки asyncio обертывания корутин для нативных объектов корутин.

  • bpo-31368: Раскрытие системных вызовов preadv и pwritev в модуле os. Патч от Пабло Галиндо

  • bpo-32544: Разрешить параметры с именами hasattr(obj, name) и getattr(obj, name, default) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26163: Улучшен хэш frozenset() для создания более четких значений хэша при работе с наборами данных, содержащими много похожих значений.

  • bpo-32550: Удалите байткод STORE_ANNOTATION.

  • bpo-20104: Выставление posix_spawn в качестве низкоуровневого API в модуле os. (удалено до версии 3.7.0rc1)

  • bpo-24340: Исправлена оценка размера стека кода.

  • bpo-32436: Реализуйте PEP 567 Контекстные переменные.

  • bpo-18533: Разрешить параметры с именами repr() и values() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20891: Py_Initialize() теперь создает GIL. GIL больше не создается «по требованию», чтобы исправить состояние гонки, когда PyGILState_Ensure() вызывается в не-Python потоке.

  • bpo-32028: Ведущие пробельные символы теперь корректно игнорируются при генерации предложений по преобразованию операторов печати Py2 в вызовы встроенных функций печати Py3. Исправление от Sanyam Khurana.

  • bpo-31179: Сделайте dict.copy() в 5,5 раз быстрее.

  • bpo-31113: Избавьтесь от рекурсии в компиляторе для нормального потока управления.

Библиотека

  • bpo-25988: Откажитесь от раскрытия содержимого collections.abc в обычном модуле collections.

  • bpo-31429: Выбор набора шифров по умолчанию в модуле ssl теперь использует подход черного списка, а не жестко закодированного белого списка. Python больше не включает шифры, которые были заблокированы обновлением безопасности OpenSSL. Выбор набора шифров по умолчанию может быть настроен на этапе компиляции.

  • bpo-30306: contextlib.contextmanager теперь освобождает аргументы, переданные базовому генератору, сразу после входа в контекстный менеджер. Ранее он сохранял их до тех пор, пока был жив контекстный менеджер, даже если не использовался в качестве декоратора функций. Исправление Мартина Тайхмана.

  • bpo-21417: Добавлена поддержка установки уровня сжатия для zipfile.ZipFile.

  • bpo-32251: Реализуйте asyncio.BufferedProtocol (предварительный API).

  • bpo-32513: В классах данных позволяет более просто переопределять методы dunder без указания параметров декоратора.

  • bpo-32660: Разрешить параметры с именами termios и FIONREAD с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27931: Исправление ошибки разбора заголовка адреса электронной почты, когда имя пользователя представляет собой пустую строку с кавычками. Исправление от Xiang Zhang.

  • bpo-32659: В Solaris и производных системах os.stat_result предоставляет атрибут st_fstype.

  • bpo-32662: Реализуйте методы Server.start_serving(), Server.serve_forever() и Server.is_serving(). Добавьте ключевой параметр „start_serving“ в loop.create_server() и loop.create_unix_server().

  • bpo-32391: Разрешить параметры с именами asyncio.StreamWriter.wait_closed() и asyncio.StreamWriter.is_closing() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32643: Сделайте методы Task._step, Task._wakeup и Future._schedule_callbacks частными.

  • bpo-32630: Рефакторинг модуля decimal для использования contextvars для хранения десятичного контекста.

  • bpo-32622: Добавить метод asyncio.AbstractEventLoop.sendfile().

  • bpo-32304: команда загрузки distutils больше не повреждает tar-файлы, заканчивающиеся байтом CR, и больше не пытается преобразовать CR в CRLF в любом из текстовых полей загрузки.

  • bpo-32502: uuid.uuid1 больше не вызывает исключение, если встречается 64-битный аппаратный адрес.

  • bpo-32596: Разрешить параметры с именами concurrent.futures и ThreadPoolExecutor с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31801: Разрешить параметры с именами _ignore_ и Enum с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32576: Используйте queue.SimpleQueue() в тех местах, где его можно вызвать из обратного вызова weakref.

  • bpo-32574: Исправление утечки памяти в asyncio.Queue, когда очередь имеет ограниченный размер и она заполнена, отмена queue.put() может привести к утечке памяти. Автор исправления: Хосе Мелеро.

  • bpo-32521: Модуль nis теперь совместим с новым расположением libnsl и headers.

  • bpo-32467: collections.abc.ValuesView теперь наследует от collections.abc.Collection.

  • bpo-32473: Улучшение читаемости вывода ABCMeta._dump_registry()

  • bpo-32102: Новый аргумент capture_output для subprocess.run

  • bpo-32521: glibc удалил Sun RPC. Используйте заменяющие заголовки и библиотеку libtirpc в модуле nis.

  • bpo-32493: Модуль UUID исправляет сборку для FreeBSD/OpenBSD

  • bpo-32503: Пикинг по протоколу 4 больше не создает слишком маленькие кадры.

  • bpo-29237: Создание перечисления для параметров сортировки pstats

  • bpo-32454: Добавьте функцию close(fd) в модуль сокетов.

  • bpo-25942: Модуль subprocess теперь более изящен при обработке прерывания клавиатуры Ctrl-C во время subprocess.call, subprocess.run или контекстного менеджера Popen. Теперь он ждет некоторое время, пока дочерний процесс (предполагается, что он также получил SIGINT) выйдет, прежде чем продолжить обработку исключения KeyboardInterrupt. Это все еще включает SIGKILL в API call() и run(), но, по крайней мере, у ребенка был шанс первым.

  • bpo-32433: В модуле hmac теперь есть hmac.digest(), который предоставляет оптимизированный HMAC-дайджест.

  • bpo-28134: Сокеты теперь по умолчанию автоматически определяют семейство, тип и протокол из дескриптора файла.

  • bpo-32404: Разрешить параметры с именами datetime.datetime.fromtimestamp() и datetime.datetime с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32403: Разрешить параметры с именами datetime.date и datetime.datetime с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32228: Разрешить параметры с именами truncate() и tell() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32410: Реализуйте loop.sock_sendfile для цикла событий asyncio.

  • bpo-22908: В класс ZipExtFile добавлены функции seek и tell. Это работает только в том случае, если файловый объект, используемый для открытия zip-файла, доступен для поиска.

  • bpo-32373: Добавьте метод socket.getblocking().

  • bpo-32248: Разрешить параметры с именами importlib.resources и importlib.abc.ResourceReader с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32320: collections.namedtuple() теперь поддерживает значения по умолчанию.

  • bpo-29302: Добавьте contextlib.AsyncExitStack. Патч от Александра Мора и Ильи Кулакова.

  • bpo-31961: Разрешить параметры с именами path-like object и path-like object с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31900: Разрешить параметры с именами locale.localeconv() и LC_CTYPE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31853: Используйте super().method вместо socket.method в SSLSocket. Скорее всего, они были там по причинам, связанным с наследием.

  • bpo-31399: Модуль ssl теперь использует API OpenSSL X509_VERIFY_PARAM_set1_host() и X509_VERIFY_PARAM_set1_ip() для проверки имен хостов и IP-адресов. Возврат к общему имени субъекта можно отключить с помощью SSLContext.hostname_checks_common_name.

  • bpo-14976: Добавьте класс queue.SimpleQueue, неограниченную очередь FIFO с реентерабельной реализацией put() на языке C.

Документация

  • bpo-32724: Добавляет ссылки на некоторые команды в документацию по Pdb. Исправление Стефана Виртела

  • bpo-32649: Дополните часть документации по C API, профилированию и трассировке недавно добавленными событиями для каждого опкода.

  • bpo-17799: Объясните реальное поведение sys.settrace и sys.setprofile и их C-API аналогов относительно того, какой тип событий принимается в каждой функции. Исправление от Pablo Galindo Salgado.

Тесты

  • bpo-32721: Исправьте test_hashlib, чтобы он не выходил из строя, если модуль _md5 не собран.

  • bpo-28414: Добавлены тестовые случаи для имен хостов IDNA 2003 и 2008. Интернационализированные имена хостов IDNA 2003 работают с момента выхода bpo-31399. IDNA 2008 все еще не работает.

  • bpo-32604: Добавляет новый модуль расширения «_xxsubinterpreters», который раскрывает существующий C-API субинтерпретатора и новый механизм обмена данными между субинтерпретаторами. Модуль в первую очередь предназначен для более тщательного тестирования существующей поддержки субинтерпретаторов. Обратите внимание, что модуль _xxsubinterpreters был удален в версии 3.7.0rc1.

  • bpo-32602: Добавьте тестовые сертификаты и тест для сертификатов ECDSA и двойного режима EC/RSA.

  • bpo-32549: На Travis CI Python теперь компилирует и использует локальную копию OpenSSL 1.1.0g для тестирования.

Построить

  • bpo-32635: Исправление segfault модуля crypt, когда в системе вместо libcrypt предоставляется libxcrypt.

  • bpo-32598: Используйте autoconf для обнаружения libs, заголовков и поддерживаемых функций OpenSSL. Макрос ax_check_openssl M4 использует pkg-config для поиска OpenSSL и возвращается к ручному поиску.

  • bpo-32593: Отказ от поддержки FreeBSD 9 и старше.

  • bpo-29708: Разрешить параметры с именами SOURCE_DATE_EPOCH и py_compile с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Windows

  • bpo-32588: Создайте отдельный модуль _distutils_findvs и добавьте недостающий модуль _queue в установщик.

  • bpo-29911: Убедитесь, что отображаются отдельные кнопки «Изменить» и «Удалить».

  • bpo-32507: Для старых версий Windows используйте установку UCRT из локального приложения вместо правильного обновления.

macOS

  • bpo-32726: Предоставлен дополнительный, более современный вариант установщика для macOS, поддерживающий системы macOS 10.9+ только в 64-битном режиме. Обновление поставляемых сторонних библиотек до OpenSSL 1.1.0g и до SQLite 3.22.0. Программа установки для 10.9+ теперь связывает и поставляет собственную копию Tcl/Tk 8.6.

  • bpo-28440: Больше не добавляйте /Library/Python/3.x/site-packages в sys.path для сборок фреймворка macOS, чтобы избежать конфликтов в будущем.

C API

  • bpo-32681: Исправление неинициализированной переменной „res“ в реализации os.dup2 на C. Исправление Стефана Виртела

  • bpo-10381: Разрешить параметры с именами datetime.timezone и datetime.timezone.UTC с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.7.0 alpha 4

Дата выхода: 2018-01-08

Ядро и встроенные модули

  • bpo-31975: Список фильтров предупреждений по умолчанию теперь начинается с записи «default::DeprecationWarning:__main__», так что предупреждения об обесценивании снова показываются по умолчанию в однофайловых скриптах и в интерактивном приглашении.

  • bpo-32226: __class_getitem__ теперь является автоматическим методом класса.

  • bpo-32399: Добавьте поддержку библиотеки AIX uuid для RFC4122 с помощью uuid_create() в libc.a

  • bpo-32390: Исправление сбоя компиляции на AIX после добавления поля f_fsid в объект, возвращаемый os.statvfs() (bpo-32143). Оригинальное исправление Майкла Фелта.

  • bpo-32379: Ускоряет вычисление MRO, когда класс наследуется от одной базы.

  • bpo-32259: Сообщение об ошибке TypeError, возникающей при распаковке non-iterable, теперь более конкретное.

  • bpo-27169: Разрешить параметры с именами __debug__ и bpo-22091 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32329: Разрешить параметры с именами -R и PYTHONHASHSEED с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30416: Оптимизатор теперь защищен от необходимости тратить много времени на сложные вычисления и потреблять много памяти для создания больших констант при складывании констант. Увеличены ограничения на константы, которые могут быть получены при складывании констант.

  • bpo-32282: Исправьте ненужный ifdef в include файла VersionHelpers.h в socketmodule под Windows.

  • bpo-30579: Реализуйте TracebackType.__new__, чтобы разрешить создание объектов трассировки на уровне Python, и сделайте TracebackType.tb_next мутабельным.

  • bpo-32260: Не меняйте местами байты входных ключей алгоритма SipHash на big-endian платформах. Это должно гарантировать, что siphash будет давать согласованные результаты на разных платформах.

  • bpo-31506: Улучшена логика сообщений об ошибках для object.__new__ и object.__init__. Исправление от Sanyam Khurana.

  • bpo-20361: Разрешить параметры с именами -b и -bb с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32230: Разрешить параметры с именами -X dev и 'default' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29240: Добавьте новый режим UTF-8: реализация PEP 540.

  • bpo-32226: Разрешить параметры с именами PEP 560 и __mro_entries__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32225: Разрешить параметры с именами PEP 562 и __getattr__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31901: Модуль atexit теперь хранит свой обратный вызов для каждого интерпретатора.

  • bpo-31650: Реализуйте PEP 552 (детерминированный pycs). Python теперь поддерживает аннулирование файлов кэша байткода на основе хэша содержимого источника, а не времени последнего изменения источника.

  • bpo-29469: Перемещение складывания констант из слоя байткода в слой AST. Оригинальный патч Евгения Тодера.

Библиотека

  • bpo-32506: Теперь, когда dict определено как сохраняющее порядок вставки, отбросьте OrderedDict и используйте просто dict.

  • bpo-32279: Добавьте параметры в dataclasses.make_dataclasses(): init, repr, eq, order, hash и frozen. Передайте их в dataclass().

  • bpo-32278: Сделать информацию о типе необязательной в dataclasses.make_dataclass(). Если эта опция опущена, используется строка „typing.Any“.

  • bpo-32499: Добавьте dataclasses.is_dataclass(obj), который возвращает True, если obj является классом данных или его экземпляром.

  • bpo-32468: Улучшите фрейм repr(), чтобы он указывал имя файла, имя кода и номер текущей строки.

  • bpo-23749: asyncio: Реализуйте loop.start_tls()

  • bpo-32441: Разрешить параметры с именами os.dup2 и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32422: functools.lru_cache использует меньше памяти (3 слова для каждого кэшированного ключа) и занимает около 1/3 времени при циклическом GC.

  • bpo-31721: Предотвращение падения Python, когда Future._log_traceback установлен в True вручную. Теперь его можно установить только в False, иначе будет вызвана ошибка ValueError.

  • bpo-32415: asyncio: Добавьте Task.get_loop() и Future.get_loop()

  • bpo-26133: Не отписывать сигналы в цикле событий asyncio UNIX при выключении интерпретатора.

  • bpo-32363: Сделайте так, чтобы asyncio.Task.set_exception() и set_result() вызывали NotImplementedError. Task._step() и Future.__await__() вызывают правильные исключения, когда они находятся в недопустимом состоянии, вместо того, чтобы вызывать AssertionError.

  • bpo-32357: Оптимизация asyncio.iscoroutine() и loop.create_task() для неродных корутинов (например, async/await, скомпилированных в Cython). Раньше „loop.create_task(python_coroutine)“ был на 20 % быстрее, чем „loop.create_task(cython_coroutine)“. Теперь последний работает так же быстро.

  • bpo-32356: asyncio.transport.resume_reading() и pause_reading() теперь идемпотентны. Добавлен новый метод transport.is_reading().

  • bpo-32355: Оптимизация asyncio.gather(); теперь на 15 % быстрее.

  • bpo-32351: Используйте fastpath в asyncio.sleep, если delay<0 (2x boost)

  • bpo-32348: Оптимизация обратного вызова расписания/добавления/удаления asyncio.Future. Оптимизация позволяет повысить производительность кода async/await на 3-6%.

  • bpo-32331: Исправьте socket.settimeout() и socket.setblocking(), чтобы socket.type оставался прежним. Исправьте конструктор socket.socket(), чтобы сбросить все битовые флаги, применяемые к типу сокета. Это изменение затрагивает только те ОС, в которых есть SOCK_NONBLOCK и/или SOCK_CLOEXEC.

  • bpo-32248: Разрешить параметры с именами importlib.abc.ResourceReader и importlib.resources с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32311: Реализуйте ярлык asyncio.create_task(coro)

  • bpo-32327: Преобразование функций asyncio, которые были задокументированы как корутины, в корутины. Затронутые функции: loop.sock_sendall, loop.sock_recv, loop.sock_accept, loop.getaddrinfo, loop.getnameinfo.

  • bpo-32323: urllib.parse.urlsplit() теперь не преобразует идентификатор зоны (scope) в нижний регистр для скопированных IPv6-адресов в именах хостов.

  • bpo-32302: Исправьте bdist_wininst в distutils для CRT v142: он бинарно совместим с CRT v140.

  • bpo-29711: Исправьте stop_serving в цикле asyncio proactor kill all listening servers

  • bpo-32308: re.sub() теперь заменяет пустые совпадения, примыкающие к предыдущему непустому совпадению.

  • bpo-29970: Прервать соединение asyncio SSLProtocol, если рукопожатие не завершено в течение 10 секунд.

  • bpo-32314: Реализуйте asyncio.run().

  • bpo-17852: Отмена некорректного исправления, основанного на непонимании семантики _Py_PyAtExit().

  • bpo-32296: Реализуйте asyncio._get_running_loop() и get_event_loop() на C. Это делает их в 4 раза быстрее.

  • bpo-32250: Разрешить параметры с именами asyncio.current_task() и asyncio.all_tasks() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32255: Одиночное пустое поле теперь всегда берется в кавычки при записи в CSV-файл. Это позволяет отличить пустую строку от строки, состоящей из одного пустого поля. Исправление Лихта Такеучи.

  • bpo-32277: Разрешить параметры с именами NotImplementedError и SystemError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30050: Новый аргумент warn_on_full_buffer в signal.set_wakeup_fd позволяет вам контролировать, печатает ли Python предупреждение на stderr, когда буфер wakeup fd переполняется.

  • bpo-29137: Библиотека fpectl была удалена. Она никогда не была включена по умолчанию, никогда не работала корректно на x86-64 и изменяла ABI Python таким образом, что приводила к неожиданным поломкам расширений на C.

  • bpo-32273: Переместите asyncio.test_utils в test.test_asyncio.

  • bpo-32272: Удалите функцию asyncio.async().

  • bpo-32269: Добавьте функцию asyncio.get_running_loop().

  • bpo-32265: Все классовые и статические методы встроенных типов теперь корректно классифицируются inspect.classify_class_attrs() и группируются в выводе pydoc. Добавлен types.ClassMethodDescriptorType для несвязанных методов классов встроенных типов.

  • bpo-32253: Разрешить параметры с именами yield from lock и await lock с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-22589: Изменен MIME-тип .bmp с „image/x-ms-bmp“ на „image/bmp“

  • bpo-32193: Преобразование asyncio для использования синтаксиса async/await. Старый стиль yield from все еще поддерживается.

  • bpo-32206: Добавьте поддержку запуска модулей с pdb

  • bpo-32227: functools.singledispatch теперь поддерживает регистрацию реализаций с помощью аннотаций типов.

  • bpo-15873: Разрешить параметры с именами datetime.datetime.fromisoformat() и datetime.time.fromisoformat() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32199: В геттере ip getnode() теперь используется „ip link“ вместо „ip link list“.

  • bpo-32143: os.statvfs() включает поле f_fsid из statvfs(2)

  • bpo-26439: Исправьте ctypes.util.find_library() для AIX, реализовав ctypes._aix.find_library() Исправление от: Майкл Фелт

  • bpo-31993: Теперь пиклер использует меньше памяти при сериализации больших байтов и объектов str в файл. Пиклеры, созданные по протоколу 4, будут требовать меньше памяти для распаковки больших байтов и str-объектов.

  • bpo-27456: Убедитесь, что TCP_NODELAY установлен в Linux. Проверено Виктором Стиннером.

  • bpo-31778: ast.literal_eval() теперь более строгий. Сложение и вычитание произвольных чисел больше не допускается.

  • bpo-31802: Разрешить параметры с именами posixpath и ntpath с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30241: Добавьте contextlib.AbstractAsyncContextManager. Исправление от Jelle Zijlstra.

  • bpo-31699: Разрешить параметры с именами concurrent.futures.ProcessPoolExecutor и ProcessPoolExecutor с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-15216: TextIOWrapper.reconfigure() поддерживает изменение кодировки, ошибки и новой строки.

Документация

  • bpo-32418: Добавьте метод get_loop() в классы Server и AbstractServer.

Тесты

  • bpo-32252: Исправлена функция faulthandler_suppress_crash_report(), используемая для предотвращения создания дампов ядра при тестировании аварий. getrlimit() возвращает ноль в случае успеха.

  • bpo-32002: Настройте тестирование принуждения локали C для случаев пустой локали и локали POSIX, чтобы легче адаптироваться к поведению, зависящему от платформы.

Windows

  • bpo-19764: Реализуйте поддержку subprocess.Popen(close_fds=True) в Windows. Исправление от Segev Finer.

Инструменты/демоверсии

  • bpo-24960: 2to3 и lib2to3 теперь могут читать файлы с пикированными грамматиками, используя pkgutil.get_data(), а не прощупывая файловую систему. Это позволяет 2to3 и lib2to3 работать при запуске из zip-файла.

C API

  • bpo-32030: Py_Initialize() не сбрасывает аллокаторы памяти на значения по умолчанию, если переменная окружения PYTHONMALLOC не установлена.

  • bpo-29084: Недокументированный C API для OrderedDict был исключен из ограниченного C API. Он был добавлен по ошибке и фактически никогда не работал в ограниченном C API.

  • bpo-32264: Переместили заголовок pygetopt.h в internal/, так как у него нет публичных API.

  • bpo-32241: Разрешить параметры с именами Py_SetProgramName() и Py_SetPythonHome() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.7.0 alpha 3

Дата выхода: 2017-12-05

Ядро и встроенные модули

  • bpo-32176: co_flags.CO_NOFREE теперь всегда корректно устанавливается конструктором объекта кода на основе freevars и cellvars, а не требует корректной установки вызывающей стороной. Это гарантирует, что он будет автоматически очищен, когда в модифицированный объект кода и функцию будут внедрены дополнительные ссылки на ячейки.

  • bpo-10544: Выражения Yield теперь не используются в осмыслениях и генераторных выражениях. Они по-прежнему разрешены в определении крайнего итерируемого, поскольку он оценивается непосредственно в объемлющей области видимости.

  • bpo-32137: При выполнении repr глубоко вложенных dict теперь возникает ошибка RecursionError, а не аварийное завершение работы из-за переполнения стека.

  • bpo-32096: Верните изменения аллокаторов памяти в C API: переместите структуры обратно из _PyRuntime в Objects/obmalloc.c. Аллокаторы памяти снова инициализируются статически, и поэтому PyMem_RawMalloc() и Py_DecodeLocale() могут быть вызваны до _PyRuntime_Initialize().

  • bpo-32043: Добавьте новый «режим разработчика»: новый параметр командной строки «-X dev» для включения отладочных проверок во время выполнения.

  • bpo-32023: SyntaxError теперь корректно выдается, если вместо списка наследования в определении класса используется выражение генератора без скобок. Дублирование круглых скобок может быть опущено только при вызовах.

  • bpo-32012: SyntaxError теперь корректно выдается, когда в качестве аргумента передается выражение генератора без круглых скобок, но за ним следует запятая в конце. Выражение-генератор всегда должно находиться непосредственно внутри набора круглых скобок и не может иметь запятой ни с одной стороны.

  • bpo-28180: Разрешить параметры с именами _Py_SetLocaleFromEnv(category) и libc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31949: Исправлено несколько проблем с печатью трассировок (PyTraceBack_Print()). Установка sys.tracebacklimit в 0 или меньше теперь подавляет печать трассировок. Установка sys.tracebacklimit в None теперь приводит к использованию лимита по умолчанию. Установка sys.tracebacklimit в целое число, большее LONG_MAX, теперь означает использование ограничения LONG_MAX, а не ограничения по умолчанию. Исправлено целочисленное переполнение в случае более чем 2**31 элементов трассировки на Windows. Исправлена обработка ошибок вывода.

  • bpo-30696: Исправление бесконечного зацикливания интерактивного интерпретатора при отсутствии памяти.

  • bpo-20047: Методы Bytearray partition() и rpartition() теперь принимают в качестве разделителя только байтоподобные объекты, как это и задокументировано. В частности, они теперь выдают ошибку TypeError, а не возвращают ложный результат, если в качестве разделителя передано целое число.

  • bpo-21720: Разрешить параметры с именами __import__() и __all__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31845: Переменные окружения снова корректно считываются при запуске интерпретатора.

  • bpo-28936: Разрешить параметры с именами global и nonlocal с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31825: Исправлена ошибка переполнения в кодеке „unicode-escape“ и в codecs.escape_decode() при декодировании экранированного неасквидного байта.

  • bpo-31618: Разрешить параметры с именами frame->f_lineno и "line" с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28603: Выводить полную цепочку контекста/причины исключений при выходе из интерпретатора, даже если исключение в цепочке является нехешируемым или сравнивается с более поздними. Исправление Зейна Биттера.

  • bpo-31786: Исправлено округление таймаута в модуле select для корректного округления отрицательных таймаутов между -1.0 и 0.0. Теперь функции блокируют ожидание событий, как и ожидалось. Ранее вызов был некорректно неблокирующим. Исправление от Пабло Галиндо.

  • bpo-31781: Предотвращение сбоев при вызове методов неинициализированного объекта zipimport.zipimporter. Исправление от Орена Милмана.

  • bpo-30399: Стандартный repr() BaseException с единственным аргументом больше не содержит лишней запятой в конце.

  • bpo-31626: Исправлена ошибка в отладочном аллокаторе памяти. После уменьшения блока памяти происходила запись в освобожденную память.

  • bpo-30817: Разрешить параметры с именами PyErr_PrintEx() и _PySys_SetObjectId() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-28556: Разрешить параметры с именами typing и __init_subclass__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32214: PEP 557, Классы данных. Предоставляет декоратор, который добавляет шаблонные методы в классы, использующие аннотации типов для указания полей.

  • bpo-27240: Разрешить параметры с именами bpo-30788 и bpo-31831 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32186: io.FileIO.readall() и io.FileIO.read() теперь освобождают GIL при получении размера файла. Исправлено зависание всех потоков при недоступном NFS-сервере. Исправление Нира Соффера.

  • bpo-32101: Добавить флаг sys.flags.dev_mode

  • bpo-32154: Разрешить параметры с именами asyncio.windows_utils.socketpair() и socket.socketpair() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32089: предупреждения: В режиме разработки (-X dev) и отладки (pydebug build) используйте действие «по умолчанию» для ResourceWarning, а не действие «всегда» в фильтрах предупреждений по умолчанию.

  • bpo-32107: Разрешить параметры с именами uuid.getnode() и uuid.uuid1() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23033: Wildcard теперь поддерживается в имени хоста, когда он является одним и единственным символом в крайнем левом сегменте имени хоста во втором аргументе ssl.match_hostname(). Исправление от Mandeep Singh.

  • bpo-12239: Разрешить параметры с именами msilib.SummaryInformation.GetProperty() и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28334: Разрешить параметры с именами os.path.expanduser() и ~/.netrc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32121: Разрешить параметры с именами tracemalloc.Traceback и Traceback.format() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31325: Разрешить параметры с именами collections.namedtuple() и RobotFileParser.parse() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-12382: msilib.OpenDatabase() теперь выдает лучшее сообщение об исключении, если не удалось открыть или создать файл MSI. Первоначальный патч от Уильяма Тизера.

  • bpo-19610: Разрешить параметры с именами setup() и distutils.dist.Distribution с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32071: Разрешить параметры с именами -k и python -m unittest с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-10049: В контекстную библиотеку добавлен неопциональный менеджер контекста nullcontext. Это обеспечивает более простую и быструю альтернативу ExitStack() при работе с необязательными менеджерами контекста.

  • bpo-28684: Новый декоратор test.support.skip_unless_bind_unix_socket() используется здесь для пропуска тестов asyncio, которые терпят неудачу из-за отсутствия в платформе функциональной функции bind() для сокетов домена unix (как это происходит с не root-пользователями в последних версиях Android, которые теперь работают с SELinux в режиме принудительного исполнения).

  • bpo-32110: Разрешить параметры с именами codecs.StreamReader.read(n) и read() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27535: Модуль warnings больше не сливает память в реестр скрытых предупреждений для действия «игнорировать» фильтров warnings. Функция warn_explicit() больше не добавляет ключ предупреждения в реестр для действия «игнорировать».

  • bpo-32088: Разрешить параметры с именами Py_DEBUG и DeprecationWarning с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-1647489: Исправлен поиск шаблонов регулярных выражений, которые могли соответствовать пустой строке. Теперь непустая строка может быть корректно найдена после сопоставления с пустой строкой.

  • bpo-25054: Добавлена поддержка разбиения на шаблоны, которые могут соответствовать пустой строке.

  • bpo-32072: Исправлены проблемы с бинарными списками: Исправлено сохранение байтовых массивов. Идентичные объекты будут сохраняться только один раз. Равные ссылки будут загружаться как идентичные объекты. Добавлена поддержка сохранения и загрузки рекурсивных структур данных.

  • bpo-32069: Отбросьте устаревший SSL-транспорт из asyncio, ssl.MemoryBIO всегда используется в любом случае.

  • bpo-32066: asyncio: Поддержка pathlib.Path в create_unix_connection; аргумент sock должен быть необязательным

  • bpo-32046: Обновление 2to3 для преобразования operator.isCallable(obj) в callable(obj). Исправление от Donghee Na.

  • bpo-32018: inspect.signature должен следовать за PEP 8, если параметр имеет аннотацию и значение по умолчанию. Исправление от Donghee Na.

  • bpo-32025: Добавьте time.thread_time() и time.thread_time_ns()

  • bpo-32037: Целые числа, которые помещаются в знаковое 32-битное целое число, теперь будут травиться по протоколу 0 с использованием опкода INT. Это уменьшит размер pickle, ускорит процесс pickling и unpickling и сделает эти целые числа распаковываемыми как экземпляры int в Python 2.

  • bpo-32034: Сделайте asyncio.IncompleteReadError и LimitOverrunError pickleable.

  • bpo-32015: Исправлено зацикливание asyncio в случае переподключения сокета во время ожидания асинхронного чтения/записи из/в сокет.

  • bpo-32011: Восстановлена поддержка загрузки маршаловых файлов с кодом TYPE_INT64. Эти файлы могут быть созданы в Python 2.7.

  • bpo-28369: Улучшена проверка add_reader/writer на то, что сокет не используется каким-либо транспортом. Раньше поддерживались только случаи, когда add_reader/writer вызывался с int FD. Теперь проверка реализована корректно для всех файлоподобных объектов.

  • bpo-31976: Исправление состояния гонки при медленной промывке файла, что может привести к segfault при закрытии файла из другого потока.

  • bpo-31985: Формально устарели aifc.openfp, sunau.openfp и wave.openfp. С момента изменения 7bc817d5ba917528e8bd07ec461c635291e7b06a в 1993 году openfp в каждом из этих трех модулей указывал на функцию open этого модуля в качестве обратной совместимости, хотя это было непроверено и недокументировано.

  • bpo-21862: командная строка cProfile теперь принимает -m module_name в качестве альтернативы пути к скрипту. Исправление от Sanyam Khurana.

  • bpo-31970: Снижение накладных расходов на производительность режима отладки asyncio.

  • bpo-31843: Аргумент база данных в sqlite3.connect() теперь принимает path-like object, а не просто строку.

  • bpo-31945: Разрешить параметры с именами HTTPConnection и HTTPSConnection с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31943: Разрешить параметры с именами cancelled() и asyncio.Handle с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-9678: Исправлено определение MAC-адреса в модуле uuid: Использование ifconfig в NetBSD и OpenBSD. Использование arp в Linux, FreeBSD, NetBSD и OpenBSD. Основано на исправлении Такаюки Шимизукавы.

  • bpo-30057: Исправьте потенциальный пропущенный сигнал в signal.signal().

  • bpo-31933: Исправление параметров Blake2 leaf_size и node_offset на платформах с большим эндианом. Исправление от Джека О’Коннора.

  • bpo-21423: Добавьте аргумент инициализатора к {Process,Thread}PoolExecutor

  • bpo-31927: Исправлена компиляция модуля сокетов на NetBSD 8. Исправлен сбой утверждения или чтение произвольных данных при разборе адреса AF_BLUETOOTH на NetBSD и DragonFly BSD.

  • bpo-27666: Исправлено повреждение стека в curses.box() и curses.ungetmouse(), когда размер типов chtype или mmask_t меньше размера C long. curses.box() теперь принимает символы в качестве аргументов. Основано на исправлении Стива Финка.

  • bpo-31917: Разрешить параметры с именами time.CLOCK_BOOTTIME и time.CLOCK_PROF с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31897: plistlib теперь отлавливает больше ошибок при чтении бинарных списков и поднимает InvalidFileException вместо неожиданных исключений.

  • bpo-25720: Исправление метода проверки состояния прокладки curses WINDOW. Исправление от Масаюки Ямамото.

  • bpo-31893: Исправлено расположение структуры kqueue_event на OpenBSD и NetBSD. Исправлено сравнение объектов kqueue_event.

  • bpo-31891: Исправлена сборка модуля curses на NetBSD.

  • bpo-31884: добавлены необходимые константы в модуль подпроцесса для установки приоритета в окнах

  • bpo-28281: Уберите ограничения на год (1-9999) для функции Calendar.weekday(). Исправление от Марка Голлахона.

  • bpo-31702: crypt.mksalt() теперь позволяет указать количество раундов для хеширования SHA-256 и SHA-512.

  • bpo-30639: inspect.getfile() больше не вычисляет repr неизвестных объектов для отображения в сообщении об ошибке, чтобы защититься от плохого поведения пользовательских repr.

  • bpo-30768: Исправление реализации pthread+semaphore функции PyThread_acquire_lock_timed() при вызове с timeout > 0 и intr_flag=0: перерасчет таймаута, если sem_timedwait() прерывается сигналом (EINTR). См. также PEP 475.

  • bpo-31854: Добавить константу mmap.ACCESS_DEFAULT.

  • bpo-31834: Используйте оптимизированный код для BLAKE2 только с SSSE3+. Чистая реализация SSE2 медленнее, чем чистая эталонная реализация C.

  • bpo-28292: Calendar.itermonthdates() теперь будет последовательно вызывать исключение, если дата выходит за пределы диапазона от 0001-01-01 до 9999-12-31. Для поддержки приложений, не терпящих таких исключений, добавлены новые методы itermonthdays3() и itermonthdays4(). Новые методы возвращают кортежи и не ограничены диапазоном, поддерживаемым datetime.date.

  • bpo-28564: Работа функции shutil.rmtree() была ускорена на 20-40 %. Это было сделано с помощью функции os.scandir().

  • bpo-28416: Экземпляры подкласса pickle.Pickler с методом persistent_id() и подкласса pickle.Unpickler с методом persistent_load() больше не создают циклов ссылок.

  • bpo-31653: Не освобождайте GIL, если мы можем немедленно получить многопроцессорный семафор.

  • bpo-28326: Исправьте multiprocessing.Process, когда stdout и/или stderr закрыты или None.

  • bpo-20825: Разрешить параметры с именами subnet_of и superset_of с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31827: Удалите функцию os.stat_float_times(). Она была введена в Python 2.3 для обратной совместимости с Python 2.2 и была устаревшей с Python 3.1.

  • bpo-31756: Разрешить параметры с именами subprocess.Popen(text=False) и subprocess с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31819: Добавьте AbstractEventLoop.sock_recv_into().

  • bpo-31457: Если используются вложенные адаптеры журналов, внутренние методы process() больше не опускаются.

  • bpo-31457: Свойство manager в объектах LoggerAdapter теперь правильно задается.

  • bpo-31806: Исправлено округление таймаута в time.sleep(), threading.Lock.acquire() и socket.socket.settimeout() для корректного округления отрицательных таймаутов от -1.0 до 0.0. Теперь функции блокируют ожидание событий, как и ожидалось. Ранее вызов был некорректно неблокирующим. Автор исправления - Пабло Галиндо.

  • bpo-31803: time.clock() и time.get_clock_info(„clock“) теперь выдают предупреждение DeprecationWarning.

  • bpo-31800: Расширена поддержка разбора смещений UTC. strptime „%z“ теперь может разбирать вывод, сгенерированный datetime.isoformat, включая секунды и микросекунды.

  • bpo-28603: traceback: Исправление ошибки TypeError, возникавшей при печати трассировки исключений, когда либо текущее исключение, либо исключение в его контексте/цепочке причин было нехешируемым. Исправление Зейна Биттера.

  • bpo-30541: Добавьте новую функцию для запечатывания макета и предотвращения автоматического создания дочерних макетов. Исправление от Марио Корчеро.

  • bpo-31784: Разрешить параметры с именами PEP 564 и time с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30143: 2to3 теперь генерирует код, использующий абстрактные классы коллекций из collections.abc, а не collections.

  • bpo-31770: Разрешить параметры с именами __init__() и sqlite3.Cursor с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31764: Разрешить параметры с именами sqlite3.Cursor.close() и Cursor с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31752: Исправление возможного сбоя в конструкторе timedelta, вызываемом с пользовательскими целыми числами.

  • bpo-31620: пустая очередь asyncio.Queue теперь не сливает память при таймауте queue.get pollers

  • bpo-31690: Разрешает использовать флаги re.ASCII, re.LOCALE и re.UNICODE в качестве групповых флагов для регулярных выражений.

  • bpo-30349: FutureWarning теперь выдается, если регулярное выражение содержит конструкции набора символов, которые семантически изменятся в будущем (вложенные множества и операции с множествами).

  • bpo-31664: Добавлена поддержка хэширования Blowfish в модуле crypt.

  • bpo-31632: Исправьте метод set_protocol() класса _SSLProtocolTransport в модуле asyncio. Ранее этот метод изменял неверную ссылку на протокол.

  • bpo-15037: Добавлено обходное решение для getkey() в curses для ncurses 5.7 и более ранних версий.

  • bpo-31307: Разрешить использование байтовых объектов в качестве аргументов для configparser.ConfigParser.read(). Исправление от Винсента Мишеля.

  • bpo-31334: Разрешить параметры с именами poll.poll([timeout]) и select с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31310: семафорный трекер мультипроцессора должен быть запущен снова в случае сбоя.

  • bpo-31308: Сделайте многопроцессорный процесс forkserver невосприимчивым к Ctrl-C и другим прерываниям пользователя. Если он падает, перезапустите его при необходимости.

  • bpo-31245: Добавлена поддержка сокета AF_UNIX в asyncio create_datagram_endpoint.

  • bpo-30553: Добавьте код состояния HTTP/2 421 (ошибочный запрос) в http.HTTPStatus. Исправление Витора Перейры.

Документация

  • bpo-32105: Добавлен маркер asyncio.BaseEventLoop.connect_accepted_socket versionadded.

Тесты

  • bpo-31380: Пропустить test_httpservers test_undecodable_file на macOS: не удается на APFS.

  • bpo-31705: Пропустите test_socket.test_sha256() на ядре Linux старше 4.5. Тест не проходит с ENOKEY на ядре 3.10 (на ppc64le). Исправление было добавлено в ядро 4.5.

  • bpo-32138: Пропускайте тесты test_faulthandler для Android, которые поднимают SIGSEGV, и удалите декоратор test.support.requires_android_level.

  • bpo-32136: Разрешить параметры с именами Lib/test/test_capi.py и Lib/test/test_embed.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28668: test.support.requires_multiprocessing_queue удален. Пропускайте тесты с test.support.import_module(„multiprocessing.synchronize“) вместо этого, если реализация семафора сломана или отсутствует.

  • bpo-32126: Пропустите test_get_event_loop_new_process в test.test_asyncio.test_events, когда sem_open() не работает.

  • bpo-31174: Исправьте test_tools.test_unparse: DirectoryTestCase теперь сохраняет выборку имен, чтобы всегда проверять одни и те же файлы. Это предотвращает ложные срабатывания при поиске утечек ссылок.

Построить

  • bpo-28538: Верните предыдущие изменения, структура if_nameindex определена в Unified Headers.

  • bpo-28762: Отмена последней фиксации, макрос F_LOCK определен в Android Unified Headers.

  • bpo-29040: Поддержка сборки Android с унифицированными заголовками. Первым выпуском NDK с поддержкой Unified Headers стал android-ndk-r14.

  • bpo-32059: Разрешить параметры с именами detect_modules() и setup.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31957: Исправлено определение версии Windows SDK при сборке под Windows.

  • bpo-31609: Исправляет кавычки в файле PCbuild/clean.bat

  • bpo-31934: Прерывает сборку при сборке из нечистого дерева исходных текстов.

  • bpo-31926: Исправлена ошибка Argument Clinic, иногда вызывавшая ошибки компиляции, когда в .c-файле было более одной функции и/или метода с одинаковым именем.

  • bpo-28791: Обновите сборки Windows для использования SQLite 3.21.0.

  • bpo-28791: Обновите программу установки OS X для использования SQLite 3.21.0.

  • bpo-28643: Запись хода сборки profile-opt с файлами штампов.

  • bpo-31866: Завершите удаление поддержки AtheOS.

Windows

  • bpo-1102: Разрешить параметры с именами None и View.Fetch() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31944: Исправлена кнопка «Изменить» в диалоге «Приложения и функции».

  • bpo-20486: Реализуйте метод Database.Close() для помощи в закрытии объектов базы данных MSI.

  • bpo-31857: Сделать поведение USE_STACKCHECK детерминированным в многопоточной среде.

macOS

  • bpo-31392: Обновление программы установки macOS для использования OpenSSL 1.0.2m

IDLE

  • bpo-32207: Улучшение трассировки исключений событий tk в IDLE. Когда обработка событий tk управляется циклом выполнения IDLE, контекст queue.EMPTY больше не добавляется к трассировкам исключений tk. Возврат к трассировке теперь такой же, как и при обработке событий пользовательским кодом. Исправление основано на предложении Сергея Сторчака.

  • bpo-32164: Удалите неиспользуемый файл idlelib/tabbedpages.py. Использование TabbedPageSet в configdialog было заменено на ttk.Notebook.

  • bpo-32100: IDLE: Исправление старых и новых ошибок в pathbrowser; улучшение тестов. Патч в основном разработан Шерил Сабелла.

  • bpo-31858: IDLE – Ограничивает манипуляции с приглашениями оболочки только оболочкой. Окна редактора и вывода видят только пустую последнюю строку подсказки. Это упрощает код и исправляет небольшую ошибку при вставке новой строки. Sys.ps1, если он присутствует, считывается при запуске оболочки, но не устанавливается и не изменяется.

  • bpo-31860: Образец шрифта в диалоге конфигурации IDLE теперь можно редактировать. Изменения сохраняются, пока IDLE остается открытым

  • bpo-31836: Test_code_module теперь проходит, если запущен после test_idle, который устанавливает ps1. Модуль кода использует sys.ps1, если он есть, или устанавливает его в „>>> „, если его нет. Test_code_module теперь правильно проверяет оба поведения. То же самое касается ps2.

  • bpo-28603: Исправление ошибки TypeError, которая приводила к перезапуску оболочки при печати трассировки, включающей исключение, которое невозможно хэшировать. Исправление от Зейна Биттера.

  • bpo-13802: Использовать нелатинские символы в примере настроек шрифта IDLE. Даже если выбрать шрифт, определяющий ограниченное подмножество юникода Базовой многоязычной плоскости, tcl/tk будет использовать другие шрифты, определяющие символ. Расширенный пример дает пользователям нелатинских символов лучшее представление о том, что они могут увидеть в оболочке и редакторах IDLE. Чтобы освободить место для расширенного примера, фреймы на вкладке «Шрифт» переставляются. В справке «Шрифт/вкладки» немного рассказано об этих дополнениях.

Инструменты/демоверсии

  • bpo-32159: Удалите инструменты CVS и Subversion: удалите скрипты svneol.py и treesync.py. CPython мигрировал с CVS на Subversion, на Mercurial, а затем на Git. CVS и Subversion больше не используются для разработки CPython.

  • bpo-30722: Заставьте redemo работать с Python 3.6 и более новыми версиями. Также удалите опцию LOCALE, так как она не работает со строковыми шаблонами в Python 3. Исправление Кристофа Сарновски.

C API

  • bpo-20891: Исправьте PyGILState_Ensure(). Если PyGILState_Ensure() вызывается в не-Python потоке до PyEval_InitThreads(), вызывайте PyEval_InitThreads() только после вызова PyThreadState_New(), чтобы исправить падение.

  • bpo-32125: Флаг Py_UseClassExceptionsFlag был удален. Он был устаревшим и больше не использовался, начиная с Python 2.0.

  • bpo-25612: Перемещает текущее состояние исключения из объекта фрейма в ко-программу. Это упрощает интерпретатор и исправляет пару непонятных ошибок, вызванных подменой состояния исключения при входе и выходе из генератора.

  • bpo-23699: Добавьте макрос Py_RETURN_RICHCOMPARE, чтобы уменьшить количество кодового кода в функциях сравнения.

  • bpo-30697: Разрешить параметры с именами PyExc_RecursionErrorInst и PyErr_NormalizeException() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.7.0 alpha 2

Дата выхода: 2017-10-16

Ядро и встроенные модули

  • bpo-31558: gc.freeze() - это новый API, который позволяет переместить все объекты, отслеживаемые сборщиком мусора, в постоянное поколение, фактически удалив их из будущих событий сбора. Это может быть использовано для защиты этих объектов от мутирования их PyGC_Head. По сути, это обеспечивает большую стабильность копирования при записи в fork().

  • bpo-31642: Восстановили блокировку «from package import module», установив для sys.modules[«package.module»] значение None.

  • bpo-31708: Разрешить использование выражений асинхронных генераторов в синхронных функциях.

  • bpo-31709: Отказ от поддержки асинхронного __aiter__.

  • bpo-30404: Опция -u теперь делает потоки stdout и stderr небуферизованными, а не линейно-буферизованными.

  • bpo-31619: Исправлена ошибка ValueError при преобразовании строки с большим количеством символов подчеркивания в целое число с двоичной основой.

  • bpo-31602: Разрешить параметры с именами zipimporter.get_source() и zlib.decompress() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31592: Исправлен сбой утверждения в парсере Python в случае плохого unicodedata.normalize(). Исправление от Орена Милмана.

  • bpo-31588: Разрешить параметры с именами TypeError и __prepare__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31574: Importlib был оснащен двумя датчиками dtrace для профилирования времени импорта.

  • bpo-31566: Разрешить параметры с именами _warnings.warn() и __name__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31506: Разрешить параметры с именами object.__new__ и object.__init__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31505: Разрешить параметры с именами json и _json.make_encoder() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31492: Исправление ошибок утверждения в случае невозможности импорта из модуля с плохим атрибутом __name__, а также в случае невозможности доступа к атрибуту такого модуля. Исправление от Орена Милмана.

  • bpo-31478: Разрешить параметры с именами _random.Random.seed() и __abs__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31336: Ускорение создания классов на 10-20% за счет снижения накладных расходов на необходимые специальные поиски методов. Исправление Стефана Бехнеля.

  • bpo-31415: Разрешить параметры с именами -X importtime и PYTHONPROFILEIMPORTTIME с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31410: Оптимизирована обертка вызова и дескрипторы методов класса.

  • bpo-31353: Разрешить параметры с именами PEP 553 и breakpoint() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-17852: Ведение списка открытых буферизованных файлов, их промывка перед выходом из интерпретатора. Основано на патче от Армина Риго.

  • bpo-31315: Исправление ошибки утверждения в imp.create_dynamic(), когда spec.name не является строкой. Исправление от Орена Милмана.

  • bpo-31311: Разрешить параметры с именами __setstate__() и ctypes._CData с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31293: Исправление сбоев при истинном делении и умножении объекта timedelta на float с плохим методом as_integer_ratio(). Исправление от Орена Милмана.

  • bpo-31285: Разрешить параметры с именами warnings.warn_explicit и get_source() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30406: Разрешить параметры с именами async и await с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-30058: Исправлено переполнение буфера в select.kqueue.control().

  • bpo-31672: Разрешить параметры с именами idpattern и string.Template с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31701: В Windows функция faulthandler.enable() теперь игнорирует исключения MSC и COM.

  • bpo-31728: Разрешить параметры с именами _elementtree и Element.text с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31671: Теперь re.compile() преобразует переданный RegexFlag в обычный объект int перед компиляцией. Бенчмарк bm_regex_compile показывает 14 % прироста производительности.

  • bpo-30397: Разрешить параметры с именами re.Pattern и re.Match с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31675: Исправлена утечка памяти в методах Tkinter splitlist() и split() при передаче строки размером более 2 ГБ.

  • bpo-31673: Исправлена опечатка в названии метода Tkinter adderrorinfo().

  • bpo-31648: Улучшения в предикатах пути в ElementTree: Разрешить пробелы вокруг частей предиката, т. е. «[a = „text“]» вместо того, чтобы требовать менее читабельного «[a=„text“]». Добавить поддержку текстового сравнения текущего узла, например «[.=„text“]». Исправление Стефана Бехнеля.

  • bpo-30806: Исправьте строковое представление объекта netrc.

  • bpo-31638: Разрешить параметры с именами compressed и zipapp.create_archive с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25351: Избегайте сбоев при активации venv с неопределенными переменными

  • bpo-20519: Избегайте использования ctypes (если это возможно) и улучшайте время импорта для uuid.

  • bpo-28293: Кэш регулярных выражений больше не очищается полностью, когда он переполнен.

  • bpo-31596: Добавлена функция pthread_getcpuclockid() в модуль времени

  • bpo-27494: Заставьте 2to3 принимать запятую в конце выражений генератора. Например, теперь разрешено использовать set(x for x in [],).

  • bpo-30347: Прекращение сбоев при одновременном выполнении итераций над итераторами itertools.groupby().

  • bpo-30346: Итератор, созданный итератором itertools.groupby(), теперь становится исчерпанным после продвижения итератора groupby.

  • bpo-31556: Отмените asyncio.wait_for future faster, если таймаут <= 0

  • bpo-31540: Разрешить параметры с именами concurrent.futures.ProcessPoolExecutor и concurrent.futures.ProcessPoolExecutor с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31516: threading.current_thread() не должен возвращать фиктивный поток при завершении работы.

  • bpo-31525: В модуле sqlite требуется API sqlite3_prepare_v2. Таким образом, модуль sqlite теперь требует sqlite версии не ниже 3.3.9.

  • bpo-26510: подпарсеры argparse теперь требуются по умолчанию. Это соответствует поведению в Python 2. Для необязательных подпарсеров используйте новый параметр add_subparsers(required=False). Исправление Энтони Соттила. (Начиная с версии 3.7.0rc1, значение по умолчанию было изменено на необязательное, как это было с Python 3.3).

  • bpo-27541: Разрешить параметры с именами bytearray и array.array с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31351: python -m ensurepip теперь завершается с ненулевым кодом выхода, если загрузка pip завершилась неудачно.

  • bpo-31389: Разрешить параметры с именами pdb.set_trace() и header с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-31537: Исправьте неправильное использование get_history_length в примере примера документации readline. Исправление от Брэда Смита.

  • bpo-30085: Операторные функции без двойного подчеркивания предпочтительнее для наглядности. Те, что с подчеркиванием, сохраняются только для обратной совместимости.

Построить

  • bpo-31696: Улучшение информации о версии компилятора в sys.version, когда Python собран с помощью Clang.

  • bpo-31625: Прекратите использовать ranlib для статических библиотек. Вместо этого мы предполагаем, что ar поддерживает флаг „s“.

  • bpo-31624: Удалите поддержку BSD/OS.

  • bpo-22140: Предотвращение двойной подстановки префикса в python-config.sh.

  • bpo-31569: Исправьте регистр PCBuild/ на PCbuild/ в скриптах сборки и документации.

  • bpo-31536: Избегайте оптовой перестройки после make regen-all, если ничего не изменилось.

IDLE

  • bpo-31460: Упрощение API браузера модулей IDLE. Передача виджета вместо flist с корневым виджетом открывает возможность создания фрейма браузера, который является только частью окна. Передача полного имени файла вместо фрагментов, которые, как предполагается, происходят из файла .py, открывает возможность просмотра файлов python, которые не заканчиваются на .py.

  • bpo-31649: IDLE - Сделайте параметры _htest, _utest только ключевыми.

  • bpo-31559: Удалите зависимость от порядка выполнения теста в idle_test.test_browser.

  • bpo-31459: Переименование браузера модулей IDLE из Class Browser в Module Browser. Первоначальный браузер классов и методов на уровне модулей стал браузером модулей с добавлением функций на уровне модулей много лет назад. Вложенные классы и функции были добавлены вчера. Для обратной совместимости виртуальное событие <<open-class-browser>>, которое отображается на вкладке Keys диалога Settings, не изменяется. Исправление от Шерил Сабелла.

  • bpo-31500: Шрифты по умолчанию теперь масштабируются на дисплеях HiDPI.

  • bpo-1612262: Браузер модулей IDLE теперь показывает вложенные классы и функции. Оригинальные исправления кода и тестов от Гильерме Поло и Шерил Сабелла, соответственно.

C API

  • bpo-28280: Разрешить параметры с именами PyMapping_Keys() и PyMapping_Values() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31532: Исправление повреждения памяти из-за смешения аллокаторов в getpath.c между Py_GetPath() и Py_SetPath()

  • bpo-25658: Реализуйте PEP 539 для Thread Specific Storage (TSS) API: это новый Thread Local Storage (TLS) API для CPython, который заменит использование существующего TLS API в интерпретаторе CPython, в то время как существующий API будет устаревшим. PEP написан Эриком М. Бреем, патч - Масаюки Ямамото.

Python 3.7.0 alpha 1

Дата выхода: 2017-09-19

Безопасность

  • bpo-29781: SSLObject.version() теперь корректно возвращает None, если рукопожатие по BIO еще не было выполнено.

  • bpo-29505: Добавьте fuzz-тесты для float(str), int(str), unicode(str); для oss-fuzz.

  • bpo-30947: Обновите встроенную копию libexpat с версии 2.2.1 до 2.2.3, чтобы получить исправления безопасности.

  • bpo-30730: Предотвращает внедрение переменных окружения в подпроцесс в Windows. Предотвращает передачу других переменных окружения и командных аргументов.

  • bpo-30694: Разрешить параметры с именами CVE-2017-9233 и CVE-2016-9063 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30500: Разрешить параметры с именами splithost('//127.0.0.1#@evil.com/') и 127.0.0.1 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29591: Разрешить параметры с именами CVE-2016-0718 и CVE-2016-4472 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-31490: Разрешить параметры с именами ctypes и _anonymous_ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31471: Разрешить параметры с именами subprocess.Popen() и keys() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31418: Разрешить параметры с именами PyErr_WriteUnraisable() и __module__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31416: Исправление ошибок утверждения в случае неверных warnings.filters или warnings.defaultaction. Исправление от Орена Милмана.

  • bpo-28411: Измените прямое использование PyInterpreterState.modules на PyImport_GetModuleDict(). Также вводится больше единообразия в остальной код, работающий с sys.modules. Это поможет уменьшить сложности при работе с sys.modules.

  • bpo-28411: Разрешить параметры с именами PyInterpreterState.modules и PyImport_GetModule() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31411: Вызывать ошибку TypeError вместо SystemError в случае, если warnings.onceregistry не является словарем. Исправление от Орена Милмана.

  • bpo-31344: Разрешить параметры с именами f_trace_lines и True с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31373: Исправление нескольких возможных случаев неопределенного поведения из-за понижения плавающей точки.

  • bpo-30465: Разрешить параметры с именами lineno и col_offset с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30860: Консолидируйте глобальное состояние времени выполнения CPython в одной структуре. Это улучшает доступность состояния времени выполнения.

  • bpo-31347: Исправление возможного неопределенного поведения в _PyObject_FastCall_Prepend.

  • bpo-31343: Включите в sys/sysmacros.h функции major(), minor() и makedev(). Библиотека GNU C планирует удалить эти функции из sys/types.h.

  • bpo-31291: Разрешить параметры с именами zipimport.zipimporter.get_data и pathname.replace('/','\\') с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31271: Разрешить параметры с именами write() и io.TextIOWrapper с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31243: Исправление сбоя в некоторых методах io.TextIOWrapper, когда состояние декодера недействительно. Исправление от Орена Милмана.

  • bpo-30721: print теперь показывает правильную подсказку для использования синтаксиса перенаправления в Python 2. Исправление от Sanyam Khurana.

  • bpo-31070: Исправление состояния гонки в importlib _get_module_lock().

  • bpo-30747: Добавьте нефиктивную реализацию _Py_atomic_store и _Py_atomic_load на MSVC.

  • bpo-31095: Разрешить параметры с именами tp_dealloc и PyObject_GC_UnTrack() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31071: Избегайте маскировки исходной ошибки TypeError в вызове с * распаковкой, когда передаются другие аргументы.

  • bpo-30978: str.format_map() теперь пропускает исключения поиска ключей. Ранее любое исключение заменялось исключением KeyError.

  • bpo-30808: Используйте _Py_atomic API для чувствительного к параллелизму состояния сигнала.

  • bpo-30876: Относительный импорт из незагруженного пакета теперь повторно импортирует пакет вместо ошибки SystemError. Относительный импорт из непакета теперь завершается с ошибкой ImportError, а не SystemError.

  • bpo-30703: Улучшение доставки сигналов. Избегайте использования Py_AddPendingCall из обработчика сигналов, чтобы избежать вызова функций, небезопасных для сигналов. Тесты, которые я добавляю сюда, не работают без остальных патчей на Linux и OS X. Это означает, что наша логика доставки сигналов имеет дефекты (некоторые сигналы могут быть потеряны).

  • bpo-30765: Избегайте блокировки в pthread_mutex_lock(), когда PyThread_acquire_lock() просят не блокировать.

  • bpo-31161: Убедитесь, что сообщение об ошибке синтаксиса „Missing parenthes“ применяется только к SyntaxError, а не к подклассам. Исправление от Martijn Pieters.

  • bpo-30814: Исправлено состояние гонки при импорте подмодуля из пакета.

  • bpo-30736: Внутренняя база данных unicodedata была обновлена до версии Unicode 10.0.

  • bpo-30604: Перенесите co_extra_freefuncs с per-thread на per-interpreter, чтобы избежать падений.

  • bpo-30597: print теперь показывает ожидаемый ввод в пользовательском сообщении об ошибке, когда используется в качестве оператора Python 2. Исправление от Sanyam Khurana.

  • bpo-30682: Удалено слишком строгое утверждение, которое не срабатывало для некоторых f-строк, таких как eval(«f„\n“») и eval(«f„\r“»).

  • bpo-30501: Компилятор теперь выдает более оптимальный код для сложных выражений условий в операторах «if», «while» и «assert», выражения «if», а также генераторных выражений и осмыслений.

  • bpo-28180: Реализуйте PEP 538 (принудительное использование локали в устаревшем языке C). Это означает, что при наличии подходящей целевой локали для кодирования, как основной интерпретатор, так и локально-ориентированные расширения C будут использовать UTF-8 в качестве текстовой кодировки по умолчанию, а не ASCII.

  • bpo-30486: Позволяет задавать значения ячеек для __закрытия__. Исправление Лизы Роуч.

  • bpo-30537: itertools.islice теперь принимает целочисленные объекты (имеющие метод __index__) в качестве аргументов start, stop и slice

  • bpo-25324: Разрешить параметры с именами COMMENT и NL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29104: Исправлен разбор обратных слэшей в f-строках.

  • bpo-27945: Исправлены различные segfault’ы с dict, когда входные коллекции мутируют во время поиска, вставки или сравнения. Основано на исправлениях Дуэйна Гриффина и Тима Митчелла.

  • bpo-25794: Исправлены type.__setattr__() и type.__delattr__() для неинтернированных имен атрибутов. Основано на исправлении Эрика Суна.

  • bpo-30039: Если прерывание KeyboardInterrupt происходит, когда интерпретатор находится в середине возобновления цепочки вложенных вызовов „yield from“ или „await“, то теперь оно корректно доставляется во внутренний фрейм.

  • bpo-28974: Разрешить параметры с именами object.__format__(x, '') и str(x) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30024: Циклический импорт с абсолютным импортом и привязкой подмодуля к имени теперь поддерживается.

  • bpo-12414: sys.getsizeof() на кодовом объекте теперь возвращает размеры, включающие кодовую структуру и размеры объектов, на которые она ссылается. Исправление от Donghee Na.

  • bpo-29839: len() теперь выдает ValueError, а не OverflowError, если __len__() возвращает большое отрицательное целое число.

  • bpo-11913: README.rst теперь включен в список стандартных README distutils и, следовательно, включен в исходные дистрибутивы.

  • bpo-29914: Исправлена реализация по умолчанию __reduce__ и __reduce_ex__(). object.__reduce__() больше не принимает аргументов, object.__reduce_ex__() теперь требует один аргумент.

  • bpo-29949: Исправление регрессии использования памяти объектами set и frozenset.

  • bpo-29935: Исправлены сообщения об ошибках в методе index() кортежей, списков и deque при передаче индексов неправильного типа.

  • bpo-29816: Операция сдвига теперь имеет меньше возможностей вызвать ошибку OverflowError. При отрицательном счете всегда возникает ValueError, а не OverflowError. Сдвиг нуля с неотрицательным счетом всегда возвращает ноль.

  • bpo-24821: Исправлено замедление до 25 раз при поиске некоторых неудачных символов Unicode.

  • bpo-29102: Добавляет уникальный идентификатор к PyInterpreterState. Это облегчает идентификацию каждого субинтерпретатора.

  • bpo-29894: Предупреждение об устаревании выдается, если __complex__ возвращает экземпляр строгого подкласса complex. В будущих версиях Python это может быть ошибкой.

  • bpo-29859: Показывать корректные сообщения об ошибках при сбое любого из вызовов pthread_* в thread_pthread.h.

  • bpo-29849: Исправление утечки памяти при возникновении ошибки ImportError во время импорта из.

  • bpo-28856: Исправление ошибки, связанной с тем, что формат %b для байтов должен поддерживать объекты, следующие за буферным протоколом.

  • bpo-29723: Разрешить параметры с именами sys.path[0] и bpo-29139 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29568: Сбегающий процент «%%» в строке формата для классического форматирования строки больше не допускает никаких символов между двумя процентами.

  • bpo-29714: Исправление ошибки, из-за которой формат байтов мог не работать, если внутри содержался нулевой байт.

  • bpo-29695: bool(), float(), list() и tuple() больше не принимают аргументы в виде ключевых слов. Первый аргумент int() теперь может передаваться только как позиционный аргумент.

  • bpo-28893: Установите правильную __cause__ для ошибок о недействительных awaitables, возвращаемых из __aiter__ и __anext__.

  • bpo-28876: Разрешить параметры с именами bool(range) и len(range) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29683: Исправление выделения памяти в _PyCode_SetExtra. Исправление от Брайана Коулмана.

  • bpo-29684: Исправьте небольшую регрессию в PyEval_CallObjectWithKeywords. Она должна вызывать TypeError, если kwargs не является dict. Но это может привести к segv, когда args=NULL и kwargs не является dict.

  • bpo-28598: Поддержка __rmod__ для подклассов str, вызываемых перед str.__mod__. Исправление от Martijn Pieters.

  • bpo-29607: Исправление вычисления эффекта стека для CALL_FUNCTION_EX. Исправление от Матьё Дартиаиля (Matthieu Dartiailh).

  • bpo-29602: Исправлена некорректная обработка подписанных нулей в конструкторе complex для подклассов complex и для входов, имеющих метод __complex__. Исправление Сергея Сторчака.

  • bpo-29347: Исправлена возможность разыменования неопределенных указателей при создании объектов weakref.

  • bpo-29463: Разрешить параметры с именами docstring и co_firstlineno с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29438: Исправлена проблема use-after-free в дикте разделения ключей.

  • bpo-29546: Установите атрибуты „path“ и „name“ на ImportError для from ... import ....

  • bpo-29546: Улучшение сообщения об ошибке при импорте с указанием местоположения

  • bpo-29478: Если при использовании политики Compat32 указано значение max_line_length=None, оно больше не игнорируется. Исправление Мирчи Косбука.

  • bpo-29319: Предотвращение перезаписи RunMainFromImporter в sys.path[0].

  • bpo-29337: Исправлено возможное предупреждение BytesWarning при сравнении объектов кода. Предупреждения могли выдаваться во время компиляции.

  • bpo-29327: Исправлено падение при передаче ключевого слова iterable в sorted().

  • bpo-29034: Исправление утечки памяти и use-after-free в модуле os (path_converter).

  • bpo-29159: Исправление регрессии в bytes(x), когда x.__index__() поднимает исключение.

  • bpo-29049: Ленивый вызов _PyObject_GC_TRACK() при вызове Python-функции. Вызов функции происходит на 5 % быстрее.

  • bpo-28927: bytes.fromhex() и bytearray.fromhex() теперь игнорируют все пробельные символы ASCII, а не только пробелы. Исправление Роберта Сяо.

  • bpo-28932: Не включайте <sys/random.h>, если он не существует.

  • bpo-25677: Исправление позиционирования символа синтаксической ошибки для блоков с отступами. Основано на исправлении Майкла Лейзелла.

  • bpo-29000: Исправлено форматирование байтов окталов с нулевой прокладкой в альтернативной форме.

  • bpo-18896: Функция Python теперь может иметь более 255 параметров. collections.namedtuple() теперь поддерживает кортежи с более чем 255 элементами.

  • bpo-28596: В Android предпочтительной кодировкой является UTF-8. Автор патча - Чи Хсуан Йен.

  • bpo-22257: Очистите запуск интерпретатора (см. PEP 432).

  • bpo-26919: На Android данные операционной системы теперь всегда кодируются/декодируются в/из UTF-8, а не из кодировки локали, чтобы избежать несоответствий с os.fsencode() и os.fsdecode(), которые уже используют UTF-8.

  • bpo-28991: functools.lru_cache() был подвержен неясной ошибке реентерабельности, вызываемой исправленной функцией len().

  • bpo-28147: Исправлена утечка памяти в словарях с разделенными таблицами: setattr() не должна преобразовывать объединенную таблицу в разделенную. Патч написан INADA Naoki.

  • bpo-28739: выражения f-строк больше не принимаются в качестве docstrings и в ast.literal_eval(), даже если они не содержат выражений.

  • bpo-28512: Исправлена установка атрибута смещения SyntaxError с помощью PyErr_SyntaxLocationEx() и PyErr_SyntaxLocationObject().

  • bpo-28918: Исправьте кросс-компиляцию xxlimited, когда Python был собран с определением Py_DEBUG.

  • bpo-23722: Разрешить параметры с именами super() и __classcell__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28797: Изменение класса __dict__ внутри метода __set_name__ дескриптора, который используется внутри этого класса, больше не предотвращает вызов метода __set_name__ других дескрипторов.

  • bpo-28799: Разрешить параметры с именами PyEval_GetCallStats() и sys.callstats() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-12844: Теперь в функцию можно передавать более 255 аргументов.

  • bpo-28782: Разрешить параметры с именами yield from и bpo-26647 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28774: Исправление позиции ошибки юникода в кодеках ASCII и Latin1, когда строка, возвращаемая обработчиком ошибки, содержит несколько некодируемых символов (не-ASCII для кодека ASCII, символы вне диапазона U+0000-U+00FF для Latin1).

  • bpo-28731: Оптимизация _PyDict_NewPresized() для создания dict правильного размера. Улучшение скорости работы литерала dict с постоянными ключами до 30 %.

  • bpo-28532: Показывать версию sys.version, когда опция -V предоставляется дважды.

  • bpo-27100: Предложение with теперь проверяет __enter__ перед проверкой __exit__. Это дает менее путаные сообщения об ошибках, когда оба метода отсутствуют. Исправление Джонатана Эллингтона.

  • bpo-28746: Исправьте метод set_inheritable() файлового дескриптора на платформах, где нет команд ioctl FIOCLEX и FIONCLEX.

  • bpo-26920: Исправление неполучения charset локали при инициализации интерпретатора, на платформах, не имеющих langinfo.

  • bpo-28648: Исправлен сбой в Py_DecodeLocale() в отладочной сборке на Mac OS X при декодировании астральных символов. Исправление от Xiang Zhang.

  • bpo-28665: Повышение скорости работы опкода STORE_DEREF на 40%.

  • bpo-19398: Лишний слэш больше не добавляется к компонентам sys.path в случае пустых компонентов PYTHONPATH во время компиляции.

  • bpo-28621: Ускорено преобразование int в float за счет использования более быстрой реализации подсчета битов. Исправление от Adrian Wielgosik.

  • bpo-28580: Оптимизация итерации значений таблицы разбиения. Исправление от Xiang Zhang.

  • bpo-28583: PyDict_SetDefault не объединял таблицу разбиения, когда это было необходимо. Исправление от Xiang Zhang.

  • bpo-28128: Предупреждение об устаревании недопустимых управляющих последовательностей str и byte теперь выводит более точную информацию о месте возникновения ошибки. Исправление Сергея Сторчака и Эрика Смита.

  • bpo-28509: dict.update() больше не выделяет ненужный большой объем памяти.

  • bpo-28426: Исправлен потенциальный сбой в PyUnicode_AsDecodedObject() в отладочной сборке.

  • bpo-28517: Исправлена ошибка of-by-one в оптимизаторе peephole, которая приводила к сохранению недостижимого кода.

  • bpo-28214: Улучшено сообщение об исключениях для проблемных атрибутов __set_name__.

  • bpo-23782: Исправлена возможная утечка памяти в _PyTraceback_Add() и потеря исключений в PyTraceBack_Here().

  • bpo-28183: Оптимизация и очистка итерации диктовки.

  • bpo-26081: Добавлена реализация asyncio.Future на языке C. Оригинальный патч Юрия Селиванова.

  • bpo-28379: Добавлены проверки на вменяемость и тесты для PyUnicode_CopyCharacters(). Исправление от Xiang Zhang.

  • bpo-28376: Тип итератора дальнего действия теперь регистрируется как Iterator. Исправление от Орена Милмана.

  • bpo-28376: Создание экземпляров range_iterator путем вызова типа range_iterator теперь запрещено. Вызов iter() на экземпляре range - единственный способ. Исправление от Орена Милмана.

  • bpo-26906: Разрешение специальных методов неинициализированного типа теперь вызывает неявную инициализацию типа вместо отказа.

  • bpo-18287: PyType_Ready() теперь проверяет, что tp_name не является NULL. Автор оригинального патча - Никлас Коеп.

  • bpo-24098: Исправлено возможное падение при изменении AST в процессе компиляции.

  • bpo-28201: Дикт уменьшает вероятность возникновения второго конфликта в хэш-таблице, когда хэши имеют одинаковые младшие биты.

  • bpo-28350: Строковые константы с нулевым символом больше не интернируются.

  • bpo-26617: Исправление сбоя при запуске GC во время обратного вызова weakref.

  • bpo-27942: Строковые константы теперь рекурсивно интернализируются в кортежах и фростенсетах.

  • bpo-28289: ImportError.__init__ теперь сбрасывает не указанные атрибуты.

  • bpo-21578: Исправлено вводящее в заблуждение сообщение об ошибке при вызове ImportError с недопустимыми ключевыми словами args.

  • bpo-28203: Исправление неправильного типа в сообщении об ошибке complex(1.0, {2:3}). Исправление от Soumya Sharma.

  • bpo-28086: Одиночный аргумент var-позиции подтипа tuple был передан в функцию, определенную на языке C, невредимым. Теперь он преобразуется в точный кортеж.

  • bpo-28214: Теперь __set_name__ ищется в классе, а не в экземпляре.

  • bpo-27955: Откат при чтении устройства /dev/urandom, когда системный вызов getrandom() терпит неудачу с EPERM, например, при блокировке SECCOMP.

  • bpo-28192: Не импортируйте readline в изолированном режиме.

  • bpo-27441: Удалите некоторые избыточные присваивания ob_size в longobject.c. Спасибо Орену Милману.

  • bpo-27222: Очистите избыточный код в функции long_rshift. Спасибо Орену Милману.

  • Обновите внутренние базы данных юникода до версии 9.0.0.

  • bpo-28131: Исправление регрессии в zipimport’s compile_source(). zipimport должен использовать тот же уровень оптимизации, что и интерпретатор.

  • bpo-28126: Замените Py_MEMCPY на memcpy(). Visual Studio может правильно оптимизировать memcpy().

  • bpo-28120: Исправьте dict.pop() для словаря split при попытке удалить «ожидающий ключ» (еще не вставленный в split-таблицу). Исправление от Xiang Zhang.

  • bpo-26182: Выдавать предупреждение об обесценивании при использовании ключевых слов async и await в качестве имени переменной/атрибута/класса/функции.

  • bpo-26182: Исправьте утечку в коде, вызывающем DeprecationWarning.

  • bpo-28721: Исправьте асинхронные генераторы aclose() и athrow() для правильной обработки распространения StopAsyncIteration.

  • bpo-26110: Ускорение вызовов методов: добавлены опкоды LOAD_METHOD и CALL_METHOD.

Библиотека

  • bpo-31499: xml.etree: Исправление сбоя, когда парсер является частью цикла ссылок.

  • bpo-31482: random.seed() теперь работает с байтами в версии=1

  • bpo-28556: typing.get_type_hints теперь по умолчанию находит нужные глобалы для классов и модулей (если вызывающая сторона не указала globalns).

  • bpo-28556: Улучшение скорости работы модуля typing. Оригинальные PR Ивана Левкивского и Митара.

  • bpo-31544: Модуль C-ускорителя ElementTree игнорировал исключения, возникающие при поиске целевых методов TreeBuilder в XMLParser().

  • bpo-31234: socket.create_connection() теперь вручную исправляет цикл ссылок: очищает переменную, хранящую последнее исключение при успехе.

  • bpo-31457: Объекты LoggerAdapter теперь могут быть вложенными.

  • bpo-31431: SSLContext.check_hostname теперь автоматически устанавливает SSLContext.verify_mode в ssl.CERT_REQUIRED, а не выдает ошибку ValueError.

  • bpo-31233: socketserver.ThreadingMixIn теперь хранит список не демонических потоков, чтобы дождаться завершения всех этих потоков в server_close().

  • bpo-28638: Изменили стратегию реализации collections.namedtuple(), чтобы существенно сократить использование exec() в пользу методов с предварительными вычислениями. В результате параметр verbose и атрибут _source больше не поддерживаются. Преимущества: 1) меньший объем памяти для приложений, использующих множество именованных кортежей, 2) более быстрое создание класса именованных кортежей (примерно в 4-6 раз в зависимости от способа измерения) и 3) незначительное увеличение скорости создания экземпляров с помощью __new__, _make и _replace. (Основной автор патча - Jelle Zijlstra, дальнейшие улучшения внесли INADA Naoki, Serhiy Storchaka и Raymond Hettinger).

  • bpo-31400: Улучшена обработка ошибок SSL, чтобы избежать потери номеров ошибок.

  • bpo-27629: Сделайте настраиваемыми типы возврата SSLContext.wrap_bio() и SSLContext.wrap_socket().

  • bpo-28958: ssl.SSLContext() теперь использует информацию об ошибке OpenSSL, когда контекст не может быть создан.

  • bpo-28182: Модуль SSL теперь поднимает сообщение SSLCertVerificationError, когда OpenSSL не удается проверить сертификат партнера. Исключение содержит дополнительную информацию об ошибке.

  • bpo-27340: SSLSocket.sendall() теперь использует memoryview для создания фрагментов данных. Это исправляет поддержку всех байтоподобных объектов. Это также более эффективно и позволяет избежать дорогостоящих копий.

  • bpo-14191: Новая функция argparse.ArgumentParser.parse_intermixed_args позволяет разбирать командные строки, в которых пользователь смешивает опции и позиционные аргументы.

  • bpo-31178: Исправление ошибки конкатенации строк в редком пути ошибки в модуле подпроцесса

  • bpo-31350: Микрооптимизируйте asyncio._get_running_loop(), чтобы он стал на 10% быстрее.

  • bpo-31170: expat: Обновление libexpat с 2.2.3 до 2.2.4. Исправление копирования частичных символов для ввода UTF-8 (ошибка 115 в libexpat): https://github.com/libexpat/libexpat/issues/115.

  • bpo-29136: Добавьте наборы шифров TLS 1.3 и OP_NO_TLSv1_3.

  • bpo-1198569: Разрешить параметры с именами string.Template и braceidpattern с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31326: concurrent.futures.ProcessPoolExecutor.shutdown() теперь явно закрывает очередь вызовов. Более того, shutdown(wait=True) теперь также присоединяется к потоку очереди вызовов, чтобы предотвратить утечку висящего потока.

  • bpo-27144: Разрешить параметры с именами map() и as_completed() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31281: Разрешить параметры с именами fileinput.FileInput(files, inplace=True) и files с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-10746: Исправление ctypes, выдающего неверные коды типов PEP 3118 для целочисленных типов.

  • bpo-27584: AF_VSOCK был добавлен интерфейс сокетов, обеспечивающий связь между виртуальными машинами и их хостом.

  • bpo-22536: Модуль подпроцесса теперь устанавливает имя файла, когда на POSIX-системах возникает ошибка FileNotFoundError, связанная с тем, что исполняемый файл или cwd не найдены.

  • bpo-29741: Обновите некоторые методы в модуле _pyio, чтобы они также принимали целочисленные типы. Исправление от Орена Милмана.

  • bpo-31249: concurrent.futures: WorkItem.run(), используемый ThreadPoolExecutor, теперь разрывает цикл ссылок между объектом исключения и объектом WorkItem.

  • bpo-31247: xmlrpc.server теперь явно разрывает циклы ссылок при использовании sys.exc_info() в коде, обрабатывающем исключения.

  • bpo-23835: Разрешить параметры с именами ConfigParser() и read_dict() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31238: pydoc: метод stop() частного класса ServerThread теперь ожидает завершения работы DocServer.serve_until_quit(), а затем явно устанавливает атрибут docserver в None, чтобы прервать цикл ссылок.

  • bpo-5001: Многие утверждения в multiprocessing теперь более информативны, а некоторые типы ошибок заменены на более конкретные.

  • bpo-31109: Преобразование zipimport для использования Argument Clinic.

  • bpo-30102: Модули ssl и hashlib теперь вызывают OPENSSL_add_all_algorithms_noconf() на OpenSSL < 1.1.0. Функция определяет особенности процессора и включает оптимизацию на некоторых процессорных архитектурах, таких как POWER8. Патч основан на исследованиях Густаво Серра Скалета.

  • bpo-18966: Недемонические потоки, созданные многопроцессорным процессом, теперь объединяются при выходе из дочернего процесса.

  • bpo-31183: dis теперь работает с асинхронными генераторами и объектами coroutine. Исправление Джорджа Коллинза, основанное на диагностике Лусиано Рамальо.

  • bpo-5001: Разрешить параметры с именами multiprocessing и multiprocessing.managers.convert_to_error с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31185: Исправлены различные ошибки в модуле ускорения asyncio.

  • bpo-31151: socketserver.ForkingMixIn.server_close() теперь ожидает завершения всех дочерних процессов, чтобы предотвратить утечку зомби-процессов.

  • bpo-31072: Разрешить параметры с именами include_file и zipapp.create_archive() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24700: Оптимизировано сравнение массивов с массивами. Теперь сравнение массивов, содержащих значения одного и того же целочисленного типа, выполняется от 10 раз до 70 раз быстрее.

  • bpo-31135: ttk: исправьте метод destroy() классов LabeledScale и OptionMenu. Вызывает родительский метод destroy(), даже если используемый атрибут не существует. Метод LabeledScale.destroy() теперь также явно очищает атрибуты label и scale, чтобы помочь сборщику мусора уничтожить все виджеты.

  • bpo-31107: Исправление copyreg._slotnames() искаженного вычисления атрибутов для классов, чье имя начинается с подчеркивания. Исправление от Shane Harvey.

  • bpo-31080: Разрешите logging.config.fileConfig принимать kwargs и/или args.

  • bpo-30897: Разрешить параметры с именами pathlib.Path и is_mount() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31061: Исправлено падение при использовании asyncio и потоков.

  • bpo-30987: Добавлена поддержка протокола CAN ISO-TP в модуль сокетов.

  • bpo-30522: Разрешить параметры с именами setStream и logging.StreamHandler с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30502: Исправление обработки длинных оидов в ssl. Основано на патче Кристиана Хаймса.

  • bpo-5288: Поддержка объектов tzinfo с субминутными смещениями.

  • bpo-30919: Исправление регрессии производительности общей памяти при многопроцессорной обработке в 3.x. Общая память использовала анонимные отображения памяти в 2.x, в то время как 3.x отображает реальные файлы. Старайтесь делать как можно меньше дисковых операций ввода-вывода.

  • bpo-26732: Исправление слишком большого количества fds в процессах, запущенных методом «forkserver». Дочерний процесс наследовал столько fds, сколько было запущено дочерних процессов.

  • bpo-29403: Исправьте autospec unittest.mock, чтобы он не ошибался при использовании встроенных функций с привязкой к методу. Исправление Аарона Галлахера.

  • bpo-30961: Исправление декрементирования заимствованной ссылки в tracemalloc.

  • bpo-19896: Разрешить параметры с именами 'q' и 'Q' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30946: Удалите устаревший код в модуле readline для платформ, где GNU readline старше 2.1 или где select() недоступен.

  • bpo-25684: Разрешить параметры с именами ttk.OptionMenu и OptionMenu с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30886: Исправьте multiprocessing.Queue.join_thread(): теперь он ожидает завершения потока, даже если поток был запущен тем же процессом, который создал очередь.

  • bpo-29854: Исправление segfault в readline при использовании опции readline’s history-size. Исправление Нира Соффера.

  • bpo-30794: Добавлен метод multiprocessing.Process.kill для завершения работы с помощью сигнала SIGKILL на Unix.

  • bpo-30319: socket.close() теперь игнорирует ошибку ECONNRESET.

  • bpo-30828: Исправьте запредельную запись в asyncio.CFuture.remove_done_callback().

  • bpo-30302: Разрешить параметры с именами repr и datetime.timedelta с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30807: signal.setitimer() может отключить таймер при передаче крошечного значения. Крошечные значения (например, 1e-6) являются допустимыми ненулевыми значениями для setitimer(), которая задана как принимающая интервалы с микросекундным разрешением. Однако на некоторых платформах наша процедура преобразования может превратить 1e-6 в нулевой интервал, тем самым отключив таймер вместо того, чтобы (повторно) запланировать его.

  • bpo-30441: Исправление ошибки при изменении os.environ во время итерации по нему

  • bpo-29585: Разрешить параметры с именами sysconfig и site с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29293: Добавьте недостающий параметр «n» в multiprocessing.Condition.notify(). В документации утверждается, что multiprocessing.Condition ведет себя как threading.Condition, но в его методе notify() отсутствует необязательный аргумент «n» (для указания количества спящих, которых нужно разбудить), который принимает threading.Condition.notify().

  • bpo-30532: Исправление парсера значений заголовков электронной почты, удаляющего пробелы при складывании в некоторых случаях.

  • bpo-30596: Разрешить параметры с именами close() и multiprocessing.Process с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-9146: Исправление ошибки сегментации в _hashopenssl, когда стандартные хэш-функции, такие как md5, недоступны в подключенной библиотеке OpenSSL. Как в некоторых специальных средах сборки FIPS-140.

  • bpo-29169: Обновление zlib до версии 1.2.11.

  • bpo-30119: ftplib.FTP.putline() теперь выбрасывает ошибку ValueError на команды, содержащие CR или LF. Исправление от Donghee Na.

  • bpo-30879: os.listdir() и os.scandir() теперь выдают имена байтов при вызове с аргументом типа bytes.

  • bpo-30746: Разрешить параметры с именами os.putenv() и os.spawn*() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30664: Описание подтеста unittest теперь сохраняет порядок аргументов ключевых слов TestCase.subTest().

  • bpo-21071: Разрешить параметры с именами str и bytes с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29212: Исправьте потоки concurrent.futures.thread.ThreadPoolExecutor, чтобы они по умолчанию имели имя потока, не основанное на repr(), когда не указан префикс thread_name_prefix. Теперь они будут идентифицировать себя как «ThreadPoolExecutor-y_n».

  • bpo-29755: Исправлено семейство функций lgettext() в модуле gettext. Теперь они всегда возвращают байты.

  • bpo-30616: Функциональный API перечисления позволяет создавать пустые перечисления. Исправлено Donghee Na

  • bpo-30038: Исправление состояния гонки между доставкой сигнала и дескриптором файла пробуждения. Исправление от Натаниэля Смита.

  • bpo-23894: Разрешить параметры с именами rb'...' и f'...' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24744: функция pkgutil.walk_packages теперь вызывает ошибку ValueError, если path является строкой. Исправление от Sanyam Khurana.

  • bpo-24484: Избегайте состояния гонки при многопроцессорной очистке.

  • bpo-30589: Исправьте multiprocessing.Process.exitcode, чтобы при использовании метода «forkserver» возвращался номер сигнала, противоположный номеру сигнала, когда процесс убит сигналом (вместо 255).

  • bpo-28994: Больше не отображается обратный след для SystemExit, вызванного в обратном вызове, зарегистрированном atexit.

  • bpo-30508: Не регистрируйте исключения, если был вызван метод Task/Future «cancel()».

  • bpo-30645: Исправьте вычисление пути в imp.load_package(), исправляя его для случаев, когда пакет поставляется только с байткодами. Исправление от Alexandru Ardelean.

  • bpo-11822: Функция dis.dis() теперь может разбирать вложенные объекты кода.

  • bpo-30624: селекторы не учитывают KeyboardInterrupt и SystemExit, оставляя fd в плохом состоянии в случае ошибки. Исправление от Giampaolo Rodola“.

  • bpo-30595: multiprocessing.Queue.get() с таймаутом теперь опрашивает своего читателя в неблокирующем режиме, если ему удалось получить блокировку, но получение заняло больше времени, чем таймаут.

  • bpo-28556: Обновления в модуле типизации: Добавление общего AsyncContextManager, добавление поддержки ContextManager на всех версиях. Авторы оригинальных PR: Jelle Zijlstra и Ivan Levkivskyi

  • bpo-30605: re.compile() больше не выдает предупреждение BytesWarning при компиляции экземпляра bytes с ошибочно вставленным модификатором inline. Исправление Роя Уильямса.

  • bpo-29870: Исправление утечек ssl-сокетов при прерывании соединения в реализации asyncio/ssl. Исправление от Michaël Sghaïer.

  • bpo-29743: Закрытие транспорта во время процесса рукопожатия приводит к утечке открытого сокета. Исправление от Николая Кима

  • bpo-27585: Исправление отмены ожидания в asyncio.Lock. Исправление от Mathieu Sornay.

  • bpo-30014: метод modify() классов poll(), epoll() и devpoll() модуля selectors работает примерно на 10% быстрее. Исправление от Giampaolo Rodola“.

  • bpo-30418: В Windows subprocess.Popen.communicate() теперь также игнорирует EINVAL на stdin.write(), если дочерний процесс все еще запущен, но закрыл трубу.

  • bpo-30463: В abc.ABC добавлены пустые __слоты__. Это позволяет подкластерам запретить создание __dict__ и __weakref__. Исправление Аарона Холла.

  • bpo-30520: Логгеры теперь можно выбирать.

  • bpo-30557: faulthandler теперь правильно фильтрует и отображает коды исключений на Windows

  • bpo-30526: Добавьте TextIOWrapper.reconfigure() и атрибут TextIOWrapper.write_through.

  • bpo-30245: Исправление возможного переполнения при организации сообщения об ошибке struct.pack_into. Исправление от Yuan Liu.

  • bpo-30378: Исправление проблемы, из-за которой logging.handlers.SysLogHandler не может обрабатывать IPv6-адреса.

  • bpo-16500: Разрешить регистрацию обработчиков at-fork.

  • bpo-30470: Отменяем защиту от недействительных вызовов ctypes в Windows. Исправление от Mariatta Wijaya.

  • bpo-30414: multiprocessing.Queue._feed фоновый запущенный поток не прерывается из главного цикла при исключении.

  • bpo-30003: Исправлена работа со сбегающими символами в кодеке HZ. Основано на патче Ма Лина.

  • bpo-30149: inspect.signature() теперь поддерживает callables с параметрами с переменными аргументами, обернутыми partialmethod. Исправление от Donghee Na.

  • bpo-30436: importlib.find_spec() выдает ModuleNotFoundError вместо AttributeError, если указанный родительский модуль не является пакетом (т. е. не имеет атрибута __path__).

  • bpo-30301: Исправление ошибки AttributeError при использовании SimpleQueue.empty() в методах запуска spawn и forkserver.

  • bpo-30375: Предупреждения, выдаваемые при компиляции регулярного выражения, теперь всегда указывают на строку в пользовательском коде. Ранее они могли указывать на внутренности модуля re, если выдавались изнутри групп или условий.

  • bpo-30329: imaplib и poplib теперь отлавливают ошибку WSAEINVAL сокета Windows (код 10022) при выключении(SHUT_RDWR): Была предпринята попытка выполнить недопустимую операцию. Эта ошибка иногда возникает при SSL-соединениях.

  • bpo-29196: Удалены ранее устаревшие в Python 2.4 классы Plist, Dict и _InternalDict в модуле plistlib. Значения Dict в результатах функций readPlist() и readPlistFromBytes() теперь являются обычными dicts. Вы больше не можете использовать атрибутный доступ для доступа к элементам этих словарей.

  • bpo-9850: macpath теперь устарел и будет удален в Python 3.8.

  • bpo-30299: Компиляция регулярных выражений в режиме отладки на CPython теперь отображает скомпилированный байткод в удобочитаемом виде.

  • bpo-30048: Разрешить параметры с именами Task.cancel() и await с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30266: contextlib.AbstractContextManager теперь поддерживает антирегистрацию путем установки __enter__ = None или __exit__ = None, следуя шаблону, представленному в bpo-25958. Исправление от Jelle Zijlstra.

  • bpo-30340: Улучшена оптимизация регулярных выражений. Это увеличило производительность сопоставления некоторых шаблонов до 25 раз.

  • bpo-30298: Разрешить параметры с именами '(?i)(?s)...' и '(?x) (?i) (?s)...' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30285: Оптимизировано сопоставление и поиск регулярных выражений без учета регистра.

  • bpo-29990: Исправление проверки диапазона в декодере GB18030. Оригинальный патч от Ma Lin.

  • bpo-29979: перепишите cgi.parse_multipart, используя класс FieldStorage и делая его результаты согласованными с результатами FieldStorage для запросов multipart/form-data. Исправление Пьера Квентела.

  • bpo-30243: Удалены методы __init__ сканера и кодировщика _json. Их неправильное использование могло привести к утечкам памяти или сбоям. Теперь объекты сканера и кодировщика полностью инициализируются в методах __new__.

  • bpo-30215: Скомпилированные объекты регулярных выражений с флагом re.LOCALE больше не зависят от локали во время компиляции. Только локаль во время сопоставления влияет на результат сопоставления.

  • bpo-30185: Избегайте отслеживания прерываний KeyboardInterrupt в вспомогательном процессе forkserver при получении Ctrl-C.

  • bpo-30103: Разрешить параметры с именами ``“` и `` с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28556: Различные обновления модуля типизации: добавление типа typing.NoReturn, использование WrapperDescriptorType, исправление мелких ошибок. Авторы оригинальных PR - Джим Фасаракис-Хиллиард и Иван Левкивский.

  • bpo-30205: Исправление getsockname() для несвязанных сокетов AF_UNIX в Linux.

  • bpo-30228: Методы seek() и tell() io.FileIO теперь устанавливают внутренний атрибут seekable, чтобы избежать одного вызова системы при open() (в буферизованном или текстовом режиме).

  • bpo-30190: unittest’s assertAlmostEqual и assertNotAlmostEqual предоставляют лучшее сообщение в случае неудачи, которое включает разницу между левым и правым аргументами. (патч от Giampaolo Rodola“)

  • bpo-30101: Добавьте поддержку curses.A_ITALIC.

  • bpo-29822: inspect.isabstract() теперь работает во время __init_subclass__. Исправление от Nate Soares.

  • bpo-29960: Сохранение состояния генератора, когда _random.Random.setstate() вызывает исключение. Исправление от Bryan Olson.

  • bpo-30070: Исправлены утечки и сбои в обработке ошибок в модуле парсера.

  • bpo-22352: Ширина столбцов в выводе dis.dis() теперь корректируется с учетом больших номеров строк и смещений инструкций.

  • bpo-30061: Исправлены сбои в методах IOBase __next__() и readlines(), когда readline() или __next__() соответственно возвращали объект, не имеющий размера. Исправлены возможные другие ошибки, вызванные непроверкой результатов PyObject_Size(), PySequence_Size() или PyMapping_Size().

  • bpo-30218: Исправление поддержки PathLike для shutil.unpack_archive. Исправление от Jelle Zijlstra.

  • bpo-10076: Скомпилированные объекты регулярных выражений и совпадений в модуле re теперь поддерживают copy.copy() и copy.deepcopy() (они считаются атомарными).

  • bpo-30068: _io._IOBase.readlines будет проверять, закрыт ли он первым при наличии подсказки.

  • bpo-29694: Исправлено состояние гонки в pathlib mkdir с флагом parents=True. Исправление от Армина Риго.

  • bpo-29692: Исправлена произвольная развязка исключений RuntimeError в contextlib.contextmanager. Исправление Сиддхарта Веланкара.

  • bpo-26187: Проверка того, что обратный вызов sqlite3 trace не вызывается несколько раз при изменении схемы. Косвенно исправлено переходом на использование sqlite3_prepare_v2() в bpo-9303. Исправление Авива Паливоды.

  • bpo-30017: Разрешалось вызывать метод close() объекта записи zip-файла несколько раз. Теперь при записи в закрытую запись всегда выдается ошибка ValueError.

  • bpo-29998: При пикировке и копировании ImportError теперь сохраняются атрибуты имени и пути.

  • bpo-29995: re.escape() теперь экранирует только специальные символы regex.

  • bpo-29962: Добавлена операция math.remainder, реализующая остаток, как указано в IEEE 754.

  • bpo-29649: Улучшение сообщений об исключениях struct.pack_into() для проблем с размером буфера и смещением. Исправление Эндрю Нестера.

  • bpo-29654: Поддержка HTTP-заголовка If-Modified-Since (кэш браузера). Исправление от Пьера Квентела.

  • bpo-29931: Исправлена проверка сравнения для объектов ipaddress.ip_interface. Исправление от Sanjay Sundaresan.

  • bpo-29953: Исправлена утечка памяти в методе replace() для объектов datetime и time при передаче аргумента bound fold.

  • bpo-29942: Исправление сбоя в itertools.chain.from_iterable при столкновении с длинными прогонами пустых итераций.

  • bpo-10030: Ускорение чтения зашифрованных ZIP-файлов в 2 раза.

  • bpo-29204: Element.getiterator() и параметр html в XMLParser() были устаревшими только в документации (начиная с Python 3.2 и 3.4 соответственно). Теперь при их использовании выдается предупреждение об устаревании.

  • bpo-27863: Исправлены многочисленные сбои в ElementTree, вызванные условиями гонки и неправильными типами.

  • bpo-25996: Добавлена поддержка файловых дескрипторов в os.scandir() на Unix. os.fwalk() ускоряется в 2 раза за счет использования os.scandir().

  • bpo-28699: Исправлена ошибка в пулах в файле multiprocessing.pool, в результате которой при возникновении исключения в самом начале итерабельной таблицы исключение могло быть проглочено или привести к зависанию программы. Исправление подготовили Дэвин Поттс и Сян Чжан.

  • bpo-23890: unittest.TestCase.assertRaises() теперь вручную разрывает цикл ссылок, чтобы не держать объекты живыми дольше, чем ожидается.

  • bpo-29901: Модуль zipapp теперь поддерживает общие объекты типа path, а не только pathlib.Path.

  • bpo-25803: Избегайте некорректных ошибок, выдаваемых Path.mkdir(exist_ok=True), когда ОС отдает приоритет ошибкам типа EACCES перед EEXIST.

  • bpo-29861: Освободите ссылки на задачи, их аргументы и результаты, как только они завершатся в multiprocessing.Pool.

  • bpo-19930: Аргумент mode в os.makedirs() больше не влияет на биты разрешения файлов вновь созданных каталогов промежуточного уровня.

  • bpo-29884: faulthandler: Восстановление старого sigaltstack во время сноса. Исправление Кристофа Зейтуни.

  • bpo-25455: Исправлены сбои при repr рекурсивных буферизованных файлоподобных объектов.

  • bpo-29800: Исправление сбоев в partial.__repr__, если ключи partial.keywords не являются строками. Исправление от Michael Seifert.

  • bpo-8256: Исправлена возможность сбоя или падения input(), если атрибуты «encoding» или «errors» в sys.stdin или sys.stdout не установлены или не являются строками.

  • bpo-28692: Использование нецелого значения для выбора формы множественного числа в gettext теперь устарело.

  • bpo-26121: Используйте реализацию библиотеки C для математических функций erf() и erfc().

  • bpo-29619: os.stat() и os.DirEntry.inode() теперь преобразуют inode (st_ino) с помощью целых чисел без знака.

  • bpo-28298: Исправлена ошибка, из-за которой массивы „Q“, „L“ и „I“ не могли принимать в качестве элементов большие intables (объекты, имеющие __int__).

  • bpo-29645: Ускорен импорт модуля webbrowser. webbrowser.register() теперь потокобезопасен.

  • bpo-28231: Модуль zipfile теперь принимает path-подобные объекты для внешних путей.

  • bpo-26915: методы index() и count() в collections.abc.Sequence теперь проверяют идентичность перед проверкой равенства при выполнении сравнений.

  • bpo-28682: Добавлена поддержка байтовых путей в os.fwalk().

  • bpo-29728: Добавьте новую константу socket.TCP_NOTSENT_LOWAT (Linux 3.12). Исправление Натаниэля Дж. Смита.

  • bpo-29623: Разрешить использование path-like объекта в качестве единственного аргумента в ConfigParser.read(). Исправление Дэвида Эллиса.

  • bpo-9303: Перенос модуля sqlite3 на API _v2. Исправление от Авива Паливоды.

  • bpo-28963: Исправление выходящей за границы итерации в asyncio.Future.remove_done_callback, реализованном на C.

  • bpo-29704: asyncio.subprocess.SubprocessStreamProtocol больше не закрывается до закрытия всех труб.

  • bpo-29271: Исправьте Task.current_task и Task.all_tasks, реализованные на C, чтобы они принимали аргумент None, как их чистая реализация на Python.

  • bpo-29703: Исправьте asyncio для поддержки инстанцирования новых циклов событий в дочерних процессах.

  • bpo-29615: SimpleXMLRPCDispatcher больше не цепляет KeyError (или любое другое исключение) к исключению(ям), поднятому(ым) в диспетчеризируемых методах. Исправление от Петра Мотейлека.

  • bpo-7769: Метод register_function() из xmlrpc.server.SimpleXMLRPCDispatcher и его подклассов теперь можно использовать в качестве декоратора.

  • bpo-29376: Исправьте ошибку утверждения в threading._DummyThread.is_alive().

  • bpo-28624: Добавьте тест, проверяющий, что параметр cwd функции Popen() принимает объекты PathLike. Исправление от Sayan Chowdhury.

  • bpo-28518: Неявное начало транзакции перед оператором DML. Исправление Авива Паливоды.

  • bpo-29742: get_extra_info() вызывает исключение, если вызывается на закрытом ssl-транспорте. Исправление от Николая Кима.

  • bpo-16285: urllib.parse.quote теперь основан на RFC 3986 и, следовательно, включает „~“ в набор символов, которые по умолчанию не берутся в кавычки. Исправление от Christian Theune и Ratnadeep Debnath.

  • bpo-29532: Изменение словаря kwarg, переданного в functools.partial(), больше не влияет на частичный объект после его создания.

  • bpo-29110: Исправление утечки объекта файла в aifc.open(), когда файл указан как путь к файловой системе и не является допустимым форматом AIFF. Исправление Энтони Чжана.

  • bpo-22807: Добавьте uuid.SafeUUID и uuid.UUID.is_safe для передачи информации от платформы о том, сгенерированы ли UUID безопасным для многопроцессорной обработки методом.

  • bpo-29576: Улучшены некоторые устаревшие методы в importlib. Некоторые устаревшие методы теперь выдают DeprecationWarnings и имеют лучшие описательные сообщения.

  • bpo-29534: Исправлено различное поведение Decimal.from_float() для _decimal и _pydecimal. Спасибо Эндрю Нестеру.

  • bpo-10379: locale.format_string теперь поддерживает ключевой аргумент „monetary“, а locale.format устарел.

  • bpo-29851: importlib.reload() теперь выдает ошибку ModuleNotFoundError, если у модуля нет спецификации.

  • bpo-28556: Различные обновления модуля типизации: typing.Counter, typing.ChainMap, улучшено кэширование ABC и т.д. Авторы оригинальных PR: Jelle Zijlstra, Ivan Levkivskyi, Manuel Krebber и Łukasz Langa.

  • bpo-29100: Исправьте регрессию datetime.fromtimestamp(), появившуюся в Python 3.6.0: проверьте минимальный и максимальный годы.

  • bpo-29416: Предотвращение бесконечного цикла в pathlib.Path.mkdir

  • bpo-29444: Исправлено обращение к буферу за пределами границ в методе group() объекта match. Основано на исправлении от WGH.

  • bpo-29377: Добавляет встроенные типы WrapperDescriptorType, MethodWrapperType и MethodDescriptorType в модуль types. Оригинальный патч Мануэля Креббера.

  • bpo-29218: Неиспользуемая команда install_misc теперь удалена. Она была задокументирована как неиспользуемая с 2000 года. Исправление Эрика Н. Вандер Вила.

  • bpo-29368: Метод extend() теперь вызывается вместо метода append() при распикировке collections.deque и других спископодобных объектов. Это позволяет ускорить распикировку в 2 раза.

  • bpo-29338: В справке встроенного или расширенного класса теперь указывается подпись конструктора, если для класса задана __text_signature__.

  • bpo-29335: Исправьте subprocess.Popen.wait(), когда дочерний процесс вышел не в завершенное, а в остановленное состояние (например, при наличии ptrace).

  • bpo-29290: Исправление регрессии в argparse, из-за которой сообщения справки обрывались на неразрывных пробелах.

  • bpo-28735: Исправлено сравнение mock.MagickMock с mock.ANY.

  • bpo-29197: Удалена устаревшая функция ntpath.splitunc().

  • bpo-29210: Убрана поддержка устаревшего аргумента «exclude» в tarfile.TarFile.add().

  • bpo-29219: Исправлена бесконечная рекурсия при повторном использовании неинициализированных экземпляров ctypes.CDLL.

  • bpo-29192: Удалены устаревшие функции в модуле http.cookies.

  • bpo-29193: Аргумент строки формата для string.Formatter.format() теперь только позиционный.

  • bpo-29195: Убрана поддержка устаревших недокументированных аргументов ключевых слов в методах объектов регулярных выражений.

  • bpo-28969: Исправлено состояние гонки в реализации functools.lru_cache на C. KeyError могла быть вызвана, когда кэшированная функция с полным кэшем одновременно вызывалась из разных потоков с одинаковыми некэшированными аргументами.

  • bpo-20804: Атрибуты unittest.mock.sentinel теперь сохраняют свою идентичность при копировании или мариновании.

  • bpo-29142: В urllib.request суффиксы в переменной окружения no_proxy с ведущими точками могли повторно соответствовать связанным именам хостов (например, .b.c соответствует a.b.c). Исправление Милана Оберкирха.

  • bpo-28961: Исправление помощника unittest.mock._Call: больше не игнорирует параметр name. Автор патча - Jiajun Huang.

  • bpo-15812: inspect.getframeinfo() теперь корректно показывает первую строку контекста. Исправление Сэма Бриза.

  • bpo-28985: Обновление констант авторизатора в модуле sqlite3. Исправление от Dingyuan Wang.

  • bpo-29079: Предотвращение бесконечного цикла в pathlib.resolve() на Windows

  • bpo-13051: Исправлены ошибки рекурсии в больших или измененных по размеру curses.textpad.Textbox. Основано на патче Тихо Андерсена.

  • bpo-9770: предикаты curses.ascii теперь корректно работают с отрицательными целыми числами.

  • bpo-28427: старые ключи не должны удалять новые значения из WeakValueDictionary при сборе из другого потока.

  • bpo-28923: Удалите артефакты редактора из Tix.py.

  • bpo-28871: Исправлен сбой при деаллокации глубокого дерева ElementTree.

  • bpo-19542: Исправление ошибок в WeakValueDictionary.setdefault() и WeakValueDictionary.pop(), когда сбор GC происходит в другом потоке.

  • bpo-20191: Исправлен сбой в resource.prlimit() при передаче в качестве ограничений последовательности, не имеющей собственных элементов.

  • bpo-16255: subprocess.Popen использует /system/bin/sh на Android в качестве оболочки, а не /bin/sh.

  • bpo-28779: multiprocessing.set_forkserver_preload() приведет к аварийному завершению процесса forkserver, если предварительно загруженный модуль инстанцирует некоторые объекты мультипроцессинга, такие как блокировки.

  • bpo-26937: Метод chown() класса tarfile.TarFile теперь не дает сбоев, когда модуль grp не может быть импортирован, как, например, на платформах Android.

  • bpo-28847: dbm.dumb теперь поддерживает чтение файлов только для чтения и больше не записывает индексный файл, если он не изменен. Теперь выдается предупреждение об устаревании, если индексный файл пропущен и создан заново в режимах „r“ и „w“ (в будущих релизах Python это будет ошибкой).

  • bpo-27030: Неизвестные эскейпы, состоящие из '\' и буквы ASCII, в регулярных выражениях шаблонов замены re.sub() теперь являются ошибками.

  • bpo-28835: Исправление регрессии в warnings.catch_warnings(): вызов warnings.showwarning(), если он был переопределен внутри менеджера контекста.

  • bpo-27172: Чтобы помочь при обновлении с версии 2.7, ранее задокументированная депривация inspect.getfullargspec() была отменена. Это решение может быть пересмотрено после того, как ветка Python 2.7 перестанет официально поддерживаться.

  • bpo-28740: Добавьте sys.getandroidapilevel(): возвращает версию API Android на момент сборки в виде целого числа. Функция доступна только для Android.

  • bpo-26273: Разрешить параметры с именами socket.TCP_CONGESTION и socket.TCP_USER_TIMEOUT с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28752: Восстановлены методы __reduce__() для объектов datetime.

  • bpo-28727: Шаблоны регулярных выражений, объекты _sre.SRE_Pattern, создаваемые re.compile(), становятся сопоставимыми (только операторы x==y и x!=y). Это изменение должно исправить bpo-18383: не дублировать фильтры предупреждений при перезагрузке модуля warnings (обычно это делается только в модульных тестах).

  • bpo-20572: Удалите параметр subprocess.Popen.wait endtime. Он был устаревшим в версии 3.4 и недокументированным до этого.

  • bpo-25659: В ctypes предотвратите падение при вызове методов from_buffer() и from_buffer_copy() для абстрактных классов типа Array.

  • bpo-28548: В модуле «http.server» по возможности анализируйте версию протокола, чтобы избежать использования HTTP 0.9 в некоторых ответах на ошибки.

  • bpo-19717: Заставляет Path.resolve() успешно работать с несуществующими путями. Исправление от Вайраски Кока

  • bpo-28563: Исправлена возможность DoS и выполнения произвольного кода при обработке множественного выбора формы в модуле gettext. Парсер выражений теперь поддерживает точный синтаксис, поддерживаемый GNU gettext.

  • bpo-28387: Исправлено возможное падение деаллокатора _io.TextIOWrapper, когда сборщик мусора вызывался в другом потоке. Основано на исправлении Себастьяна Куфре.

  • bpo-27517: Компрессор и декомпрессор LZMA больше не вызывают исключения, если им дважды передаются пустые данные. Исправление от Бенджамина Фогла.

  • bpo-28549: Исправлена ошибка segfault в addch() в curses с ncurses6.

  • bpo-28449: tarfile.open() с режимом «r» или «r:» теперь пытается открыть tar-файл со сжатием, прежде чем пытаться открыть его без сжатия. В противном случае с вероятностью 50% он терпел неудачу при ignore_zeros=True.

  • bpo-23262: Модуль webbrowser теперь поддерживает Firefox 36+ и производные браузеры. Основано на патче Олега Бройтмана.

  • bpo-24241: Веб-браузер в среде X теперь предпочитает использовать браузер по умолчанию напрямую. Кроме того, функция webbrowser register() теперь имеет документированный аргумент „preferred“, чтобы указать браузеры, которые будут возвращаться функцией get() без аргументов. Исправление Дэвида Стила

  • bpo-27939: Исправлены ошибки в tkinter.ttk.LabeledScale и tkinter.Scale, вызванные внутренним представлением шкалы как float-значения в Tk. tkinter.IntVar теперь работает, если float-значение установлено в базовую переменную Tk.

  • bpo-28255: calendar.TextCalendar.prweek() больше не печатает пробел после календаря недели. calendar.TextCalendar.pryear() больше не печатает лишнюю новую строку после календаря года. Основано на исправлении от Xiang Zhang.

  • bpo-28255: calendar.TextCalendar.prmonth() no longer prints a space at the start of new line after printing a month’s calendar. Patch by Xiang Zhang.

  • bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces. Based on patch by Kaarle Ritvanen.

  • bpo-28353: os.fwalk() no longer fails on broken links.

  • bpo-28430: Fix iterator of C implemented asyncio.Future doesn’t accept non-None value is passed to it.send(val).

  • bpo-27025: Generated names for Tkinter widgets now start by the «!» prefix for readability.

  • bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a workaround to Tix library bug.

  • bpo-28488: shutil.make_archive() no longer adds entry «./» to ZIP archive.

  • bpo-25953: re.sub() now raises an error for invalid numerical group reference in replacement template even if the pattern is not found in the string. Error message for invalid group reference now includes the group index and the position of the reference. Based on patch by SilentGhost.

  • bpo-28469: timeit now uses the sequence 1, 2, 5, 10, 20, 50,… instead of 1, 10, 100,… for autoranging.

  • bpo-28115: Command-line interface of the zipfile module now uses argparse. Added support of long options.

  • bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by Mariatta Wijaya.

  • bpo-28448: Fix C implemented asyncio.Future didn’t work on Windows.

  • bpo-23214: In the «io» module, the argument to BufferedReader and BytesIO’s read1() methods is now optional and can be -1, matching the BufferedIOBase specification.

  • bpo-28480: Fix error building socket module when multithreading is disabled.

  • bpo-28240: Разрешить параметры с именами -c/--clock и -t/--time с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28240: timeit now repeats the benchmarks 5 times instead of only 3 to make benchmarks more reliable.

  • bpo-28240: timeit autorange now uses a single loop iteration if the benchmark takes less than 10 seconds, instead of 10 iterations. «python3 -m timeit -s „import time“ „time.sleep(1)“» now takes 4 seconds instead of 40 seconds.

  • Distutils.sdist now looks for README and setup.py files with case sensitivity. This behavior matches that found in Setuptools 6.0 and later. See setuptools 100 for rationale.

  • bpo-24452: Make webbrowser support Chrome on Mac OS X. Patch by Ned Batchelder.

  • bpo-20766: Fix references leaked by pdb in the handling of SIGINT handlers.

  • bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by Eryk Sun.

  • bpo-28317: The disassembler now decodes FORMAT_VALUE argument.

  • bpo-28380: unittest.mock Mock autospec functions now properly support assert_called, assert_not_called, and assert_called_once.

  • bpo-28229: lzma module now supports pathlib.

  • bpo-28321: Fixed writing non-BMP characters with binary format in plistlib.

  • bpo-28225: bz2 module now supports pathlib. Initial patch by Ethan Furman.

  • bpo-28227: gzip now supports pathlib. Patch by Ethan Furman.

  • bpo-28332: Deprecated silent truncations in socket.htons and socket.ntohs. Original patch by Oren Milman.

  • bpo-27358: Optimized merging var-keyword arguments and improved error message when passing a non-mapping as a var-keyword argument.

  • bpo-28257: Improved error message when passing a non-iterable as a var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL.

  • bpo-28322: Fixed possible crashes when unpickle itertools objects from incorrect pickle data. Based on patch by John Leitch.

  • bpo-28228: imghdr now supports pathlib.

  • bpo-28226: compileall now supports pathlib.

  • bpo-28314: Fix function declaration (C flags) for the getiterator() method of xml.etree.ElementTree.Element.

  • bpo-28148: Stop using localtime() and gmtime() in the time module. Introduced platform independent _PyTime_localtime API that is similar to POSIX localtime_r, but available on all platforms. Patch by Ed Schouten.

  • bpo-28253: Fixed calendar functions for extreme months: 0001-01 and 9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so that they don’t call itermonthdates() which can cause datetime.date under/overflow.

  • bpo-28275: Fixed possible use after free in the decompress() methods of the LZMADecompressor and BZ2Decompressor classes. Original patch by John Leitch.

  • bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation() if pass invalid string-like object as a name. Patch by Xiang Zhang.

  • bpo-18844: random.choices() now has k as a keyword-only argument to improve the readability of common cases and come into line with the signature used in other languages.

  • bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py. Patch by Madison May.

  • bpo-27611: Fixed support of default root window in the tkinter.tix module. Added the master parameter in the DisplayStyle constructor.

  • bpo-27348: In the traceback module, restore the formatting of exception messages like «Exception: None». This fixes a regression introduced in 3.5a2.

  • bpo-25651: Allow false values to be used for msg parameter of subTest().

  • bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is interrupted by a signal and a signal handler raises a Python exception.

  • bpo-28200: Fix memory leak on Windows in the os module (fix path_converter() function).

  • bpo-25400: RobotFileParser now correctly returns default values for crawl_delay and request_rate. Initial patch by Peter Wirtz.

  • bpo-27932: Prevent memory leak in win32_ver().

  • Fix UnboundLocalError in socket._sendfile_use_sendfile.

  • bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of os.stat(). Patch by Eryk Sun.

  • bpo-22493: Warning message emitted by using inline flags in the middle of regular expression now contains a (truncated) regex pattern. Patch by Tim Graham.

  • bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an empty bytestring is passed.

  • bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.

  • bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by Gergely Imreh and Markus Holtermann.

  • bpo-28114: Fix a crash in parse_envlist() when env contains byte strings. Patch by Eryk Sun.

  • bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and binascii.a2b_qp().

  • bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by Kevin Conway.

  • bpo-28174: Handle when SO_REUSEPORT isn’t properly supported. Patch by Seth Michael Larson.

  • bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by iceboy.

  • bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.

  • bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.

  • bpo-27759: Fix selectors incorrectly retain invalid file descriptors. Patch by Mark Williams.

  • bpo-28325: Remove vestigial MacOS 9 macurl2path module and its tests.

  • bpo-28368: Refuse monitoring processes if the child watcher has no loop attached. Patch by Vincent Michel.

  • bpo-28369: Raise RuntimeError when transport’s FD is used with add_reader, add_writer, etc.

  • bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг Марк.

  • bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.

  • bpo-28372: Fix asyncio to support formatting of non-python coroutines.

  • bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг Марк.

  • bpo-27972: Prohibit Tasks to await on themselves.

  • bpo-24142: Reading a corrupt config file left configparser in an invalid state. Original patch by Florian Höch.

  • bpo-29581: ABCMeta.__new__ now accepts **kwargs, allowing abstract base classes to use keyword parameters in __init_subclass__. Patch by Nate Soares.

  • bpo-25532: inspect.unwrap() will now only try to unwrap an object sys.getrecursionlimit() times, to protect against objects which create a new object on every attribute access.

  • bpo-30177: path.resolve(strict=False) no longer cuts the path after the first element not present in the filesystem. Patch by Antoine Pietri.

Документация

  • bpo-31294: Fix incomplete code snippet in the ZeroMQSocketListener and ZeroMQSocketHandler examples and adapt them to Python 3.

  • bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL documentation.

  • bpo-31128: Allow the pydoc server to bind to arbitrary hostnames.

  • bpo-30803: Clarify doc on truth value testing. Original patch by Peter Thomassen.

  • bpo-30176: Add missing attribute related constants in curses documentation.

  • bpo-30052: Разрешить параметры с именами bytes() и bytearray() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26985: Add missing info of code object in inspect documentation.

  • bpo-19824: Разрешить параметры с именами bpo-20314 и bpo-12518 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28929: Link the documentation to its source file on GitHub.

  • bpo-25008: Document smtpd.py as effectively deprecated and add a pointer to aiosmtpd, a third-party asyncio-based replacement.

  • bpo-26355: Add canonical header link on each page to corresponding major version of the documentation. Patch by Matthias Bussonnier.

  • bpo-29349: Fix Python 2 syntax in code for building the documentation.

  • bpo-23722: Разрешить параметры с именами __classcell__ и PEP 487 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28513: Documented command-line interface of zipfile.

Тесты

  • bpo-29639: test.support.HOST is now «localhost», a new HOSTv4 constant has been added for your 127.0.0.1 needs, similar to the existing HOSTv6 constant.

  • bpo-31320: Silence traceback in test_ssl

  • bpo-31346: Prefer PROTOCOL_TLS_CLIENT and PROTOCOL_TLS_SERVER protocols for SSLContext.

  • bpo-25674: Remove sha256.tbs-internet.com ssl test

  • bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest version behaves like OpenSSL 1.0.2 and no longer aborts handshake.

  • bpo-30822: regrtest: Exclude tzdata from regrtest –all. When running the test suite using –use=all / -u all, exclude tzdata since it makes test_datetime too slow (15-20 min on some buildbots) which then times out on some buildbots. Fix also regrtest command line parser to allow passing -u extralargefile to run test_zipfile64.

  • bpo-30695: Разрешить параметры с именами set_nomemory(start, stop) и remove_mem_hooks() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30357: test_thread: setUp() now uses support.threading_setup() and support.threading_cleanup() to wait until threads complete to avoid random side effects on following tests. Initial patch written by Grzegorz Grzywacz.

  • bpo-30197: Enhanced functions swap_attr() and swap_item() in the test.support module. They now work when delete replaced attribute or item inside the with statement. The old value of the attribute or item (or None if it doesn’t exist) now will be assigned to the target of the «as» clause, if there is one.

  • bpo-24932: Use proper command line parsing in _testembed

  • bpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line arguments.

  • bpo-28683: Fix the tests that bind() a unix socket and raise PermissionError on Android for a non-root user.

  • bpo-26936: Fix the test_socket failures on Android - getservbyname(), getservbyport() and getaddrinfo() are broken on some Android API levels.

  • bpo-28666: Now test.support.rmtree is able to remove unwritable or unreadable directories.

  • bpo-23839: Various caches now are cleared before running every test file.

  • bpo-26944: Fix test_posix for Android where „id -G“ is entirely wrong or missing the effective gid.

  • bpo-28409: regrtest: fix the parser of command line arguments.

  • bpo-28217: Adds _testconsole module to test console input.

  • bpo-26939: Add the support.setswitchinterval() function to fix test_functools hanging on the Android armv7 qemu emulator.

Построить

  • bpo-31354: Разрешить параметры с именами --with-lto и make profile-opt с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31370: Remove support for building –without-threads. This option is not really useful anymore in the 21st century. Removing lots of conditional paths allows us to simplify the code base, including in difficult to maintain low-level internal code.

  • bpo-31341: Per PEP 11, support for the IRIX operating system was removed.

  • bpo-30854: Fix compile error when compiling –without-threads. Patch by Masayuki Yamamoto.

  • bpo-30687: Locate msbuild.exe on Windows when building rather than vcvarsall.bat

  • bpo-20210: Support the disabled marker in Setup files. Extension modules listed after this marker are not built at all, neither by the Makefile nor by setup.py.

  • bpo-29941: Разрешить параметры с именами --with-assertions и assert() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28787: Fix out-of-tree builds of Python when configured with --with--dtrace.

  • bpo-29243: Разрешить параметры с именами make test и make install с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23404: Разрешить параметры с именами make touch и make regen-all с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29643: Fix --enable-optimization didn’t work.

  • bpo-27593: sys.version and the platform module python_build(), python_branch(), and python_revision() functions now use git information rather than hg when building from a repo.

  • bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k.

  • bpo-27659: Prohibit implicit C function declarations: use -Werror=implicit-function-declaration when possible (GCC and Clang, but it depends on the compiler version). Patch written by Chi Hsuan Yen.

  • bpo-29384: Remove old Be OS helper scripts.

  • bpo-26851: Set Android compilation and link flags.

  • bpo-28768: Fix implicit declaration of function _setmode. Patch by Masayuki Yamamoto

  • bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat

  • bpo-23903: Added missed names to PC/python3.def.

  • bpo-28762: lockf() is available on Android API level 24, but the F_LOCK macro is not defined in android-ndk-r13.

  • bpo-28538: Fix the compilation error that occurs because if_nameindex() is available on Android API level 24, but the if_nameindex structure is not defined.

  • bpo-20211: Do not add the directory for installing C header files and the directory for installing object code libraries to the cross compilation search paths. Original patch by Thomas Petazzoni.

  • bpo-28849: Do not define sys.implementation._multiarch on Android.

  • bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and Michael Haubenwallner.

  • bpo-26359: Rename –with-optimiations to –enable-optimizations.

  • bpo-28444: Fix missing extensions modules when cross compiling.

  • bpo-28208: Update Windows build and OS X installers to use SQLite 3.14.2.

  • bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.

  • bpo-21124: Разрешить параметры с именами NULL и &PyType_Type с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-13756: Fix building extensions modules on Cygwin. Patch by Roumen Petrov, based on original patch by Jason Tishler.

  • bpo-21085: Add configure check for siginfo_t.si_band, which Cygwin does not provide. Patch by Masayuki Yamamoto with review and rebase by Erik Bray.

  • bpo-28258: Fixed build with Estonian locale (python-config and distclean targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis.

  • bpo-26661: setup.py now detects system libffi with multiarch wrapper.

  • bpo-27979: A full copy of libffi is no longer bundled for use when building _ctypes on non-OSX UNIX platforms. An installed copy of libffi is now required when building _ctypes on such platforms.

  • bpo-15819: Remove redundant include search directory option for building outside the source tree.

  • bpo-28676: Prevent missing „getentropy“ declaration warning on macOS. Patch by Gareth Rees.

Windows

  • bpo-31392: Update Windows build to use OpenSSL 1.1.0f

  • bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows.

  • bpo-31358: zlib is no longer bundled in the CPython source, instead it is downloaded on demand just like bz2, lzma, OpenSSL, Tcl/Tk, and SQLite.

  • bpo-31340: Change to building with MSVC v141 (included with Visual Studio 2017)

  • bpo-30581: os.cpu_count() now returns the correct number of processors on Windows when the number of logical processors is greater than 64.

  • bpo-30916: Pre-build OpenSSL, Tcl and Tk and include the binaries in the build.

  • bpo-30731: Add a missing xmlns to python.manifest so that it matches the schema.

  • bpo-30291: Allow requiring 64-bit interpreters from py.exe using -64 suffix. Contributed by Steve (Gadget) Barnes.

  • bpo-30362: Adds list options (-0, -0p) to py.exe launcher. Contributed by Steve Barnes.

  • bpo-23451: Fix socket deprecation warnings in socketmodule.c. Patch by Segev Finer.

  • bpo-30450: The build process on Windows no longer depends on Subversion, instead pulling external code from GitHub via a Python script. If Python 3.6 is not found on the system (via py -3.6), NuGet is used to download a copy of 32-bit Python.

  • bpo-29579: Removes readme.txt from the installer.

  • bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun)

  • bpo-28896: Deprecate WindowsRegistryFinder and disable it by default

  • bpo-28522: Fixes mishandled buffer reallocation in getpathp.c

  • bpo-28402: Adds signed catalog files for stdlib on Windows.

  • bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk Sun)

  • bpo-28251: Improvements to help manuals on Windows.

  • bpo-28110: launcher.msi has different product codes between 32-bit and 64-bit

  • bpo-28161: Opening CON for write access fails

  • bpo-28162: WindowsConsoleIO readall() fails if first line starts with Ctrl+Z

  • bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle

  • bpo-28164: _PyIO_get_console_type fails for various paths

  • bpo-28137: Renames Windows path file to ._pth

  • bpo-28138: Windows ._pth file should allow import site

IDLE

  • bpo-31493: IDLE code context – fix code update and font update timers. Canceling timers prevents a warning message when test_idle completes.

  • bpo-31488: IDLE - Update non-key options in former extension classes. When applying configdialog changes, call .reload for each feature class. Change ParenMatch so updated options affect existing instances attached to existing editor windows.

  • bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace strips more than blank spaces. Multiline string literals are not skipped.

  • bpo-31480: IDLE - make tests pass with zzdummy extension disabled by default.

  • bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk update in the background in order to make live interaction and experimentation with tkinter applications much easier.

  • bpo-31414: IDLE – fix tk entry box tests by deleting first. Adding to an int entry is not the same as deleting and inserting because int(„“) will fail.

  • bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and Help sections.

  • bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor. Move some data and functions from the class to module level. Patch by Cheryl Sabella.

  • bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog.

  • bpo-27099: Convert IDLE’s built-in „extensions“ to regular features. About 10 IDLE features were implemented as supposedly optional extensions. Their different behavior could be confusing or worse for users and not good for maintenance. Hence the conversion. The main difference for users is that user configurable key bindings for builtin features are now handled uniformly. Now, editing a binding in a keyset only affects its value in the keyset. All bindings are defined together in the system-specific default keysets in config-extensions.def. All custom keysets are saved as a whole in config-extension.cfg. All take effect as soon as one clicks Apply or Ok. The affected events are „<<force-open-completions>>“, „<<expand-word>>“, „<<force-open-calltip>>“, „<<flash-paren>>“, „<<format-paragraph>>“, „<<run-module>>“, „<<check-module>>“, and „<<zoom-height>>“. Any (global) customizations made before 3.6.3 will not affect their keyset-specific customization after 3.6.3. and vice versa. Initial patch by Charles Wohlganger.

  • bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by Cheryl Sabella.

  • bpo-31001: Add tests for configdialog highlight tab. Patch by Cheryl Sabella.

  • bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog. The slightly modified tests continue to pass. Patch by Cheryl Sabella.

  • bpo-31130: IDLE – stop leaks in test_configdialog. Initial patch by Victor Stinner.

  • bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella.

  • bpo-19903: Разрешить параметры с именами inspect.signature и inspect.getfullargspec с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31083: IDLE - Add an outline of a TabPage class in configdialog. Update existing classes to match outline. Initial patch by Cheryl Sabella.

  • bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly modified tests continue to pass. Patch by Cheryl Sabella.

  • bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog. Slightly modified tests continue to pass. Fix General tests. Patch mostly by Cheryl Sabella.

  • bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan Reedy and Cheryl Sabella.

  • bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping methods pertaining to each tab and the buttons will aid writing tests and improving the tabs and will enable splitting the groups into classes.

  • bpo-30853: IDLE – Factor a VarTrace class out of ConfigDialog. Instance tracers manages pairs consisting of a tk variable and a callback function. When tracing is turned on, setting the variable calls the function. Test coverage for the new class is 100%.

  • bpo-31003: IDLE: Add more tests for General tab.

  • bpo-30993: IDLE - Improve configdialog font page and tests. In configdialog: Document causal pathways in create_font_tab docstring. Simplify some attribute names. Move set_samples calls to var_changed_font (idea from Cheryl Sabella). Move related functions to positions after the create widgets function. In test_configdialog: Fix test_font_set so not order dependent. Fix renamed test_indent_scale so it tests the widget. Adjust tests for movement of set_samples call. Add tests for load functions. Put all font tests in one class and tab indent tests in another. Except for two lines, these tests completely cover the related functions.

  • bpo-30981: IDLE – Add more configdialog font page tests.

  • bpo-28523: IDLE: replace „colour“ with „color“ in configdialog.

  • bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from 46% to 96%. Patch by Louie Lu.

  • bpo-30934: Document coverage details for idlelib tests. Add section to idlelib/idle-test/README.txt. Include check that branches are taken both ways. Exclude IDLE-specific code that does not run during unit tests.

  • bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in docstrings This will facilitate improving the dialog and splitting up the class. Original patch by Cheryl Sabella.

  • bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by Louie Lu.

  • bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella.

  • bpo-30851: IDLE: Remove unused variables in configdialog. One is a duplicate, one is set but cannot be altered by users. Patch by Cheryl Sabella.

  • bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as well as mouse. Initial patch by Louie Lu.

  • bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once.

  • bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in config; test. * In config, put dump test code in a function; run it and unittest in „if __name__ == „__main__“. * Add class config.ConfigChanges based on changes_class_v4.py on bpo issue. * Add class test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise configdialog to use ConfigChanges; see tracker msg297804. * Revise test_configdialog to match configdialog changes. * Remove configdialog functions unused or moved to ConfigChanges. Cheryl Sabella contributed parts of the patch.

  • bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by Cheryl Sabella.

  • bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more tests. Patch by Cheryl Sabella.

  • bpo-30723: IDLE: Make several improvements to parenmatch. Add „parens“ style to highlight both opener and closer. Make „default“ style, which is not default, a synonym for „opener“. Make time-delay work the same with all styles. Add help for config dialog extensions tab, including help for parenmatch. Add new tests. Original patch by Charles Wohlganger.

  • bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella

  • bpo-21519: IDLE’s basic custom key entry dialog now detects duplicates properly. Original patch by Saimadhav Heblikar.

  • bpo-29910: IDLE no longer deletes a character after commenting out a region by a key shortcut. Add return 'break' for this and other potential conflicts between IDLE and default key bindings.

  • bpo-30728: Review and change idlelib.configdialog names. Lowercase method and attribute names. Replace „colour“ with „color“, expand overly cryptic names, delete unneeded underscores. Replace import * with specific imports. Patches by Cheryl Sabella.

  • bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them with tk. Add tests for all 3 validation functions. Original patch by G Polo. Tests added by Cheryl Sabella.

  • bpo-15786: Fix several problems with IDLE’s autocompletion box. The following should now work: clicking on selection box items; using the scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no longer happen. Patch by Louie Lu.

  • bpo-25514: Add doc subsubsection about IDLE failure to start. Popup no-connection message directs users to this section.

  • bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and Terry Jan Reedy.

  • bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by Cheryl Sabella and Terry Jan Reedy.

  • bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to 100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy.

  • bpo-30303: Add _utest option to textview; add new tests. Increase coverage to 100%. Patches by Louie Lu and Terry Jan Reedy.

  • bpo-29071: IDLE colors f-string prefixes (but not invalid ur prefixes).

  • bpo-28572: Add 10% to coverage of IDLE’s test_configdialog. Update and augment description of the configuration system.

Инструменты/демоверсии

  • bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared builds now, too. PEP 523 introduced _PyEval_EvalFrameDefault which inlines PyEval_EvalFrameEx on non-debug shared builds. This broke the ability to use py-bt, py-up, and a few other Python-specific gdb integrations. The problem is fixed by only looking for _PyEval_EvalFrameDefault frames in python-gdb.py. Original patch by Bruno «Polaco» Penteado.

  • bpo-29748: Added the slice index converter in Argument Clinic.

  • bpo-24037: Разрешить параметры с именами bool(accept={int}) и int с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29367: Разрешить параметры с именами method-wrapper и wrapperobject с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28023: Fix python-gdb.py didn’t support new dict implementation.

  • bpo-15369: The pybench and pystone microbenchmark have been removed from Tools. Please use the new Python benchmark suite https://github.com/python/pyperformance which is more reliable and includes a portable version of pybench working on Python 2 and Python 3.

  • bpo-28102: The zipfile module CLI now prints usage to stderr. Patch by Stephen J. Turnbull.

C API

  • bpo-31338: Added the Py_UNREACHABLE() macro for code paths which are never expected to be reached. This and a few other useful macros are now documented in the C API manual.

  • bpo-30832: Remove own implementation for thread-local storage. CPython has provided the own implementation for thread-local storage (TLS) on Python/thread.c, it’s used in the case which a platform has not supplied native TLS. However, currently all supported platforms (Windows and pthreads) have provided native TLS and defined the Py_HAVE_NATIVE_TLS macro with unconditional in any case.

  • bpo-30708: PyUnicode_AsWideCharString() now raises a ValueError if the second argument is NULL and the wchar_t* string contains null characters.

  • bpo-16500: Deprecate PyOS_AfterFork() and add PyOS_BeforeFork(), PyOS_AfterFork_Parent() and PyOS_AfterFork_Child().

  • bpo-6532: The type of results of PyThread_start_new_thread() and PyThread_get_thread_ident(), and the id parameter of PyThreadState_SetAsyncExc() changed from «long» to «unsigned long».

  • bpo-27867: Function PySlice_GetIndicesEx() is deprecated and replaced with a macro if Py_LIMITED_API is not set or set to the value between 0x03050400 and 0x03060000 (not including) or 0x03060100 or higher. Added functions PySlice_Unpack() and PySlice_AdjustIndices().

  • bpo-29083: Fixed the declaration of some public API functions. PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and Py_BuildValue() were not available in limited API of version < 3.3 when PY_SSIZE_T_CLEAN is defined.

  • bpo-28769: Разрешить параметры с именами const char * и char * с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29058: All stable API extensions added after Python 3.2 are now available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of the minimum Python version supporting this API.

  • bpo-28822: The index parameters start and end of PyUnicode_FindChar() are now adjusted to behave like str[start:end].

  • bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.

  • bpo-28761: Разрешить параметры с именами const char * и char * с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28748: Разрешить параметры с именами const char * и char * с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-19569: Compiler warnings are now emitted if use most of deprecated functions.

  • bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(), PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and PyUnicode_AsEncodedUnicode().

Python 3.6.6 final

Дата выхода: 2018-06-27

There were no new changes in version 3.6.6.

Python 3.6.6 release candidate 1

Release date: 2018-06-11

Ядро и встроенные модули

  • bpo-33786: Исправьте асинхронные генераторы для корректной обработки GeneratorExit в athrow()

  • bpo-30654: Исправлен сброс обработчика SIGINT на SIG_DFL при выключении интерпретатора, даже если ранее был установлен пользовательский обработчик. Исправление от Филиппа Керлинга.

  • bpo-33622: Разрешить параметры с именами __del__ и gc.garbage с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31849: Исправьте предупреждение о сравнении знака/незнака в pyhash.c.

  • bpo-33391: Исправьте утечку в функции set_symmetric_difference().

  • bpo-28055: Исправление не выровненных доступов в siphash24(). Исправление от Rolf Eike Beer.

  • bpo-33231: Исправьте потенциальную утечку памяти в normalizestring().

  • bpo-29922: Разрешить параметры с именами __aenter__() и __aexit__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33199: Исправление ma_version_tag в реализации dict не инициализируется при копировании из dict с общим доступом к ключу.

  • bpo-33041: Исправлено выскакивание, когда функция содержит цикл async for.

  • bpo-32282: Исправьте ненужный ifdef в include файла VersionHelpers.h в socketmodule под Windows.

  • bpo-21983: Исправление сбоя в ctypes.cast() в случае, если аргумент type является структурированным типом данных ctypes. Исправление от Эрика Суна и Орена Милмана.

Библиотека

  • bpo-30167: Предотвращение исключения site.main(), если установлен PYTHONSTARTUP. Исправление от Стива Вебера.

  • bpo-33812: Экземпляр Datetime d с tzinfo не None, но с d.tzinfo.utcoffset(d), возвращающим None, теперь рассматривается методом astimezone() как наивный.

  • bpo-30805: Избегайте состояния гонки с помощью отладочного протоколирования

  • bpo-33767: Разрешить параметры с именами + и * с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32684: Исправьте сбор, чтобы он распространял отмену самого себя даже при return_exceptions.

  • bpo-33674: Исправьте состояние гонки в SSLProtocol.connection_made() из asyncio.sslproto: немедленно начинайте рукопожатие вместо использования call_soon(). Ранее функция data_received() могла быть вызвана до начала хендшейка, что приводило к зависанию или сбою хендшейка.

  • bpo-31647: Исправлена ошибка, при которой вызов write_eof() на _SelectorSocketTransport после того, как он уже закрыт, приводил к ошибке AttributeError.

  • bpo-33672: Исправление сбоя Task.__repr__ при использовании фальшивых корутинов Cython

  • bpo-33469: Исправление RuntimeError после закрытия цикла, в котором использовался run_in_executor

  • bpo-11874: Используйте лучший регекс при разбиении использования на оборачиваемые части. Позволяет избежать ошибок утверждения при использовании пользовательских строк metavar.

  • bpo-30877: Исправлена ошибка в Python-реализации декодера JSON, из-за которой кэш разобранных строк не очищался после завершения декодирования. Основано на исправлении от c-fos.

  • bpo-33548: tempfile._candidate_tempdir_list должен учитывать общие места TEMP

  • bpo-33542: Запретите uuid.get_node использовать DUID вместо MAC в Windows. Исправление от Цви Эффрона

  • bpo-26819: Исправление состояния гонки с ReadTransport.resume_reading в цикле событий проактора Windows.

  • bpo-28556: Разрешить параметры с именами NamedTuple.__new__ и *args с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20087: Обновлено сопоставление псевдонимов с локалями, поддерживаемыми glibc 2.27.

  • bpo-33422: Исправление удаления кавычек в конце строки при поиске байтовых/строковых литералов в pydoc. Исправление от Андреса Дельфино.

  • bpo-33197: Обновление сообщения об ошибке при построении недействительного inspect.Parameters Исправление от Donghee Na.

  • bpo-33383: Исправлен сбой в методе get() объекта базы данных dbm.ndbm при его вызове с одним аргументом.

  • bpo-33329: Исправление регрессии многопроцессорной обработки на новых версиях glibcs

  • bpo-991266: Разрешить параметры с именами Comment и http.cookies.SimpleCookie с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33131: Обновление поставляемой версии pip до 10.0.1.

  • bpo-33308: Разрешить параметры с именами parser и line_info=False с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33263: Исправление утечки FD в _SelectorSocketTransport. Патч от Влада Старостина.

  • bpo-33256: Разрешить параметры с именами <module> и cgitb.html() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33203: Разрешить параметры с именами random.Random.choice() и IndexError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33224: Обновите difflib.mdiff() для PEP 479. Преобразуйте не пойманную StopIteration в генераторе в return-выражение.

  • bpo-33209: Конечное обрамление в конце реализации C pickle.Pickler.dump().

  • bpo-32861: Представление __str__ urllib.robotparser’а теперь включает записи с подстановочными знаками и поля «Crawl-delay» и «Request-rate». Исправление Майкла Лазара.

  • bpo-33096: Разрешите ttk.Treeview.insert вставлять iid, имеющий булево значение false. Обратите внимание, что iid=0 и iid=False будут одинаковыми. Исправление Гарвита Кхатри.

  • bpo-33127: Модуль ssl теперь компилируется с LibreSSL 2.7.1.

  • bpo-33021: Освобождение GIL во время вызова fstat(), что позволяет избежать зависания всех потоков при вызове mmap.mmap(), os.urandom() и random.seed(). Исправление Нира Соффера.

  • bpo-27683: Разрешить параметры с именами ipaddress и hosts() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32844: Исправление неправильного перенаправления низкого дескриптора (0 или 1) на stderr в подпроцессе, если другой низкий дескриптор закрыт.

  • bpo-31908: Разрешить параметры с именами trace и --missing с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31457: Если используются вложенные адаптеры журналов, внутренние методы process() больше не опускаются.

  • bpo-16865: Поддержка массивов >=2GiB в ctypes. Исправление от Сегева Файнера.

  • bpo-31238: pydoc: метод stop() частного класса ServerThread теперь ожидает завершения работы DocServer.serve_until_quit(), а затем явно устанавливает атрибут docserver в None, чтобы прервать цикл ссылок.

Документация

  • bpo-33503: Исправьте неработающую ссылку на pypi

  • bpo-33421: Добавьте недостающую документацию для typing.AsyncContextManager.

  • bpo-33378: Добавьте переключатель корейского языка для https://docs.python.org/3/

  • bpo-33276: Уточните, что атрибут __path__ в модулях не может быть просто любым значением.

  • bpo-33201: Модернизируйте документацию по написанию типов расширения C.

  • bpo-33195: Разрешить параметры с именами Py_UNICODE и c-api/arg с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33126: Документ PyBuffer_ToContiguous().

  • bpo-27212: Измените документацию для рецепта islice(), чтобы он потреблял начальные значения вплоть до начального индекса.

  • bpo-28247: Обновите документацию zipapp, чтобы описать, как создавать автономные приложения.

  • bpo-18802: Изменения в документации для ipaddress. Исправление от Jon Foster и Berker Peksag.

  • bpo-27428: Разрешить параметры с именами WindowsRegistryFinder и MetaPathFinder с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-8243: Добавьте примечание о поведении исключений curses.addch и curses.addstr при записи за пределами окна или блокнота.

  • bpo-31432: Уточните значение флагов CERT_NONE, CERT_OPTIONAL и CERT_REQUIRED для ssl.SSLContext.verify_mode.

Тесты

  • bpo-33655: Игнорируйте сбои test_posix_fallocate на платформах BSD, которые могут быть вызваны работой на ZFS.

  • bpo-19417: Добавьте test_bdb.py.

Построить

  • bpo-5755: Разрешить параметры с именами -Wstrict-prototypes и CFLAGS_NODIST с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-33614: Обеспечивает правильную регенерацию файлов определения модулей для стабильного ABI в Windows.

  • bpo-33522: Включите сборки CI в Visual Studio Team Services по адресу https://python.visualstudio.com/cpython.

  • bpo-33012: Добавьте -Wno-cast-function-type для gcc 8 для отключения предупреждений о приведении функций к PyCFunction в списках определений методов.

  • bpo-33394: Включает подробную сборку для модулей расширения, когда GNU make передаются макросы в командной строке.

Windows

  • bpo-33184: Update Windows installer to OpenSSL 1.0.2o.

macOS

  • bpo-33184: Update macOS installer build to use OpenSSL 1.0.2o.

IDLE

  • bpo-33656: В Windows добавьте вызов API, сообщающий, что tk масштабируется с учетом DPI. В Windows 8.1+ или 10, при неизменных свойствах DPI-совместимости бинарного файла Python и разрешении монитора более 96 DPI, это должно сделать текст и линии более четкими. В остальных случаях это не должно иметь никакого эффекта.

  • bpo-33768: Щелчок по контекстной строке перемещает эту строку в верхнюю часть окна редактора.

  • bpo-33763: IDLE: Используйте текстовый виджет, доступный только для чтения, для контекста кода вместо виджета метки.

  • bpo-33664: Прокрутка текста редактора IDLE по строкам. Ранее колесо мыши и ползунок полосы прокрутки перемещали текст на фиксированное количество пикселей, что приводило к неполным строкам в верхней части окна редактора. Это изменение также применяется к окнам вывода shell и grep, но не к представлениям текста только для чтения.

  • bpo-33679: Включить настройку цвета для контекста кода в зависимости от темы. Используйте вкладку «Основные моменты», чтобы посмотреть настройки для встроенных тем или добавить настройки в пользовательские темы.

  • bpo-33642: Отображение до maxlines непустых строк для контекста кода. Если текущий контекст отсутствует, отображается одна пустая строка.

  • bpo-33628: IDLE: Очистка файла codecontext.py и его теста.

  • bpo-33564: Контекст кода IDLE теперь распознает async как открывающий блок.

  • bpo-29706: IDLE now colors async and await as keywords in 3.6. They become full keywords in 3.7.

  • bpo-21474: Обновление определения слова/идентификатора с ascii на unicode. В текстовых полях и полях ввода это влияет на выделение двойным щелчком мыши, перемещение влево/вправо с помощью Control-left/right и удаление влево/вправо с помощью Control-BACKSPACE/DEL.

  • bpo-33204: IDLE: постоянно окрашивает недопустимые строковые префиксы. Строковый префикс „u“ не может быть сопряжен ни с „r“, ни с „f“. Последовательно закрашивайте столько префиксов, начиная с правого, сколько допустимо. Пересмотрите и расширьте тест колоризатора.

  • bpo-32831: Добавьте документацию и тесты для codecontext.

Инструменты/демоверсии

  • bpo-33189: pygettext.py теперь распознает только литеральные строки в качестве документальных строк и переводимых строк и отвергает байтовые литералы и выражения f-строк.

  • bpo-31920: Исправлена работа с каталогами в качестве аргументов в скрипте pygettext. Основано на патче Олега Красникова.

  • bpo-29673: Исправьте макросы pystackv и pystack gdbinit.

  • bpo-32885: Разрешить параметры с именами -n и Tools/scripts/pathfix.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31583: Исправление 2to3 для использования с опцией –add-suffix, но без опции –output-dir для относительного пути к файлам в текущем каталоге.

C API

  • bpo-32374: Документируйте, что m_traverse для многофазных инициализированных модулей может вызываться с m_state=NULL, и добавьте проверку на вменяемость

Python 3.6.5 final

Release date: 2018-03-28

Тесты

  • bpo-32872: Избежать проблемы совместимости regrtest с пакетами пространства имен.

Построить

  • bpo-33163: Обновите pip до версии 9.0.3 и setuptools до версии 39.0.1.

Python 3.6.5 release candidate 1

Release date: 2018-03-13

Безопасность

  • bpo-33001: Минимальное исправление для предотвращения выхода за пределы буфера в os.symlink на Windows

  • bpo-32981: Разрешить параметры с именами CVE-2018-1060 и CVE-2018-1061 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-33026: Исправлено выскакивание из блока «с» при установке f_lineno.

  • bpo-17288: Предотвращение переходов из событий трассировки „return“ и „exception“.

  • bpo-32889: Разрешить параметры с именами Py_ADDRESS_IN_RANG и address_in_range с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32650: Pdb и другие отладчики, зависящие от bdb.py, будут корректно перешагивать через (следующую команду) нативные корутины. Исправление от Pablo Galindo.

  • bpo-32685: Улучшение предложения, когда Python 2 форма оператора print либо присутствует в той же строке, что и заголовок составного оператора, либо завершается точкой с запятой вместо новой строки. Исправление Нитиша Чандры.

  • bpo-32583: Исправление возможного падения встроенных декодеров Unicode, вызванного ошибками записи за пределы границ при использовании настраиваемых обработчиков ошибок декодирования.

  • bpo-26163: Улучшен хэш frozenset() для создания более четких значений хэша при работе с наборами данных, содержащими много похожих значений.

  • bpo-27169: Разрешить параметры с именами __debug__ и bpo-22091 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32329: Разрешить параметры с именами sys.flags.hash_randomization и PYTHONHASHSEED=0 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30416: The optimizer is now protected from spending much time doing complex calculations and consuming much memory for creating large constants in constant folding.

  • bpo-18533: Разрешить параметры с именами repr() и values() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32028: Ведущие пробельные символы теперь корректно игнорируются при генерации предложений по преобразованию операторов печати Py2 в вызовы встроенных функций печати Py3. Исправление от Sanyam Khurana.

  • bpo-32137: При выполнении repr глубоко вложенных dict теперь возникает ошибка RecursionError, а не аварийное завершение работы из-за переполнения стека.

Библиотека

  • bpo-33064: Разрешить параметры с именами *args и **kwargs с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31804: Избегайте сбоев в multiprocessing.Process, если стандартные потоки закрыты или отсутствуют при выходе.

  • bpo-33037: Пропускать отправку/получение данных после закрытия транспорта SSL.

  • bpo-30353: Fix ctypes pass-by-value for structs on 64-bit Cygwin/MinGW.

  • bpo-33009: Исправьте inspect.signature() для однопараметрических partialmethods.

  • bpo-32969: Раскрытие нескольких отсутствующих констант в zlib и исправление соответствующей документации.

  • bpo-32713: Исправлена работа tarfile.itn с выходящими за границы плавающими значениями. Автор исправления - Джоффри Фюрер.

  • bpo-30622: Модуль ssl теперь обнаруживает отсутствие поддержки NPN в LibreSSL.

  • bpo-32922: dbm.open() теперь кодирует имя файла кодировкой файловой системы, а не кодировкой по умолчанию.

  • bpo-32859: Разрешить параметры с именами os.dup2 и dup3 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21060: Перепишите сбивающее с толку сообщение из setup.py upload с «No dist file created in earlier command» на более полезное «Must create and upload files in one command».

  • bpo-32857: Разрешить параметры с именами tkinter и after_cancel(None) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32852: Убедитесь, что sys.argv остается в виде списка при выполнении трассировки.

  • bpo-32841: Исправлена проблема asyncio.Condition, из-за которой после уведомления и отмены условной блокировки отмена молча игнорировалась. Исправление от Bar Harel.

  • bpo-31787: Исправлены утечки методов __init__() в различных модулях. (Внесено Ореном Милманом)

  • bpo-30157: Исправлено угадывание кавычек и разделителя в csv.Sniffer.sniff(), когда только последнее поле заключено в кавычки. Исправление от Джейка Дэвиса.

  • bpo-32394: socket: Remove TCP_FASTOPEN, TCP_KEEPCNT flags on older version Windows during run-time.

  • bpo-32777: Исправление редкого, но потенциально возможного тупика дочернего процесса preexec в подпроцессе на POSIX-системах при пометке дескрипторов файлов, наследуемых при exec в дочернем процессе. Эта ошибка, похоже, появилась в версии 3.4.

  • bpo-32647: Модуль ctypes раньше зависел от косвенной линковки для dlopen. Теперь разделяемое расширение явно связывается с libdl на платформах с dl.

  • bpo-32734: Исправлена проблема безопасности asyncio.Lock(), из-за которой один и тот же замок можно было получить и заблокировать несколько раз, не освобождая его. Исправление от Bar Harel.

  • bpo-32727: Не включать поле имени в SMTP-конверт с адреса. Исправление от Стефана Виртела

  • bpo-27931: Исправление ошибки разбора заголовка адреса электронной почты, когда имя пользователя представляет собой пустую строку с кавычками. Исправление от Xiang Zhang.

  • bpo-32304: команда загрузки distutils больше не повреждает tar-файлы, заканчивающиеся байтом CR, и больше не пытается преобразовать CR в CRLF в любом из текстовых полей загрузки.

  • bpo-32502: uuid.uuid1 больше не вызывает исключение, если встречается 64-битный аппаратный адрес.

  • bpo-31848: Исправьте обработку ошибок в Aifc_read.initfp(), когда чанк SSND не был найден. Исправление от Zackery Spytz.

  • bpo-32555: On FreeBSD and Solaris, os.strerror() now always decode the byte string from the current locale encoding, rather than using ASCII/surrogateescape in some cases.

  • bpo-32521: Модуль nis теперь совместим с новым расположением libnsl и headers.

  • bpo-32473: Улучшение читаемости вывода ABCMeta._dump_registry()

  • bpo-32521: glibc удалил Sun RPC. Используйте заменяющие заголовки и библиотеку libtirpc в модуле nis.

  • bpo-32228: Разрешить параметры с именами truncate() и tell() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26133: Не отписывать сигналы в цикле событий asyncio UNIX при выключении интерпретатора.

  • bpo-32185: The SSL module no longer sends IP addresses in SNI TLS extension on platforms with OpenSSL 1.0.2+ or inet_pton.

  • bpo-32323: urllib.parse.urlsplit() теперь не преобразует идентификатор зоны (scope) в нижний регистр для скопированных IPv6-адресов в именах хостов.

  • bpo-32302: Исправьте bdist_wininst в distutils для CRT v142: он бинарно совместим с CRT v140.

  • bpo-32255: Одиночное пустое поле теперь всегда берется в кавычки при записи в CSV-файл. Это позволяет отличить пустую строку от строки, состоящей из одного пустого поля. Исправление Лихта Такеучи.

  • bpo-32277: Разрешить параметры с именами NotImplementedError и SystemError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32199: В геттере ip getnode() теперь используется „ip link“ вместо „ip link list“.

  • bpo-27456: Убедитесь, что TCP_NODELAY установлен в Linux. Проверено Виктором Стиннером.

  • bpo-31900: Разрешить параметры с именами locale.localeconv() и LC_CTYPE с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31802: Разрешить параметры с именами posixpath и ntpath с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Документация

  • bpo-17232: Уточнение документации для -O и -OO. Исправление Терри Риди.

  • bpo-32800: Обновление ссылки на w3c doc для стандартных пространств имен xml.

  • bpo-8722: Разрешить параметры с именами __getattr__() и get() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32614: Измените примеры RE в документации, чтобы использовать необработанные строки для предотвращения DeprecationWarning, и добавьте текст в REGEX HOWTO, чтобы подчеркнуть это ухудшение.

  • bpo-31972: Улучшите документацию для подклассов pathlib.PurePath.

  • bpo-17799: Объясните реальное поведение sys.settrace и sys.setprofile и их C-API аналогов относительно того, какой тип событий принимается в каждой функции. Исправление от Pablo Galindo Salgado.

Тесты

  • bpo-32517: Разрешить параметры с именами test_asyncio и KqueueSelector с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32721: Исправьте test_hashlib, чтобы он не выходил из строя, если модуль _md5 не собран.

  • bpo-32252: Исправлена функция faulthandler_suppress_crash_report(), используемая для предотвращения создания дампов ядра при тестировании аварий. getrlimit() возвращает ноль в случае успеха.

  • bpo-31518: Debian Unstable has disabled TLS 1.0 and 1.1 for SSLv23_METHOD(). Change TLS/SSL protocol of some tests to PROTOCOL_TLS or PROTOCOL_TLSv1_2 to make them pass on Debian.

Построить

  • bpo-32635: Исправление segfault модуля crypt, когда в системе вместо libcrypt предоставляется libxcrypt.

Windows

  • bpo-33016: Исправьте потенциальное использование неинициализированной памяти в nt._getfinalpathname

  • bpo-32903: Исправление утечки памяти в os.chdir() в Windows, если текущий каталог задан как UNC-путь.

  • bpo-31966: Исправлена ошибка WindowsConsoleIO.write() для записи пустых данных.

  • bpo-32409: Убедитесь, что activate.bat может обрабатывать содержимое Unicode.

  • bpo-32457: Улучшена обработка денормализованного пути к исполняемому файлу при запуске Python.

  • bpo-32370: Используйте правильную кодировку для вывода ipconfig в модуле uuid. Исправление от Segev Finer.

  • bpo-29248: Разрешить параметры с именами os.readlink() и PrintNameOffset с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32588: Create standalone _distutils_findvs module.

macOS

  • bpo-32726: Provide an additional, more modern macOS installer variant that supports macOS 10.9+ systems in 64-bit mode only. Upgrade the supplied third-party libraries to OpenSSL 1.0.2n, XZ 5.2.3, and SQLite 3.22.0. The 10.9+ installer now links with and supplies its own copy of Tcl/Tk 8.6.8.

IDLE

  • bpo-32984: Разрешить параметры с именами __file__ и -s с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32940: Упрощение и переименование StringTranslatePseudoMapping в pyparse.

  • bpo-32916: Разрешить параметры с именами str и code с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32905: Удалите неиспользуемый код в модуле pyparse.

  • bpo-32874: Добавьте тесты для pyparse.

  • bpo-32837: Использование системной и зависящей от места кодировки по умолчанию для open() - плохая идея для системных и зависящих от места файлов IDLE.

  • bpo-32826: Добавьте «encoding=utf-8» к open() в test_help_about IDLE. GUI-тест test_file_buttons() просматривает только начальные строки с кодировкой ascii-only, но не работает на системах, где open() по умолчанию имеет значение „ascii“, потому что readline() внутренне читает и декодирует достаточно далеко вперед, чтобы встретить не-ascii символ в CREDITS.txt.

  • bpo-32765: Обновление документальной строки вкладки «Общие» в configdialog для добавления новых виджетов в список виджетов.

Инструменты/демоверсии

  • bpo-24960: 2to3 и lib2to3 теперь могут читать файлы с пикированными грамматиками, используя pkgutil.get_data(), а не прощупывая файловую систему. Это позволяет 2to3 и lib2to3 работать при запуске из zip-файла.

  • bpo-32222: Исправление того, что pygettext не извлекал документальные строки для функций с аргументами, аннотированными типом. Исправление Тоби Харрадайна.

C API

  • bpo-29084: Недокументированный C API для OrderedDict был исключен из ограниченного C API. Он был добавлен по ошибке и фактически никогда не работал в ограниченном C API.

Python 3.6.4 final

Release date: 2017-12-18

There were no new code changes in version 3.6.4 since v3.6.4rc1.

Python 3.6.4 release candidate 1

Дата выхода: 2017-12-05

Ядро и встроенные модули

  • bpo-32176: co_flags.CO_NOFREE теперь всегда корректно устанавливается конструктором объекта кода на основе freevars и cellvars, а не требует корректной установки вызывающей стороной. Это гарантирует, что он будет автоматически очищен, когда в модифицированный объект кода и функцию будут внедрены дополнительные ссылки на ячейки.

  • bpo-31949: Исправлено несколько проблем с печатью трассировок (PyTraceBack_Print()). Установка sys.tracebacklimit в 0 или меньше теперь подавляет печать трассировок. Установка sys.tracebacklimit в None теперь приводит к использованию лимита по умолчанию. Установка sys.tracebacklimit в целое число, большее LONG_MAX, теперь означает использование ограничения LONG_MAX, а не ограничения по умолчанию. Исправлено целочисленное переполнение в случае более чем 2**31 элементов трассировки на Windows. Исправлена обработка ошибок вывода.

  • bpo-30696: Исправление бесконечного зацикливания интерактивного интерпретатора при отсутствии памяти.

  • bpo-20047: Методы Bytearray partition() и rpartition() теперь принимают в качестве разделителя только байтоподобные объекты, как это и задокументировано. В частности, они теперь выдают ошибку TypeError, а не возвращают ложный результат, если в качестве разделителя передано целое число.

  • bpo-31852: Fix a segmentation fault caused by a combination of the async soft keyword and continuation lines.

  • bpo-21720: Разрешить параметры с именами __import__() и __all__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31825: Исправлена ошибка переполнения в кодеке „unicode-escape“ и в codecs.escape_decode() при декодировании экранированного неасквидного байта.

  • bpo-28603: Выводить полную цепочку контекста/причины исключений при выходе из интерпретатора, даже если исключение в цепочке является нехешируемым или сравнивается с более поздними. Исправление Зейна Биттера.

  • bpo-31786: Исправлено округление таймаута в модуле select для корректного округления отрицательных таймаутов между -1.0 и 0.0. Теперь функции блокируют ожидание событий, как и ожидалось. Ранее вызов был некорректно неблокирующим. Исправление от Пабло Галиндо.

  • bpo-31642: Восстановили блокировку «from package import module», установив для sys.modules[«package.module»] значение None.

  • bpo-31626: Исправлена ошибка в отладочном аллокаторе памяти. После уменьшения блока памяти происходила запись в освобожденную память.

  • bpo-31619: Исправлена ошибка ValueError при преобразовании строки с большим количеством символов подчеркивания в целое число с двоичной основой.

  • bpo-31592: Исправлен сбой утверждения в парсере Python в случае плохого unicodedata.normalize(). Исправление от Орена Милмана.

  • bpo-31588: Разрешить параметры с именами TypeError и __prepare__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31566: Разрешить параметры с именами _warnings.warn() и __name__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31505: Разрешить параметры с именами json и _json.make_encoder() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31492: Исправление ошибок утверждения в случае невозможности импорта из модуля с плохим атрибутом __name__, а также в случае невозможности доступа к атрибуту такого модуля. Исправление от Орена Милмана.

  • bpo-31490: Разрешить параметры с именами ctypes и _anonymous_ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31478: Разрешить параметры с именами _random.Random.seed() и __abs__() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31315: Исправление ошибки утверждения в imp.create_dynamic(), когда spec.name не является строкой. Исправление от Орена Милмана.

  • bpo-31311: Разрешить параметры с именами __setstate__() и ctypes._CData с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31293: Исправление сбоев при истинном делении и умножении объекта timedelta на float с плохим методом as_integer_ratio(). Исправление от Орена Милмана.

  • bpo-31285: Разрешить параметры с именами warnings.warn_explicit и get_source() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30817: Разрешить параметры с именами PyErr_PrintEx() и _PySys_SetObjectId() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-28556: Разрешить параметры с именами typing и __init_subclass__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27240: Разрешить параметры с именами bpo-30788 и bpo-31831 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32186: io.FileIO.readall() и io.FileIO.read() теперь освобождают GIL при получении размера файла. Исправлено зависание всех потоков при недоступном NFS-сервере. Исправление Нира Соффера.

  • bpo-12239: Разрешить параметры с именами msilib.SummaryInformation.GetProperty() и None с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31325: Разрешить параметры с именами collections.namedtuple() и RobotFileParser.parse() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-12382: msilib.OpenDatabase() теперь выдает лучшее сообщение об исключении, если не удалось открыть или создать файл MSI. Первоначальный патч от Уильяма Тизера.

  • bpo-32110: Разрешить параметры с именами codecs.StreamReader.read(n) и read() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-32072: Исправлены проблемы с бинарными списками: Исправлено сохранение байтовых массивов. Идентичные объекты будут сохраняться только один раз. Равные ссылки будут загружаться как идентичные объекты. Добавлена поддержка сохранения и загрузки рекурсивных структур данных.

  • bpo-32034: Сделайте asyncio.IncompleteReadError и LimitOverrunError pickleable.

  • bpo-32015: Исправлено зацикливание asyncio в случае переподключения сокета во время ожидания асинхронного чтения/записи из/в сокет.

  • bpo-32011: Восстановлена поддержка загрузки маршаловых файлов с кодом TYPE_INT64. Эти файлы могут быть созданы в Python 2.7.

  • bpo-31970: Снижение накладных расходов на производительность режима отладки asyncio.

  • bpo-9678: Исправлено определение MAC-адреса в модуле uuid: Использование ifconfig в NetBSD и OpenBSD. Использование arp в Linux, FreeBSD, NetBSD и OpenBSD. Основано на исправлении Такаюки Шимизукавы.

  • bpo-30057: Исправьте потенциальный пропущенный сигнал в signal.signal().

  • bpo-31933: Исправление параметров Blake2 leaf_size и node_offset на платформах с большим эндианом. Исправление от Джека О’Коннора.

  • bpo-31927: Исправлена компиляция модуля сокетов на NetBSD 8. Исправлен сбой утверждения или чтение произвольных данных при разборе адреса AF_BLUETOOTH на NetBSD и DragonFly BSD.

  • bpo-27666: Исправлено повреждение стека в curses.box() и curses.ungetmouse(), когда размер типов chtype или mmask_t меньше размера C long. curses.box() теперь принимает символы в качестве аргументов. Основано на исправлении Стива Финка.

  • bpo-31897: plistlib теперь отлавливает больше ошибок при чтении бинарных списков и поднимает InvalidFileException вместо неожиданных исключений.

  • bpo-25720: Исправление метода проверки состояния прокладки curses WINDOW. Исправление от Масаюки Ямамото.

  • bpo-31893: Исправлено расположение структуры kqueue_event на OpenBSD и NetBSD. Исправлено сравнение объектов kqueue_event.

  • bpo-31891: Исправлена сборка модуля curses на NetBSD.

  • bpo-28416: Экземпляры подкласса pickle.Pickler с методом persistent_id() и подкласса pickle.Unpickler с методом persistent_load() больше не создают циклов ссылок.

  • bpo-28326: Исправьте multiprocessing.Process, когда stdout и/или stderr закрыты или None.

  • bpo-31457: Если используются вложенные адаптеры журналов, внутренние методы process() больше не опускаются.

  • bpo-31457: Свойство manager в объектах LoggerAdapter теперь правильно задается.

  • bpo-31806: Исправлено округление таймаута в time.sleep(), threading.Lock.acquire() и socket.socket.settimeout() для корректного округления отрицательных таймаутов от -1.0 до 0.0. Теперь функции блокируют ожидание событий, как и ожидалось. Ранее вызов был некорректно неблокирующим. Автор исправления - Пабло Галиндо.

  • bpo-28603: traceback: Исправление ошибки TypeError, возникавшей при печати трассировки исключений, когда либо текущее исключение, либо исключение в его контексте/цепочке причин было нехешируемым. Исправление Зейна Биттера.

  • bpo-30058: Исправлено переполнение буфера в select.kqueue.control().

  • bpo-31770: Разрешить параметры с именами __init__() и sqlite3.Cursor с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31672: Разрешить параметры с именами idpattern и string.Template с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31764: Разрешить параметры с именами sqlite3.Cursor.close() и Cursor с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31752: Исправление возможного сбоя в конструкторе timedelta, вызываемом с пользовательскими целыми числами.

  • bpo-31701: В Windows функция faulthandler.enable() теперь игнорирует исключения MSC и COM.

  • bpo-31728: Разрешить параметры с именами _elementtree и Element.text с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31620: пустая очередь asyncio.Queue теперь не сливает память при таймауте queue.get pollers

  • bpo-31632: Исправьте метод set_protocol() класса _SSLProtocolTransport в модуле asyncio. Ранее этот метод изменял неверную ссылку на протокол.

  • bpo-31675: Исправлена утечка памяти в методах Tkinter splitlist() и split() при передаче строки размером более 2 ГБ.

  • bpo-31673: Исправлена опечатка в названии метода Tkinter adderrorinfo().

  • bpo-30806: Исправьте строковое представление объекта netrc.

  • bpo-15037: Добавлено обходное решение для getkey() в curses для ncurses 5.7 и более ранних версий.

  • bpo-25351: Избегайте сбоев при активации venv с неопределенными переменными

  • bpo-25532: inspect.unwrap() will now only try to unwrap an object sys.getrecursionlimit() times, to protect against objects which create a new object on every attribute access.

  • bpo-30347: Прекращение сбоев при одновременном выполнении итераций над итераторами itertools.groupby().

  • bpo-31516: threading.current_thread() не должен возвращать фиктивный поток при завершении работы.

  • bpo-31351: python -m ensurepip теперь завершается с ненулевым кодом выхода, если загрузка pip завершилась неудачно.

  • bpo-31482: random.seed() теперь работает с байтами в версии=1

  • bpo-31334: Разрешить параметры с именами poll.poll([timeout]) и select с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31310: семафорный трекер мультипроцессора должен быть запущен снова в случае сбоя.

  • bpo-31308: Сделайте многопроцессорный процесс forkserver невосприимчивым к Ctrl-C и другим прерываниям пользователя. Если он падает, перезапустите его при необходимости.

Документация

  • bpo-32105: Добавлен маркер asyncio.BaseEventLoop.connect_accepted_socket versionadded.

  • bpo-31537: Исправьте неправильное использование get_history_length в примере примера документации readline. Исправление от Брэда Смита.

  • bpo-30085: Операторные функции без двойного подчеркивания предпочтительнее для наглядности. Те, что с подчеркиванием, сохраняются только для обратной совместимости.

Тесты

  • bpo-31380: Пропустить test_httpservers test_undecodable_file на macOS: не удается на APFS.

  • bpo-31705: Пропустите test_socket.test_sha256() на ядре Linux старше 4.5. Тест не проходит с ENOKEY на ядре 3.10 (на ppc64le). Исправление было добавлено в ядро 4.5.

  • bpo-31174: Исправьте test_tools.test_unparse: DirectoryTestCase теперь сохраняет выборку имен, чтобы всегда проверять одни и те же файлы. Это предотвращает ложные срабатывания при поиске утечек ссылок.

  • bpo-30695: Разрешить параметры с именами set_nomemory(start, stop) и remove_mem_hooks() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Построить

  • bpo-32059: Разрешить параметры с именами detect_modules() и setup.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31957: Исправлено определение версии Windows SDK при сборке под Windows.

  • bpo-31609: Исправляет кавычки в файле PCbuild/clean.bat

  • bpo-31934: Прерывает сборку при сборке из нечистого дерева исходных текстов.

  • bpo-31926: Исправлена ошибка Argument Clinic, иногда вызывавшая ошибки компиляции, когда в .c-файле было более одной функции и/или метода с одинаковым именем.

  • bpo-28791: Обновите сборки Windows для использования SQLite 3.21.0.

  • bpo-28791: Обновите программу установки OS X для использования SQLite 3.21.0.

  • bpo-22140: Предотвращение двойной подстановки префикса в python-config.sh.

  • bpo-31536: Избегайте оптовой перестройки после make regen-all, если ничего не изменилось.

Windows

  • bpo-1102: Разрешить параметры с именами None и View.Fetch() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31944: Исправлена кнопка «Изменить» в диалоге «Приложения и функции».

macOS

  • bpo-31392: Обновление программы установки macOS для использования OpenSSL 1.0.2m

IDLE

  • bpo-32207: Улучшение трассировки исключений событий tk в IDLE. Когда обработка событий tk управляется циклом выполнения IDLE, контекст queue.EMPTY больше не добавляется к трассировкам исключений tk. Возврат к трассировке теперь такой же, как и при обработке событий пользовательским кодом. Исправление основано на предложении Сергея Сторчака.

  • bpo-32164: Удалите неиспользуемый файл idlelib/tabbedpages.py. Использование TabbedPageSet в configdialog было заменено на ttk.Notebook.

  • bpo-32100: IDLE: Исправление старых и новых ошибок в pathbrowser; улучшение тестов. Патч в основном разработан Шерил Сабелла.

  • bpo-31858: IDLE – Ограничивает манипуляции с приглашениями оболочки только оболочкой. Окна редактора и вывода видят только пустую последнюю строку подсказки. Это упрощает код и исправляет небольшую ошибку при вставке новой строки. Sys.ps1, если он присутствует, считывается при запуске оболочки, но не устанавливается и не изменяется.

  • bpo-31860: Образец шрифта в диалоге конфигурации IDLE теперь можно редактировать. Изменения сохраняются, пока IDLE остается открытым

  • bpo-31836: Test_code_module теперь проходит, если запущен после test_idle, который устанавливает ps1. Модуль кода использует sys.ps1, если он есть, или устанавливает его в „>>> „, если его нет. Test_code_module теперь правильно проверяет оба поведения. То же самое касается ps2.

  • bpo-28603: Исправление ошибки TypeError, которая приводила к перезапуску оболочки при печати трассировки, включающей исключение, которое невозможно хэшировать. Исправление от Зейна Биттера.

  • bpo-13802: Use non-Latin characters in the IDLE’s Font settings sample. Even if one selects a font that defines a limited subset of the unicode Basic Multilingual Plane, tcl/tk will use other fonts that define a character. The expanded example give users of non-Latin characters a better idea of what they might see in IDLE’s shell and editors. To make room for the expanded sample, frames on the Font tab are re-arranged. The Font/Tabs help explains a bit about the additions.

  • bpo-31460: Упрощение API браузера модулей IDLE. Передача виджета вместо flist с корневым виджетом открывает возможность создания фрейма браузера, который является только частью окна. Передача полного имени файла вместо фрагментов, которые, как предполагается, происходят из файла .py, открывает возможность просмотра файлов python, которые не заканчиваются на .py.

  • bpo-31649: IDLE - Сделайте параметры _htest, _utest только ключевыми.

  • bpo-31559: Удалите зависимость от порядка выполнения теста в idle_test.test_browser.

  • bpo-31459: Переименование браузера модулей IDLE из Class Browser в Module Browser. Первоначальный браузер классов и методов на уровне модулей стал браузером модулей с добавлением функций на уровне модулей много лет назад. Вложенные классы и функции были добавлены вчера. Для обратной совместимости виртуальное событие <<open-class-browser>>, которое отображается на вкладке Keys диалога Settings, не изменяется. Исправление от Шерил Сабелла.

  • bpo-31500: Шрифты по умолчанию теперь масштабируются на дисплеях HiDPI.

  • bpo-1612262: Браузер модулей IDLE теперь показывает вложенные классы и функции. Оригинальные исправления кода и тестов от Гильерме Поло и Шерил Сабелла, соответственно.

Инструменты/демоверсии

  • bpo-30722: Заставьте redemo работать с Python 3.6 и более новыми версиями. Также удалите опцию LOCALE, так как она не работает со строковыми шаблонами в Python 3. Исправление Кристофа Сарновски.

C API

  • bpo-20891: Исправьте PyGILState_Ensure(). Если PyGILState_Ensure() вызывается в не-Python потоке до PyEval_InitThreads(), вызывайте PyEval_InitThreads() только после вызова PyThreadState_New(), чтобы исправить падение.

  • bpo-31532: Исправление повреждения памяти из-за смешения аллокаторов в getpath.c между Py_GetPath() и Py_SetPath()

  • bpo-30697: Разрешить параметры с именами PyExc_RecursionErrorInst и PyErr_NormalizeException() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.6.3 final

Release date: 2017-10-03

Библиотека

  • bpo-31641: Re-allow arbitrary iterables in concurrent.futures.as_completed(). Fixes regression in 3.6.3rc1.

Построить

  • bpo-31662: Разрешить параметры с именами uploadrelease.bat и Doc/make.bat с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31423: Fix building the PDF documentation with newer versions of Sphinx.

Python 3.6.3 release candidate 1

Release date: 2017-09-18

Безопасность

  • bpo-29781: SSLObject.version() теперь корректно возвращает None, если рукопожатие по BIO еще не было выполнено.

  • bpo-30947: Обновите встроенную копию libexpat с версии 2.2.1 до 2.2.3, чтобы получить исправления безопасности.

Ядро и встроенные модули

  • bpo-31471: Разрешить параметры с именами subprocess.Popen() и keys() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31418: Разрешить параметры с именами PyErr_WriteUnraisable() и __module__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31416: Исправление ошибок утверждения в случае неверных warnings.filters или warnings.defaultaction. Исправление от Орена Милмана.

  • bpo-31411: Вызывать ошибку TypeError вместо SystemError в случае, если warnings.onceregistry не является словарем. Исправление от Орена Милмана.

  • bpo-31373: Исправление нескольких возможных случаев неопределенного поведения из-за понижения плавающей точки.

  • bpo-30465: Разрешить параметры с именами lineno и col_offset с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31343: Включите в sys/sysmacros.h функции major(), minor() и makedev(). Библиотека GNU C планирует удалить эти функции из sys/types.h.

  • bpo-31291: Разрешить параметры с именами zipimport.zipimporter.get_data и pathname.replace('/','\\') с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31271: Разрешить параметры с именами write() и io.TextIOWrapper с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31243: Исправление сбоя в некоторых методах io.TextIOWrapper, когда состояние декодера недействительно. Исправление от Орена Милмана.

  • bpo-30721: print теперь показывает правильную подсказку для использования синтаксиса перенаправления в Python 2. Исправление от Sanyam Khurana.

  • bpo-31070: Исправление состояния гонки в importlib _get_module_lock().

  • bpo-31095: Разрешить параметры с именами tp_dealloc и PyObject_GC_UnTrack() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31071: Избегайте маскировки исходной ошибки TypeError в вызове с * распаковкой, когда передаются другие аргументы.

  • bpo-30978: str.format_map() теперь пропускает исключения поиска ключей. Ранее любое исключение заменялось исключением KeyError.

  • bpo-30808: Используйте _Py_atomic API для чувствительного к параллелизму состояния сигнала.

  • bpo-30876: Относительный импорт из незагруженного пакета теперь повторно импортирует пакет вместо ошибки SystemError. Относительный импорт из непакета теперь завершается с ошибкой ImportError, а не SystemError.

  • bpo-30703: Улучшение доставки сигналов. Избегайте использования Py_AddPendingCall из обработчика сигналов, чтобы избежать вызова функций, небезопасных для сигналов. Тесты, которые я добавляю сюда, не работают без остальных патчей на Linux и OS X. Это означает, что наша логика доставки сигналов имеет дефекты (некоторые сигналы могут быть потеряны).

  • bpo-30765: Избегайте блокировки в pthread_mutex_lock(), когда PyThread_acquire_lock() просят не блокировать.

  • bpo-31161: Убедитесь, что сообщение об ошибке синтаксиса „Missing parenthes“ применяется только к SyntaxError, а не к подклассам. Исправление от Martijn Pieters.

  • bpo-30814: Исправлено состояние гонки при импорте подмодуля из пакета.

  • bpo-30597: print теперь показывает ожидаемый ввод в пользовательском сообщении об ошибке, когда используется в качестве оператора Python 2. Исправление от Sanyam Khurana.

Библиотека

  • bpo-31499: xml.etree: Исправление сбоя, когда парсер является частью цикла ссылок.

  • bpo-28556: typing.get_type_hints теперь по умолчанию находит нужные глобалы для классов и модулей (если вызывающая сторона не указала globalns).

  • bpo-28556: Улучшение скорости работы модуля typing. Оригинальные PR Ивана Левкивского и Митара.

  • bpo-31544: Модуль C-ускорителя ElementTree игнорировал исключения, возникающие при поиске целевых методов TreeBuilder в XMLParser().

  • bpo-31234: socket.create_connection() теперь вручную исправляет цикл ссылок: очищает переменную, хранящую последнее исключение при успехе.

  • bpo-31457: Объекты LoggerAdapter теперь могут быть вложенными.

  • bpo-31400: Улучшена обработка ошибок SSL, чтобы избежать потери номеров ошибок.

  • bpo-28958: ssl.SSLContext() теперь использует информацию об ошибке OpenSSL, когда контекст не может быть создан.

  • bpo-27340: SSLSocket.sendall() теперь использует memoryview для создания фрагментов данных. Это исправляет поддержку всех байтоподобных объектов. Это также более эффективно и позволяет избежать дорогостоящих копий.

  • bpo-31178: Исправление ошибки конкатенации строк в редком пути ошибки в модуле подпроцесса

  • bpo-31350: Микрооптимизируйте asyncio._get_running_loop(), чтобы он стал на 10% быстрее.

  • bpo-31170: expat: Обновление libexpat с 2.2.3 до 2.2.4. Исправление копирования частичных символов для ввода UTF-8 (ошибка 115 в libexpat): https://github.com/libexpat/libexpat/issues/115.

  • bpo-29136: Добавьте наборы шифров TLS 1.3 и OP_NO_TLSv1_3.

  • bpo-29212: Исправьте потоки concurrent.futures.thread.ThreadPoolExecutor, чтобы они по умолчанию имели имя потока, не основанное на repr(), когда не указан префикс thread_name_prefix. Теперь они будут идентифицировать себя как «ThreadPoolExecutor-y_n».

  • bpo-9146: Исправление ошибки сегментации в _hashopenssl, когда стандартные хэш-функции, такие как md5, недоступны в подключенной библиотеке OpenSSL. Как в некоторых специальных средах сборки FIPS-140.

  • bpo-27144: Разрешить параметры с именами map() и as_completed() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-10746: Исправление ctypes, выдающего неверные коды типов PEP 3118 для целочисленных типов.

  • bpo-22536: Модуль подпроцесса теперь устанавливает имя файла, когда на POSIX-системах возникает ошибка FileNotFoundError, связанная с тем, что исполняемый файл или cwd не найдены.

  • bpo-31249: concurrent.futures: WorkItem.run(), используемый ThreadPoolExecutor, теперь разрывает цикл ссылок между объектом исключения и объектом WorkItem.

  • bpo-31247: xmlrpc.server теперь явно разрывает циклы ссылок при использовании sys.exc_info() в коде, обрабатывающем исключения.

  • bpo-30102: Модули ssl и hashlib теперь вызывают OPENSSL_add_all_algorithms_noconf() на OpenSSL < 1.1.0. Функция определяет особенности процессора и включает оптимизацию на некоторых процессорных архитектурах, таких как POWER8. Патч основан на исследованиях Густаво Серра Скалета.

  • bpo-31185: Исправлены различные ошибки в модуле ускорения asyncio.

  • bpo-31135: ttk: исправьте метод destroy() классов LabeledScale и OptionMenu. Вызывает родительский метод destroy(), даже если используемый атрибут не существует. Метод LabeledScale.destroy() теперь также явно очищает атрибуты label и scale, чтобы помочь сборщику мусора уничтожить все виджеты.

  • bpo-31107: Исправление copyreg._slotnames() искаженного вычисления атрибутов для классов, чье имя начинается с подчеркивания. Исправление от Shane Harvey.

  • bpo-31061: Исправлено падение при использовании asyncio и потоков.

  • bpo-30502: Исправление обработки длинных оидов в ssl. Основано на патче Кристиана Хаймса.

  • bpo-30119: ftplib.FTP.putline() теперь выбрасывает ошибку ValueError на команды, содержащие CR или LF. Исправление от Donghee Na.

  • bpo-30595: multiprocessing.Queue.get() с таймаутом теперь опрашивает своего читателя в неблокирующем режиме, если ему удалось получить блокировку, но получение заняло больше времени, чем таймаут.

  • bpo-29403: Исправьте autospec unittest.mock, чтобы он не ошибался при использовании встроенных функций с привязкой к методу. Исправление Аарона Галлахера.

  • bpo-30961: Исправление декрементирования заимствованной ссылки в tracemalloc.

  • bpo-25684: Разрешить параметры с именами ttk.OptionMenu и OptionMenu с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30886: Исправьте multiprocessing.Queue.join_thread(): теперь он ожидает завершения потока, даже если поток был запущен тем же процессом, который создал очередь.

  • bpo-29854: Исправление segfault в readline при использовании опции readline’s history-size. Исправление Нира Соффера.

  • bpo-30319: socket.close() теперь игнорирует ошибку ECONNRESET.

  • bpo-30828: Исправьте запредельную запись в asyncio.CFuture.remove_done_callback().

  • bpo-30807: signal.setitimer() может отключить таймер при передаче крошечного значения. Крошечные значения (например, 1e-6) являются допустимыми ненулевыми значениями для setitimer(), которая задана как принимающая интервалы с микросекундным разрешением. Однако на некоторых платформах наша процедура преобразования может превратить 1e-6 в нулевой интервал, тем самым отключив таймер вместо того, чтобы (повторно) запланировать его.

  • bpo-30441: Исправление ошибки при изменении os.environ во время итерации по нему

  • bpo-30532: Исправление парсера значений заголовков электронной почты, удаляющего пробелы при складывании в некоторых случаях.

  • bpo-30879: os.listdir() и os.scandir() теперь выдают имена байтов при вызове с аргументом типа bytes.

  • bpo-30746: Разрешить параметры с именами os.putenv() и os.spawn*() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29755: Исправлено семейство функций lgettext() в модуле gettext. Теперь они всегда возвращают байты.

Документация

  • bpo-31294: Fix incomplete code snippet in the ZeroMQSocketListener and ZeroMQSocketHandler examples and adapt them to Python 3.

  • bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL documentation.

  • bpo-30803: Clarify doc on truth value testing. Original patch by Peter Thomassen.

Тесты

  • bpo-31320: Silence traceback in test_ssl

  • bpo-25674: Remove sha256.tbs-internet.com ssl test

  • bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest version behaves like OpenSSL 1.0.2 and no longer aborts handshake.

  • bpo-30822: regrtest: Exclude tzdata from regrtest –all. When running the test suite using –use=all / -u all, exclude tzdata since it makes test_datetime too slow (15-20 min on some buildbots) which then times out on some buildbots. Fix also regrtest command line parser to allow passing -u extralargefile to run test_zipfile64.

Построить

  • bpo-30854: Fix compile error when compiling –without-threads. Patch by Masayuki Yamamoto.

Windows

  • bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows.

  • bpo-31340: Change to building with MSVC v141 (included with Visual Studio 2017)

  • bpo-30581: os.cpu_count() now returns the correct number of processors on Windows when the number of logical processors is greater than 64.

  • bpo-30731: Add a missing xmlns to python.manifest so that it matches the schema.

IDLE

  • bpo-31493: IDLE code context – fix code update and font update timers. Canceling timers prevents a warning message when test_idle completes.

  • bpo-31488: IDLE - Update non-key options in former extension classes. When applying configdialog changes, call .reload for each feature class. Change ParenMatch so updated options affect existing instances attached to existing editor windows.

  • bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace strips more than blank spaces. Multiline string literals are not skipped.

  • bpo-31480: IDLE - make tests pass with zzdummy extension disabled by default.

  • bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk update in the background in order to make live interaction and experimentation with tkinter applications much easier.

  • bpo-31414: IDLE – fix tk entry box tests by deleting first. Adding to an int entry is not the same as deleting and inserting because int(„“) will fail.

  • bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and Help sections.

  • bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor. Move some data and functions from the class to module level. Patch by Cheryl Sabella.

  • bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog.

  • bpo-27099: Convert IDLE’s built-in „extensions“ to regular features. About 10 IDLE features were implemented as supposedly optional extensions. Their different behavior could be confusing or worse for users and not good for maintenance. Hence the conversion. The main difference for users is that user configurable key bindings for builtin features are now handled uniformly. Now, editing a binding in a keyset only affects its value in the keyset. All bindings are defined together in the system-specific default keysets in config-extensions.def. All custom keysets are saved as a whole in config-extension.cfg. All take effect as soon as one clicks Apply or Ok. The affected events are „<<force-open-completions>>“, „<<expand-word>>“, „<<force-open-calltip>>“, „<<flash-paren>>“, „<<format-paragraph>>“, „<<run-module>>“, „<<check-module>>“, and „<<zoom-height>>“. Any (global) customizations made before 3.6.3 will not affect their keyset-specific customization after 3.6.3. and vice versa. Initial patch by Charles Wohlganger.

  • bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by Cheryl Sabella.

  • bpo-31001: Add tests for configdialog highlight tab. Patch by Cheryl Sabella.

  • bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog. The slightly modified tests continue to pass. Patch by Cheryl Sabella.

  • bpo-31130: IDLE – stop leaks in test_configdialog. Initial patch by Victor Stinner.

  • bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella.

  • bpo-19903: Разрешить параметры с именами inspect.signature и inspect.getfullargspec с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-31083: IDLE - Add an outline of a TabPage class in configdialog. Update existing classes to match outline. Initial patch by Cheryl Sabella.

  • bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly modified tests continue to pass. Patch by Cheryl Sabella.

  • bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog. Slightly modified tests continue to pass. Fix General tests. Patch mostly by Cheryl Sabella.

  • bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan Reedy and Cheryl Sabella.

  • bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping methods pertaining to each tab and the buttons will aid writing tests and improving the tabs and will enable splitting the groups into classes.

  • bpo-30853: IDLE – Factor a VarTrace class out of ConfigDialog. Instance tracers manages pairs consisting of a tk variable and a callback function. When tracing is turned on, setting the variable calls the function. Test coverage for the new class is 100%.

  • bpo-31003: IDLE: Add more tests for General tab.

  • bpo-30993: IDLE - Improve configdialog font page and tests. In configdialog: Document causal pathways in create_font_tab docstring. Simplify some attribute names. Move set_samples calls to var_changed_font (idea from Cheryl Sabella). Move related functions to positions after the create widgets function. In test_configdialog: Fix test_font_set so not order dependent. Fix renamed test_indent_scale so it tests the widget. Adjust tests for movement of set_samples call. Add tests for load functions. Put all font tests in one class and tab indent tests in another. Except for two lines, these tests completely cover the related functions.

  • bpo-30981: IDLE – Add more configdialog font page tests.

  • bpo-28523: IDLE: replace „colour“ with „color“ in configdialog.

  • bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from 46% to 96%. Patch by Louie Lu.

  • bpo-30934: Document coverage details for idlelib tests. Add section to idlelib/idle-test/README.txt. Include check that branches are taken both ways. Exclude IDLE-specific code that does not run during unit tests.

  • bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in docstrings This will facilitate improving the dialog and splitting up the class. Original patch by Cheryl Sabella.

  • bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by Louie Lu.

  • bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella.

  • bpo-30851: IDLE: Remove unused variables in configdialog. One is a duplicate, one is set but cannot be altered by users. Patch by Cheryl Sabella.

  • bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as well as mouse. Initial patch by Louie Lu.

  • bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once.

  • bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in config; test. * In config, put dump test code in a function; run it and unittest in „if __name__ == „__main__“. * Add class config.ConfigChanges based on changes_class_v4.py on bpo issue. * Add class test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise configdialog to use ConfigChanges; see tracker msg297804. * Revise test_configdialog to match configdialog changes. * Remove configdialog functions unused or moved to ConfigChanges. Cheryl Sabella contributed parts of the patch.

  • bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by Cheryl Sabella.

  • bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more tests. Patch by Cheryl Sabella.

  • bpo-30723: IDLE: Make several improvements to parenmatch. Add „parens“ style to highlight both opener and closer. Make „default“ style, which is not default, a synonym for „opener“. Make time-delay work the same with all styles. Add help for config dialog extensions tab, including help for parenmatch. Add new tests. Original patch by Charles Wohlganger.

  • bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella

  • bpo-21519: IDLE’s basic custom key entry dialog now detects duplicates properly. Original patch by Saimadhav Heblikar.

  • bpo-29910: IDLE no longer deletes a character after commenting out a region by a key shortcut. Add return 'break' for this and other potential conflicts between IDLE and default key bindings.

  • bpo-30728: Review and change idlelib.configdialog names. Lowercase method and attribute names. Replace „colour“ with „color“, expand overly cryptic names, delete unneeded underscores. Replace import * with specific imports. Patches by Cheryl Sabella.

  • bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them with tk. Add tests for all 3 validation functions. Original patch by G Polo. Tests added by Cheryl Sabella.

Инструменты/демоверсии

  • bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared builds now, too. PEP 523 introduced _PyEval_EvalFrameDefault which inlines PyEval_EvalFrameEx on non-debug shared builds. This broke the ability to use py-bt, py-up, and a few other Python-specific gdb integrations. The problem is fixed by only looking for _PyEval_EvalFrameDefault frames in python-gdb.py. Original patch by Bruno «Polaco» Penteado.

Python 3.6.2 final

Release date: 2017-07-17

No changes since release candidate 2

Python 3.6.2 release candidate 2

Release date: 2017-07-07

Безопасность

  • bpo-30730: Предотвращает внедрение переменных окружения в подпроцесс в Windows. Предотвращает передачу других переменных окружения и командных аргументов.

  • bpo-30694: Разрешить параметры с именами CVE-2017-9233 и CVE-2016-9063 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30500: Разрешить параметры с именами splithost('//127.0.0.1#@evil.com/') и 127.0.0.1 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Python 3.6.2 release candidate 1

Release date: 2017-06-17

Безопасность

  • bpo-29591: Разрешить параметры с именами CVE-2016-0718 и CVE-2016-4472 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-30682: Удалено слишком строгое утверждение, которое не срабатывало для некоторых f-строк, таких как eval(«f„\n“») и eval(«f„\r“»).

  • bpo-30604: Move co_extra_freefuncs to not be per-thread to avoid crashes

  • bpo-29104: Исправлен разбор обратных слэшей в f-строках.

  • bpo-27945: Исправлены различные segfault’ы с dict, когда входные коллекции мутируют во время поиска, вставки или сравнения. Основано на исправлениях Дуэйна Гриффина и Тима Митчелла.

  • bpo-25794: Исправлены type.__setattr__() и type.__delattr__() для неинтернированных имен атрибутов. Основано на исправлении Эрика Суна.

  • bpo-30039: Если прерывание KeyboardInterrupt происходит, когда интерпретатор находится в середине возобновления цепочки вложенных вызовов „yield from“ или „await“, то теперь оно корректно доставляется во внутренний фрейм.

  • bpo-12414: sys.getsizeof() на кодовом объекте теперь возвращает размеры, включающие кодовую структуру и размеры объектов, на которые она ссылается. Исправление от Donghee Na.

  • bpo-29949: Исправление регрессии использования памяти объектами set и frozenset.

  • bpo-29935: Исправлены сообщения об ошибках в методе index() кортежей, списков и deque при передаче индексов неправильного типа.

  • bpo-29859: Показывать корректные сообщения об ошибках при сбое любого из вызовов pthread_* в thread_pthread.h.

  • bpo-28876: Разрешить параметры с именами bool(range) и len(range) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29600: Fix wrapping coroutine return values in StopIteration.

  • bpo-28856: Исправление ошибки, связанной с тем, что формат %b для байтов должен поддерживать объекты, следующие за буферным протоколом.

  • bpo-29714: Исправление ошибки, из-за которой формат байтов мог не работать, если внутри содержался нулевой байт.

  • bpo-29478: Если при использовании политики Compat32 указано значение max_line_length=None, оно больше не игнорируется. Исправление Мирчи Косбука.

Библиотека

  • bpo-30616: Функциональный API перечисления позволяет создавать пустые перечисления. Исправлено Donghee Na

  • bpo-30038: Исправление состояния гонки между доставкой сигнала и дескриптором файла пробуждения. Исправление от Натаниэля Смита.

  • bpo-23894: Разрешить параметры с именами rb'...' и f'...' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23890: unittest.TestCase.assertRaises() теперь вручную разрывает цикл ссылок, чтобы не держать объекты живыми дольше, чем ожидается.

  • bpo-30149: inspect.signature() теперь поддерживает callables с параметрами с переменными аргументами, обернутыми partialmethod. Исправление от Donghee Na.

  • bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases when a package is only shipped with bytecodes. Patch by Alexandru Ardelean.

  • bpo-29931: Исправлена проверка сравнения для объектов ipaddress.ip_interface. Исправление от Sanjay Sundaresan.

  • bpo-30605: re.compile() больше не выдает предупреждение BytesWarning при компиляции экземпляра bytes с ошибочно вставленным модификатором inline. Исправление Роя Уильямса.

  • bpo-24484: Avoid race condition in multiprocessing cleanup (#2159)

  • bpo-28994: Больше не отображается обратный след для SystemExit, вызванного в обратном вызове, зарегистрированном atexit.

  • bpo-30508: Не регистрируйте исключения, если был вызван метод Task/Future «cancel()».

  • bpo-28556: Обновления в модуле типизации: Добавление общего AsyncContextManager, добавление поддержки ContextManager на всех версиях. Авторы оригинальных PR: Jelle Zijlstra и Ivan Levkivskyi

  • bpo-29870: Исправление утечек ssl-сокетов при прерывании соединения в реализации asyncio/ssl. Исправление от Michaël Sghaïer.

  • bpo-29743: Закрытие транспорта во время процесса рукопожатия приводит к утечке открытого сокета. Исправление от Николая Кима

  • bpo-27585: Исправление отмены ожидания в asyncio.Lock. Исправление от Mathieu Sornay.

  • bpo-30418: В Windows subprocess.Popen.communicate() теперь также игнорирует EINVAL на stdin.write(), если дочерний процесс все еще запущен, но закрыл трубу.

  • bpo-29822: inspect.isabstract() теперь работает во время __init_subclass__. Исправление от Nate Soares.

  • bpo-29581: ABCMeta.__new__ now accepts **kwargs, allowing abstract base classes to use keyword parameters in __init_subclass__. Patch by Nate Soares.

  • bpo-30557: faulthandler теперь правильно фильтрует и отображает коды исключений на Windows

  • bpo-30378: Исправление проблемы, из-за которой logging.handlers.SysLogHandler не может обрабатывать IPv6-адреса.

  • bpo-29960: Сохранение состояния генератора, когда _random.Random.setstate() вызывает исключение. Исправление от Bryan Olson.

  • bpo-30414: multiprocessing.Queue._feed фоновый запущенный поток не прерывается из главного цикла при исключении.

  • bpo-30003: Исправлена работа со сбегающими символами в кодеке HZ. Основано на патче Ма Лина.

  • bpo-30301: Исправление ошибки AttributeError при использовании SimpleQueue.empty() в методах запуска spawn и forkserver.

  • bpo-30329: imaplib и poplib теперь отлавливают ошибку WSAEINVAL сокета Windows (код 10022) при выключении(SHUT_RDWR): Была предпринята попытка выполнить недопустимую операцию. Эта ошибка иногда возникает при SSL-соединениях.

  • bpo-30375: Предупреждения, выдаваемые при компиляции регулярного выражения, теперь всегда указывают на строку в пользовательском коде. Ранее они могли указывать на внутренности модуля re, если выдавались изнутри групп или условий.

  • bpo-30048: Разрешить параметры с именами Task.cancel() и await с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30266: contextlib.AbstractContextManager теперь поддерживает антирегистрацию путем установки __enter__ = None или __exit__ = None, следуя шаблону, представленному в bpo-25958. Исправление от Jelle Zijlstra.

  • bpo-30298: Разрешить параметры с именами '(?i)(?s)...' и '(?x) (?i) (?s)...' с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29990: Исправление проверки диапазона в декодере GB18030. Оригинальный патч от Ma Lin.

  • bpo-26293: Change resulted because of zipfile breakage. (See also: bpo-29094)

  • bpo-30243: Удалены методы __init__ сканера и кодировщика _json. Их неправильное использование могло привести к утечкам памяти или сбоям. Теперь объекты сканера и кодировщика полностью инициализируются в методах __new__.

  • bpo-30185: Избегайте отслеживания прерываний KeyboardInterrupt в вспомогательном процессе forkserver при получении Ctrl-C.

  • bpo-28556: Различные обновления модуля типизации: добавление типа typing.NoReturn, использование WrapperDescriptorType, исправление мелких ошибок. Авторы оригинальных PR - Джим Фасаракис-Хиллиард и Иван Левкивский.

  • bpo-30205: Исправление getsockname() для несвязанных сокетов AF_UNIX в Linux.

  • bpo-30070: Исправлены утечки и сбои в обработке ошибок в модуле парсера.

  • bpo-30061: Исправлены сбои в методах IOBase __next__() и readlines(), когда readline() или __next__() соответственно возвращали объект, не имеющий размера. Исправлены возможные другие ошибки, вызванные непроверкой результатов PyObject_Size(), PySequence_Size() или PyMapping_Size().

  • bpo-30017: Разрешалось вызывать метод close() объекта записи zip-файла несколько раз. Теперь при записи в закрытую запись всегда выдается ошибка ValueError.

  • bpo-30068: _io._IOBase.readlines будет проверять, закрыт ли он первым при наличии подсказки.

  • bpo-29694: Исправлено состояние гонки в pathlib mkdir с флагом parents=True. Исправление от Армина Риго.

  • bpo-29692: Исправлена произвольная развязка исключений RuntimeError в contextlib.contextmanager. Исправление Сиддхарта Веланкара.

  • bpo-29998: При пикировке и копировании ImportError теперь сохраняются атрибуты имени и пути.

  • bpo-29953: Исправлена утечка памяти в методе replace() для объектов datetime и time при передаче аргумента bound fold.

  • bpo-29942: Исправление сбоя в itertools.chain.from_iterable при столкновении с длинными прогонами пустых итераций.

  • bpo-27863: Исправлены многочисленные сбои в ElementTree, вызванные условиями гонки и неправильными типами.

  • bpo-28699: Исправлена ошибка в пулах в файле multiprocessing.pool, в результате которой при возникновении исключения в самом начале итерабельной таблицы исключение могло быть проглочено или привести к зависанию программы. Исправление подготовили Дэвин Поттс и Сян Чжан.

  • bpo-25803: Избегайте некорректных ошибок, выдаваемых Path.mkdir(exist_ok=True), когда ОС отдает приоритет ошибкам типа EACCES перед EEXIST.

  • bpo-29861: Освободите ссылки на задачи, их аргументы и результаты, как только они завершатся в multiprocessing.Pool.

  • bpo-29884: faulthandler: Восстановление старого sigaltstack во время сноса. Исправление Кристофа Зейтуни.

  • bpo-25455: Исправлены сбои при repr рекурсивных буферизованных файлоподобных объектов.

  • bpo-29800: Исправление сбоев в partial.__repr__, если ключи partial.keywords не являются строками. Исправление от Michael Seifert.

  • bpo-29742: get_extra_info() вызывает исключение, если вызывается на закрытом ssl-транспорте. Исправление от Николая Кима.

  • bpo-8256: Исправлена возможность сбоя или падения input(), если атрибуты «encoding» или «errors» в sys.stdin или sys.stdout не установлены или не являются строками.

  • bpo-28298: Fix a bug that prevented array „Q“, „L“ and „I“ from accepting big intables (objects that have __int__) as elements. Patch by Oren Milman.

  • bpo-28231: Модуль zipfile теперь принимает path-подобные объекты для внешних путей.

  • bpo-26915: методы index() и count() в collections.abc.Sequence теперь проверяют идентичность перед проверкой равенства при выполнении сравнений.

  • bpo-29615: SimpleXMLRPCDispatcher больше не цепляет KeyError (или любое другое исключение) к исключению(ям), поднятому(ым) в диспетчеризируемых методах. Исправление от Петра Мотейлека.

  • bpo-30177: path.resolve(strict=False) no longer cuts the path after the first element not present in the filesystem. Patch by Antoine Pietri.

IDLE

  • bpo-15786: Fix several problems with IDLE’s autocompletion box. The following should now work: clicking on selection box items; using the scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no longer happen. Patch by Louie Lu.

  • bpo-25514: Add doc subsubsection about IDLE failure to start. Popup no-connection message directs users to this section.

  • bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and Terry Jan Reedy.

  • bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by Cheryl Sabella and Terry Jan Reedy.

  • bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to 100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy.

  • bpo-30303: Add _utest option to textview; add new tests. Increase coverage to 100%. Patches by Louie Lu and Terry Jan Reedy.

C API

  • bpo-27867: Function PySlice_GetIndicesEx() no longer replaced with a macro if Py_LIMITED_API is not set.

Построить

  • bpo-29941: Разрешить параметры с именами --with-assertions и assert() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28787: Fix out-of-tree builds of Python when configured with --with--dtrace.

  • bpo-29243: Разрешить параметры с именами make test и make install с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23404: Разрешить параметры с именами make touch и make regen-all с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29643: Fix --enable-optimization didn’t work.

Документация

  • bpo-30176: Add missing attribute related constants in curses documentation.

  • bpo-30052: Разрешить параметры с именами bytes() и bytearray() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26985: Add missing info of code object in inspect documentation.

Инструменты/демоверсии

  • bpo-29367: Разрешить параметры с именами method-wrapper и wrapperobject с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Тесты

  • bpo-30357: test_thread: setUp() now uses support.threading_setup() and support.threading_cleanup() to wait until threads complete to avoid random side effects on following tests. Initial patch written by Grzegorz Grzywacz.

  • bpo-30197: Enhanced functions swap_attr() and swap_item() in the test.support module. They now work when delete replaced attribute or item inside the with statement. The old value of the attribute or item (or None if it doesn’t exist) now will be assigned to the target of the «as» clause, if there is one.

Windows

  • bpo-30687: Locate msbuild.exe on Windows when building rather than vcvarsall.bat

  • bpo-30450: The build process on Windows no longer depends on Subversion, instead pulling external code from GitHub via a Python script. If Python 3.6 is not found on the system (via py -3.6), NuGet is used to download a copy of 32-bit Python.

Python 3.6.1 final

Release date: 2017-03-21

Ядро и встроенные модули

  • bpo-29723: Разрешить параметры с именами sys.path[0] и bpo-29139 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Построить

  • bpo-27593: fix format of git information used in sys.version

  • Fix incompatible comment in python.h

Python 3.6.1 release candidate 1

Release date: 2017-03-04

Ядро и встроенные модули

  • bpo-28893: Установите правильную __cause__ для ошибок о недействительных awaitables, возвращаемых из __aiter__ и __anext__.

  • bpo-29683: Исправление выделения памяти в _PyCode_SetExtra. Исправление от Брайана Коулмана.

  • bpo-29684: Исправьте небольшую регрессию в PyEval_CallObjectWithKeywords. Она должна вызывать TypeError, если kwargs не является dict. Но это может привести к segv, когда args=NULL и kwargs не является dict.

  • bpo-28598: Поддержка __rmod__ для подклассов str, вызываемых перед str.__mod__. Исправление от Martijn Pieters.

  • bpo-29607: Исправление вычисления эффекта стека для CALL_FUNCTION_EX. Исправление от Матьё Дартиаиля (Matthieu Dartiailh).

  • bpo-29602: Исправлена некорректная обработка подписанных нулей в конструкторе complex для подклассов complex и для входов, имеющих метод __complex__. Исправление Сергея Сторчака.

  • bpo-29347: Исправлена возможность разыменования неопределенных указателей при создании объектов weakref.

  • bpo-29438: Исправлена проблема use-after-free в дикте разделения ключей.

  • bpo-29319: Предотвращение перезаписи RunMainFromImporter в sys.path[0].

  • bpo-29337: Исправлено возможное предупреждение BytesWarning при сравнении объектов кода. Предупреждения могли выдаваться во время компиляции.

  • bpo-29327: Исправлено падение при передаче ключевого слова iterable в sorted().

  • bpo-29034: Исправление утечки памяти и use-after-free в модуле os (path_converter).

  • bpo-29159: Исправление регрессии в bytes(x), когда x.__index__() поднимает исключение.

  • bpo-28932: Не включайте <sys/random.h>, если он не существует.

  • bpo-25677: Исправление позиционирования символа синтаксической ошибки для блоков с отступами. Основано на исправлении Майкла Лейзелла.

  • bpo-29000: Исправлено форматирование байтов окталов с нулевой прокладкой в альтернативной форме.

  • bpo-26919: На Android данные операционной системы теперь всегда кодируются/декодируются в/из UTF-8, а не из кодировки локали, чтобы избежать несоответствий с os.fsencode() и os.fsdecode(), которые уже используют UTF-8.

  • bpo-28991: functools.lru_cache() был подвержен неясной ошибке реентерабельности, вызываемой исправленной функцией len().

  • bpo-28739: выражения f-строк больше не принимаются в качестве docstrings и в ast.literal_eval(), даже если они не содержат выражений.

  • bpo-28512: Исправлена установка атрибута смещения SyntaxError с помощью PyErr_SyntaxLocationEx() и PyErr_SyntaxLocationObject().

  • bpo-28918: Исправьте кросс-компиляцию xxlimited, когда Python был собран с определением Py_DEBUG.

  • bpo-28731: Оптимизация _PyDict_NewPresized() для создания dict правильного размера. Улучшение скорости работы литерала dict с постоянными ключами до 30 %.

Библиотека

  • bpo-29169: Обновление zlib до версии 1.2.11.

  • bpo-29623: Разрешить использование path-like объекта в качестве единственного аргумента в ConfigParser.read(). Исправление Дэвида Эллиса.

  • bpo-28963: Исправление выходящей за границы итерации в asyncio.Future.remove_done_callback, реализованном на C.

  • bpo-29704: asyncio.subprocess.SubprocessStreamProtocol больше не закрывается до закрытия всех труб.

  • bpo-29271: Исправьте Task.current_task и Task.all_tasks, реализованные на C, чтобы они принимали аргумент None, как их чистая реализация на Python.

  • bpo-29703: Исправьте asyncio для поддержки инстанцирования новых циклов событий в дочерних процессах.

  • bpo-29376: Исправьте ошибку утверждения в threading._DummyThread.is_alive().

  • bpo-28624: Добавьте тест, проверяющий, что параметр cwd функции Popen() принимает объекты PathLike. Исправление от Sayan Chowdhury.

  • bpo-28518: Неявное начало транзакции перед оператором DML. Исправление Авива Паливоды.

  • bpo-29532: Изменение словаря kwarg, переданного в functools.partial(), больше не влияет на частичный объект после его создания.

  • bpo-29110: Исправление утечки объекта файла в aifc.open(), когда файл указан как путь к файловой системе и не является допустимым форматом AIFF. Исправление Энтони Чжана.

  • bpo-28556: Различные обновления модуля типизации: typing.Counter, typing.ChainMap, улучшено кэширование ABC и т.д. Авторы оригинальных PR: Jelle Zijlstra, Ivan Levkivskyi, Manuel Krebber и Łukasz Langa.

  • bpo-29100: Исправьте регрессию datetime.fromtimestamp(), появившуюся в Python 3.6.0: проверьте минимальный и максимальный годы.

  • bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when used with a rare combination of multiprocessing and custom codecs.

  • bpo-29416: Предотвращение бесконечного цикла в pathlib.Path.mkdir

  • bpo-29444: Исправлено обращение к буферу за пределами границ в методе group() объекта match. Основано на исправлении от WGH.

  • bpo-29335: Исправьте subprocess.Popen.wait(), когда дочерний процесс вышел не в завершенное, а в остановленное состояние (например, при наличии ptrace).

  • bpo-29290: Исправление регрессии в argparse, из-за которой сообщения справки обрывались на неразрывных пробелах.

  • bpo-28735: Исправлено сравнение mock.MagickMock с mock.ANY.

  • bpo-29316: Restore the provisional status of typing module, add corresponding note to documentation. Patch by Ivan L.

  • bpo-29219: Исправлена бесконечная рекурсия при повторном использовании неинициализированных экземпляров ctypes.CDLL.

  • bpo-29011: Fix an important omission by adding Deque to the typing module.

  • bpo-28969: Исправлено состояние гонки в реализации functools.lru_cache на C. KeyError могла быть вызвана, когда кэшированная функция с полным кэшем одновременно вызывалась из разных потоков с одинаковыми некэшированными аргументами.

  • bpo-29142: В urllib.request суффиксы в переменной окружения no_proxy с ведущими точками могли повторно соответствовать связанным именам хостов (например, .b.c соответствует a.b.c). Исправление Милана Оберкирха.

  • bpo-28961: Исправление помощника unittest.mock._Call: больше не игнорирует параметр name. Автор патча - Jiajun Huang.

  • bpo-29203: functools.lru_cache() now respects PEP 468 and preserves the order of keyword arguments. f(a=1, b=2) is now cached separately from f(b=2, a=1) since both calls could potentially give different results.

  • bpo-15812: inspect.getframeinfo() теперь корректно показывает первую строку контекста. Исправление Сэма Бриза.

  • bpo-29094: Offsets in a ZIP file created with extern file object and modes «w» and «x» now are relative to the start of the file.

  • bpo-29085: Allow random.Random.seed() to use high quality OS randomness rather than the pid and time.

  • bpo-29061: Fixed bug in secrets.randbelow() which would hang when given a negative input. Patch by Brendan Donegan.

  • bpo-29079: Предотвращение бесконечного цикла в pathlib.resolve() на Windows

  • bpo-13051: Исправлены ошибки рекурсии в больших или измененных по размеру curses.textpad.Textbox. Основано на патче Тихо Андерсена.

  • bpo-29119: Fix weakrefs in the pure python version of collections.OrderedDict move_to_end() method. Contributed by Andra Bogildea.

  • bpo-9770: предикаты curses.ascii теперь корректно работают с отрицательными целыми числами.

  • bpo-28427: старые ключи не должны удалять новые значения из WeakValueDictionary при сборе из другого потока.

  • bpo-28923: Удалите артефакты редактора из Tix.py.

  • bpo-29055: Neaten-up empty population error on random.choice() by suppressing the upstream exception.

  • bpo-28871: Исправлен сбой при деаллокации глубокого дерева ElementTree.

  • bpo-19542: Исправление ошибок в WeakValueDictionary.setdefault() и WeakValueDictionary.pop(), когда сбор GC происходит в другом потоке.

  • bpo-20191: Исправлен сбой в resource.prlimit() при передаче в качестве ограничений последовательности, не имеющей собственных элементов.

  • bpo-28779: multiprocessing.set_forkserver_preload() приведет к аварийному завершению процесса forkserver, если предварительно загруженный модуль инстанцирует некоторые объекты мультипроцессинга, такие как блокировки.

  • bpo-28847: dbm.dumb now supports reading read-only files and no longer writes the index file when it is not changed.

  • bpo-26937: Метод chown() класса tarfile.TarFile теперь не дает сбоев, когда модуль grp не может быть импортирован, как, например, на платформах Android.

IDLE

  • bpo-29071: IDLE colors f-string prefixes (but not invalid ur prefixes).

  • bpo-28572: Add 10% to coverage of IDLE’s test_configdialog. Update and augment description of the configuration system.

Windows

  • bpo-29579: Removes readme.txt from the installer

  • bpo-29326: Ignores blank lines in ._pth files (Patch by Alexey Izbyshev)

  • bpo-28164: Correctly handle special console filenames (patch by Eryk Sun)

  • bpo-29409: Implement PEP 529 for io.FileIO (Patch by Eryk Sun)

  • bpo-29392: Prevent crash when passing invalid arguments into msvcrt module.

  • bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun)

  • bpo-28896: Deprecate WindowsRegistryFinder and disable it by default.

C API

  • bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if Py_LIMITED_API is not set or set to the value between 0x03050400 and 0x03060000 (not including) or 0x03060100 or higher.

  • bpo-29083: Fixed the declaration of some public API functions. PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and Py_BuildValue() were not available in limited API of version < 3.3 when PY_SSIZE_T_CLEAN is defined.

  • bpo-29058: All stable API extensions added after Python 3.2 are now available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of the minimum Python version supporting this API.

Документация

  • bpo-28929: Link the documentation to its source file on GitHub.

  • bpo-25008: Document smtpd.py as effectively deprecated and add a pointer to aiosmtpd, a third-party asyncio-based replacement.

  • bpo-26355: Add canonical header link on each page to corresponding major version of the documentation. Patch by Matthias Bussonnier.

  • bpo-29349: Fix Python 2 syntax in code for building the documentation.

Тесты

  • bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip some tests of select.poll when running on macOS due to unresolved issues with the underlying system poll function on some macOS versions.

  • bpo-29571: Разрешить параметры с именами re.LOCALE и locale.getpreferredencoding(False) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line arguments.

  • bpo-28683: Fix the tests that bind() a unix socket and raise PermissionError on Android for a non-root user.

  • bpo-26939: Add the support.setswitchinterval() function to fix test_functools hanging on the Android armv7 qemu emulator.

Построить

  • bpo-27593: sys.version and the platform module python_build(), python_branch(), and python_revision() functions now use git information rather than hg when building from a repo.

  • bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k.

  • bpo-26851: Set Android compilation and link flags.

  • bpo-28768: Fix implicit declaration of function _setmode. Patch by Masayuki Yamamoto

  • bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat

  • bpo-23903: Added missed names to PC/python3.def.

  • bpo-28762: lockf() is available on Android API level 24, but the F_LOCK macro is not defined in android-ndk-r13.

  • bpo-28538: Fix the compilation error that occurs because if_nameindex() is available on Android API level 24, but the if_nameindex structure is not defined.

  • bpo-20211: Do not add the directory for installing C header files and the directory for installing object code libraries to the cross compilation search paths. Original patch by Thomas Petazzoni.

  • bpo-28849: Do not define sys.implementation._multiarch on Android.

Python 3.6.0 final

Release date: 2016-12-23

No changes since release candidate 2

Python 3.6.0 release candidate 2

Release date: 2016-12-16

Ядро и встроенные модули

  • bpo-28147: Исправлена утечка памяти в словарях с разделенными таблицами: setattr() не должна преобразовывать объединенную таблицу в разделенную. Патч написан INADA Naoki.

  • bpo-28990: Fix asyncio SSL hanging if connection is closed before handshake is completed. (Patch by HoHo-Ho)

Инструменты/демоверсии

  • bpo-28770: Fix python-gdb.py for fastcalls.

Windows

  • bpo-28896: Deprecate WindowsRegistryFinder.

Построить

  • bpo-28898: Prevent gdb build errors due to HAVE_LONG_LONG redefinition.

Python 3.6.0 release candidate 1

Release date: 2016-12-06

Ядро и встроенные модули

  • bpo-23722: Разрешить параметры с именами super() и __classcell__ с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28797: Изменение класса __dict__ внутри метода __set_name__ дескриптора, который используется внутри этого класса, больше не предотвращает вызов метода __set_name__ других дескрипторов.

  • bpo-28782: Разрешить параметры с именами yield from и bpo-26647 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-27030: Unknown escapes in re.sub() replacement template are allowed again. But they still are deprecated and will be disabled in 3.7.

  • bpo-28835: Исправление регрессии в warnings.catch_warnings(): вызов warnings.showwarning(), если он был переопределен внутри менеджера контекста.

  • bpo-27172: Чтобы помочь при обновлении с версии 2.7, ранее задокументированная депривация inspect.getfullargspec() была отменена. Это решение может быть пересмотрено после того, как ветка Python 2.7 перестанет официально поддерживаться.

  • bpo-26273: Разрешить параметры с именами socket.TCP_CONGESTION и socket.TCP_USER_TIMEOUT с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24142: Reading a corrupt config file left configparser in an invalid state. Original patch by Florian Höch.

  • bpo-28843: Fix asyncio C Task to handle exceptions __traceback__.

C API

  • bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.

Документация

  • bpo-23722: Разрешить параметры с именами __classcell__ и PEP 487 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Инструменты/демоверсии

  • bpo-28023: Fix python-gdb.py didn’t support new dict implementation.

Python 3.6.0 beta 4

Release date: 2016-11-21

Ядро и встроенные модули

  • bpo-28532: Показывать версию sys.version, когда опция -V предоставляется дважды.

  • bpo-27100: Предложение with теперь проверяет __enter__ перед проверкой __exit__. Это дает менее путаные сообщения об ошибках, когда оба метода отсутствуют. Исправление Джонатана Эллингтона.

  • bpo-28746: Исправьте метод set_inheritable() файлового дескриптора на платформах, где нет команд ioctl FIOCLEX и FIONCLEX.

  • bpo-26920: Исправление неполучения charset локали при инициализации интерпретатора, на платформах, не имеющих langinfo.

  • bpo-28648: Исправлен сбой в Py_DecodeLocale() в отладочной сборке на Mac OS X при декодировании астральных символов. Исправление от Xiang Zhang.

  • bpo-19398: Лишний слэш больше не добавляется к компонентам sys.path в случае пустых компонентов PYTHONPATH во время компиляции.

  • bpo-28665: Повышение скорости работы опкода STORE_DEREF на 40%.

  • bpo-28583: PyDict_SetDefault не объединял таблицу разбиения, когда это было необходимо. Исправление от Xiang Zhang.

  • bpo-27243: Change PendingDeprecationWarning -> DeprecationWarning. As it was agreed in the issue, __aiter__ returning an awaitable should result in PendingDeprecationWarning in 3.5 and in DeprecationWarning in 3.6.

  • bpo-26182: Исправьте утечку в коде, вызывающем DeprecationWarning.

  • bpo-28721: Исправьте асинхронные генераторы aclose() и athrow() для правильной обработки распространения StopAsyncIteration.

Библиотека

  • bpo-28752: Восстановлены методы __reduce__() для объектов datetime.

  • bpo-28727: Шаблоны регулярных выражений, объекты _sre.SRE_Pattern, создаваемые re.compile(), становятся сопоставимыми (только операторы x==y и x!=y). Это изменение должно исправить bpo-18383: не дублировать фильтры предупреждений при перезагрузке модуля warnings (обычно это делается только в модульных тестах).

  • bpo-20572: The subprocess.Popen.wait method’s undocumented endtime parameter now raises a DeprecationWarning.

  • bpo-25659: В ctypes предотвратите падение при вызове методов from_buffer() и from_buffer_copy() для абстрактных классов типа Array.

  • bpo-19717: Заставляет Path.resolve() успешно работать с несуществующими путями. Исправление от Вайраски Кока

  • bpo-28563: Исправлена возможность DoS и выполнения произвольного кода при обработке множественного выбора формы в модуле gettext. Парсер выражений теперь поддерживает точный синтаксис, поддерживаемый GNU gettext.

  • bpo-28387: Исправлено возможное падение деаллокатора _io.TextIOWrapper, когда сборщик мусора вызывался в другом потоке. Основано на исправлении Себастьяна Куфре.

  • bpo-28600: Optimize loop.call_soon.

  • bpo-28613: Fix get_event_loop() return the current loop if called from coroutines/callbacks.

  • bpo-28634: Fix asyncio.isfuture() to support unittest.Mock.

  • bpo-26081: Fix refleak in _asyncio.Future.__iter__().throw.

  • bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin Mayfield.

  • bpo-28652: Make loop methods reject socket kinds they do not support.

  • bpo-28653: Fix a refleak in functools.lru_cache.

  • bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects.

  • bpo-28704: Fix create_unix_server to support Path-like objects (PEP 519).

  • bpo-28720: Add collections.abc.AsyncGenerator.

Документация

  • bpo-28513: Documented command-line interface of zipfile.

Тесты

  • bpo-28666: Now test.support.rmtree is able to remove unwritable or unreadable directories.

  • bpo-23839: Various caches now are cleared before running every test file.

Построить

  • bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and Michael Haubenwallner.

  • bpo-26359: Rename –with-optimiations to –enable-optimizations.

  • bpo-28676: Prevent missing „getentropy“ declaration warning on macOS. Patch by Gareth Rees.

Python 3.6.0 beta 3

Release date: 2016-10-31

Ядро и встроенные модули

  • bpo-28128: Предупреждение об устаревании недопустимых управляющих последовательностей str и byte теперь выводит более точную информацию о месте возникновения ошибки. Исправление Сергея Сторчака и Эрика Смита.

  • bpo-28509: dict.update() больше не выделяет ненужный большой объем памяти.

  • bpo-28426: Исправлен потенциальный сбой в PyUnicode_AsDecodedObject() в отладочной сборке.

  • bpo-28517: Исправлена ошибка of-by-one в оптимизаторе peephole, которая приводила к сохранению недостижимого кода.

  • bpo-28214: Улучшено сообщение об исключениях для проблемных атрибутов __set_name__.

  • bpo-23782: Исправлена возможная утечка памяти в _PyTraceback_Add() и потеря исключений в PyTraceBack_Here().

  • bpo-28471: Fix «Python memory allocator called without holding the GIL» crash in socket.setblocking.

Библиотека

  • bpo-27517: Компрессор и декомпрессор LZMA больше не вызывают исключения, если им дважды передаются пустые данные. Исправление от Бенджамина Фогла.

  • bpo-28549: Исправлена ошибка segfault в addch() в curses с ncurses6.

  • bpo-28449: tarfile.open() с режимом «r» или «r:» теперь пытается открыть tar-файл со сжатием, прежде чем пытаться открыть его без сжатия. В противном случае с вероятностью 50% он терпел неудачу при ignore_zeros=True.

  • bpo-23262: Модуль webbrowser теперь поддерживает Firefox 36+ и производные браузеры. Основано на патче Олега Бройтмана.

  • bpo-27939: Исправлены ошибки в tkinter.ttk.LabeledScale и tkinter.Scale, вызванные внутренним представлением шкалы как float-значения в Tk. tkinter.IntVar теперь работает, если float-значение установлено в базовую переменную Tk.

  • bpo-18844: The various ways of specifying weights for random.choices() now produce the same result sequences.

  • bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at the start of new line after printing a month’s calendar. Patch by Xiang Zhang.

  • bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces. Based on patch by Kaarle Ritvanen.

  • bpo-28353: os.fwalk() no longer fails on broken links.

  • bpo-28430: Fix iterator of C implemented asyncio.Future doesn’t accept non-None value is passed to it.send(val).

  • bpo-27025: Generated names for Tkinter widgets now start by the «!» prefix for readability.

  • bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a workaround to Tix library bug.

  • bpo-28488: shutil.make_archive() no longer adds entry «./» to ZIP archive.

  • bpo-25953: re.sub() now raises an error for invalid numerical group reference in replacement template even if the pattern is not found in the string. Error message for invalid group reference now includes the group index and the position of the reference. Based on patch by SilentGhost.

  • bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by Mariatta Wijaya.

  • bpo-28448: Fix C implemented asyncio.Future didn’t work on Windows.

  • bpo-28480: Fix error building socket module when multithreading is disabled.

  • bpo-24452: Make webbrowser support Chrome on Mac OS X.

  • bpo-20766: Fix references leaked by pdb in the handling of SIGINT handlers.

  • bpo-28492: Fix how StopIteration exception is raised in _asyncio.Future.

  • bpo-28500: Fix asyncio to handle async gens GC from another thread.

  • bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children are done. Patch by Johannes Ebke.

  • bpo-26796: Don’t configure the number of workers for default threadpool executor. Initial patch by Hans Lawrenz.

  • bpo-28544: Implement asyncio.Task in C.

Windows

  • bpo-28522: Fixes mishandled buffer reallocation in getpathp.c

Построить

  • bpo-28444: Fix missing extensions modules when cross compiling.

  • bpo-28208: Update Windows build and OS X installers to use SQLite 3.14.2.

  • bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.

Тесты

  • bpo-26944: Fix test_posix for Android where „id -G“ is entirely wrong or missing the effective gid.

  • bpo-28409: regrtest: fix the parser of command line arguments.

Python 3.6.0 beta 2

Release date: 2016-10-10

Ядро и встроенные модули

  • bpo-28183: Оптимизация и очистка итерации диктовки.

  • bpo-26081: Добавлена реализация asyncio.Future на языке C. Оригинальный патч Юрия Селиванова.

  • bpo-28379: Добавлены проверки на вменяемость и тесты для PyUnicode_CopyCharacters(). Исправление от Xiang Zhang.

  • bpo-28376: Тип итератора дальнего действия теперь регистрируется как Iterator. Исправление от Орена Милмана.

  • bpo-28376: Creating instances of range_iterator by calling range_iterator type now is deprecated. Patch by Oren Milman.

  • bpo-28376: The constructor of range_iterator now checks that step is not 0. Patch by Oren Milman.

  • bpo-26906: Разрешение специальных методов неинициализированного типа теперь вызывает неявную инициализацию типа вместо отказа.

  • bpo-18287: PyType_Ready() теперь проверяет, что tp_name не является NULL. Автор оригинального патча - Никлас Коеп.

  • bpo-24098: Исправлено возможное падение при изменении AST в процессе компиляции.

  • bpo-28201: Дикт уменьшает вероятность возникновения второго конфликта в хэш-таблице, когда хэши имеют одинаковые младшие биты.

  • bpo-28350: Строковые константы с нулевым символом больше не интернируются.

  • bpo-26617: Исправление сбоя при запуске GC во время обратного вызова weakref.

  • bpo-27942: Строковые константы теперь рекурсивно интернализируются в кортежах и фростенсетах.

  • bpo-21578: Исправлено вводящее в заблуждение сообщение об ошибке при вызове ImportError с недопустимыми ключевыми словами args.

  • bpo-28203: Исправление неправильного типа в сообщении об ошибке complex(1.0, {2:3}). Исправление от Soumya Sharma.

  • bpo-28086: Одиночный аргумент var-позиции подтипа tuple был передан в функцию, определенную на языке C, невредимым. Теперь он преобразуется в точный кортеж.

  • bpo-28214: Теперь __set_name__ ищется в классе, а не в экземпляре.

  • bpo-27955: Откат при чтении устройства /dev/urandom, когда системный вызов getrandom() терпит неудачу с EPERM, например, при блокировке SECCOMP.

  • bpo-28192: Не импортируйте readline в изолированном режиме.

  • Обновите внутренние базы данных юникода до версии 9.0.0.

  • bpo-28131: Исправление регрессии в zipimport’s compile_source(). zipimport должен использовать тот же уровень оптимизации, что и интерпретатор.

  • bpo-28126: Замените Py_MEMCPY на memcpy(). Visual Studio может правильно оптимизировать memcpy().

  • bpo-28120: Исправьте dict.pop() для словаря split при попытке удалить «ожидающий ключ» (еще не вставленный в split-таблицу). Исправление от Xiang Zhang.

  • bpo-26182: Выдавать предупреждение об обесценивании при использовании ключевых слов async и await в качестве имени переменной/атрибута/класса/функции.

Библиотека

  • bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by Eryk Sun.

  • bpo-28317: The disassembler now decodes FORMAT_VALUE argument.

  • bpo-26293: Fixed writing ZIP files that starts not from the start of the file. Offsets in ZIP file now are relative to the start of the archive in conforming to the specification.

  • bpo-28380: unittest.mock Mock autospec functions now properly support assert_called, assert_not_called, and assert_called_once.

  • bpo-27181: remove statistics.geometric_mean and defer until 3.7.

  • bpo-28229: lzma module now supports pathlib.

  • bpo-28321: Fixed writing non-BMP characters with binary format in plistlib.

  • bpo-28225: bz2 module now supports pathlib. Initial patch by Ethan Furman.

  • bpo-28227: gzip now supports pathlib. Patch by Ethan Furman.

  • bpo-27358: Optimized merging var-keyword arguments and improved error message when passing a non-mapping as a var-keyword argument.

  • bpo-28257: Improved error message when passing a non-iterable as a var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL.

  • bpo-28322: Fixed possible crashes when unpickle itertools objects from incorrect pickle data. Based on patch by John Leitch.

  • bpo-28228: imghdr now supports pathlib.

  • bpo-28226: compileall now supports pathlib.

  • bpo-28314: Fix function declaration (C flags) for the getiterator() method of xml.etree.ElementTree.Element.

  • bpo-28148: Stop using localtime() and gmtime() in the time module. Introduced platform independent _PyTime_localtime API that is similar to POSIX localtime_r, but available on all platforms. Patch by Ed Schouten.

  • bpo-28253: Fixed calendar functions for extreme months: 0001-01 and 9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so that they don’t call itermonthdates() which can cause datetime.date under/overflow.

  • bpo-28275: Fixed possible use after free in the decompress() methods of the LZMADecompressor and BZ2Decompressor classes. Original patch by John Leitch.

  • bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation() if pass invalid string-like object as a name. Patch by Xiang Zhang.

  • bpo-18844: random.choices() now has k as a keyword-only argument to improve the readability of common cases and come into line with the signature used in other languages.

  • bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py. Patch by Madison May.

  • bpo-27611: Fixed support of default root window in the tkinter.tix module. Added the master parameter in the DisplayStyle constructor.

  • bpo-27348: In the traceback module, restore the formatting of exception messages like «Exception: None». This fixes a regression introduced in 3.5a2.

  • bpo-25651: Allow false values to be used for msg parameter of subTest().

  • bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is interrupted by a signal and a signal handler raises a Python exception.

  • bpo-28200: Fix memory leak on Windows in the os module (fix path_converter() function).

  • bpo-25400: RobotFileParser now correctly returns default values for crawl_delay and request_rate. Initial patch by Peter Wirtz.

  • bpo-27932: Prevent memory leak in win32_ver().

  • Fix UnboundLocalError in socket._sendfile_use_sendfile.

  • bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of os.stat(). Patch by Eryk Sun.

  • bpo-22493: Warning message emitted by using inline flags in the middle of regular expression now contains a (truncated) regex pattern. Patch by Tim Graham.

  • bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an empty bytestring is passed.

  • bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.

  • bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by Gergely Imreh and Markus Holtermann.

  • bpo-28114: Fix a crash in parse_envlist() when env contains byte strings. Patch by Eryk Sun.

  • bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and binascii.a2b_qp().

  • bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by Kevin Conway.

  • bpo-28174: Handle when SO_REUSEPORT isn’t properly supported. Patch by Seth Michael Larson.

  • bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by iceboy.

  • bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.

  • bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.

  • bpo-27759: Fix selectors incorrectly retain invalid file descriptors. Patch by Mark Williams.

  • bpo-28368: Refuse monitoring processes if the child watcher has no loop attached. Patch by Vincent Michel.

  • bpo-28369: Raise RuntimeError when transport’s FD is used with add_reader, add_writer, etc.

  • bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг Марк.

  • bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.

  • bpo-28372: Fix asyncio to support formatting of non-python coroutines.

  • bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг Марк.

  • bpo-27972: Prohibit Tasks to await on themselves.

Windows

  • bpo-28402: Adds signed catalog files for stdlib on Windows.

  • bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk Sun)

  • bpo-28251: Improvements to help manuals on Windows.

  • bpo-28110: launcher.msi has different product codes between 32-bit and 64-bit

  • bpo-28161: Opening CON for write access fails

  • bpo-28162: WindowsConsoleIO readall() fails if first line starts with Ctrl+Z

  • bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle

  • bpo-28164: _PyIO_get_console_type fails for various paths

  • bpo-28137: Renames Windows path file to ._pth

  • bpo-28138: Windows ._pth file should allow import site

C API

  • bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(), PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and PyUnicode_AsEncodedUnicode().

Построить

  • bpo-28258: Fixed build with Estonian locale (python-config and distclean targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis.

  • bpo-26661: setup.py now detects system libffi with multiarch wrapper.

  • bpo-15819: Remove redundant include search directory option for building outside the source tree.

Тесты

  • bpo-28217: Adds _testconsole module to test console input.

Python 3.6.0 beta 1

Release date: 2016-09-12

Ядро и встроенные модули

  • bpo-23722: The __class__ cell used by zero-argument super() is now initialized from type.__new__ rather than __build_class__, so class methods relying on that will now work correctly when called from metaclass methods during class creation. Patch by Martin Teichmann.

  • bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is compiled with NSMALLPOSINTS = 0.

  • bpo-27080: Implement formatting support for PEP 515. Initial patch by Chris Angelico.

  • bpo-27199: In tarfile, expose copyfileobj bufsize to improve throughput. Patch by Jason Fried.

  • bpo-27948: In f-strings, only allow backslashes inside the braces (where the expressions are). This is a breaking change from the 3.6 alpha releases, where backslashes are allowed anywhere in an f-string. Also, require that expressions inside f-strings be enclosed within literal braces, and not escapes like f'\x7b"hi"\x7d'.

  • bpo-28046: Remove platform-specific directories from sys.path.

  • bpo-28071: Add early-out for differencing from an empty set.

  • bpo-25758: Prevents zipimport from unnecessarily encoding a filename (patch by Eryk Sun)

  • bpo-25856: The __module__ attribute of extension classes and functions now is interned. This leads to more compact pickle data with protocol 4.

  • bpo-27213: Rework CALL_FUNCTION* opcodes to produce shorter and more efficient bytecode. Patch by Demur Rumed, design by Serhiy Storchaka, reviewed by Serhiy Storchaka and Victor Stinner.

  • bpo-26331: Implement tokenizing support for PEP 515. Patch by Georg Brandl.

  • bpo-27999: Make «global after use» a SyntaxError, and ditto for nonlocal. Patch by Ivan Levkivskyi.

  • bpo-28003: Implement PEP 525 – Asynchronous Generators.

  • bpo-27985: Implement PEP 526 – Syntax for Variable Annotations. Patch by Ivan Levkivskyi.

  • bpo-26058: Add a new private version to the builtin dict type, incremented at each dictionary creation and at each dictionary change. Implementation of the PEP 509.

  • bpo-27364: A backslash-character pair that is not a valid escape sequence now generates a DeprecationWarning. Patch by Emanuel Barry.

  • bpo-27350: dict implementation is changed like PyPy. It is more compact and preserves insertion order. (Concept developed by Raymond Hettinger and patch by Inada Naoki.)

  • bpo-27911: Remove unnecessary error checks in exec_builtin_or_dynamic().

  • bpo-27078: Added BUILD_STRING opcode. Optimized f-strings evaluation.

  • bpo-17884: Python now requires systems with inttypes.h and stdint.h

  • bpo-27961: Разрешить параметры с именами long long и long long с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27355: Removed support for Windows CE. It was never finished, and Windows CE is no longer a relevant platform for Python.

  • Implement PEP 523.

  • bpo-27870: A left shift of zero by a large integer no longer attempts to allocate large amounts of memory.

  • bpo-25402: In int-to-decimal-string conversion, improve the estimate of the intermediate memory required, and remove an unnecessarily strict overflow check. Patch by Serhiy Storchaka.

  • bpo-27214: In long_invert, be more careful about modifying object returned by long_add, and remove an unnecessary check for small longs. Thanks Oren Milman for analysis and patch.

  • bpo-27506: Support passing the bytes/bytearray.translate() «delete» argument by keyword.

  • bpo-27812: Properly clear out a generator’s frame’s backreference to the generator to prevent crashes in frame.clear().

  • bpo-27811: Fix a crash when a coroutine that has not been awaited is finalized with warnings-as-errors enabled.

  • bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after use of „def“ in _PyState_AddModule(). Initial patch by Christian Heimes.

  • bpo-27792: Разрешить параметры с именами bool и int с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26984: int() now always returns an instance of exact int.

  • bpo-25604: Fix a minor bug in integer true division; this bug could potentially have caused off-by-one-ulp results on platforms with unreliable ldexp implementations.

  • bpo-24254: Make class definition namespace ordered by default.

  • bpo-27662: Разрешить параметры с именами List_New и Py_SIZE_MAX с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27782: Разрешить параметры с именами m_methods и Py_create_mod с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27936: The round() function accepted a second None argument for some types but not for others. Fixed the inconsistency by accepting None for all numeric types.

  • bpo-27487: Warn if a submodule argument to «python -m» or runpy.run_module() is found in sys.modules after parent packages are imported, but before the submodule is executed.

  • bpo-27157: Make only type() itself accept the one-argument form. Patch by Eryk Sun and Emanuel Barry.

  • bpo-27558: Fix a SystemError in the implementation of «raise» statement. In a brand new thread, raise a RuntimeError since there is no active exception to reraise. Patch written by Xiang Zhang.

  • bpo-28008: Implement PEP 530 – asynchronous comprehensions.

  • bpo-27942: Fix memory leak in codeobject.c

Библиотека

  • bpo-28732: Fix crash in os.spawnv() with no elements in args

  • bpo-28485: Always raise ValueError for negative compileall.compile_dir(workers=…) parameter, even when multithreading is unavailable.

  • bpo-28037: Use sqlite3_get_autocommit() instead of setting Connection->inTransaction manually.

  • bpo-25283: Attributes tm_gmtoff and tm_zone are now available on all platforms in the return values of time.localtime() and time.gmtime().

  • bpo-24454: Regular expression match object groups are now accessible using __getitem__. «mo[x]» is equivalent to «mo.group(x)».

  • bpo-10740: sqlite3 no longer implicitly commit an open transaction before DDL statements.

  • bpo-17941: Add a module parameter to collections.namedtuple().

  • bpo-22493: Inline flags now should be used only at the start of the regular expression. Deprecation warning is emitted if uses them in the middle of the regular expression.

  • bpo-26885: xmlrpc now supports unmarshalling additional data types used by Apache XML-RPC implementation for numerics and None.

  • bpo-28070: Fixed parsing inline verbose flag in regular expressions.

  • bpo-19500: Add client-side SSL session resumption to the ssl module.

  • bpo-28022: Deprecate ssl-related arguments in favor of SSLContext. The deprecation include manual creation of SSLSocket and certfile/keyfile (or similar) in ftplib, httplib, imaplib, smtplib, poplib and urllib.

  • bpo-28043: SSLContext has improved default settings: OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_COMPRESSION, OP_CIPHER_SERVER_PREFERENCE, OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE and HIGH ciphers without MD5.

  • bpo-24693: Changed some RuntimeError’s in the zipfile module to more appropriate types. Improved some error messages and debugging output.

  • bpo-17909: Разрешить параметры с именами json.load и json.loads с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27137: the pure Python fallback implementation of functools.partial now matches the behaviour of its accelerated C counterpart for subclassing, pickling and text representation purposes. Patch by Emanuel Barry and Serhiy Storchaka.

  • Fix possible integer overflows and crashes in the mmap module with unusual usage patterns.

  • bpo-1703178: Fix the ability to pass the –link-objects option to the distutils build_ext command.

  • bpo-28019: itertools.count() no longer rounds non-integer step in range between 1.0 and 2.0 to 1.

  • bpo-18401: Pdb now supports the „readrc“ keyword argument to control whether .pdbrc files should be read. Patch by Martin Matusiak and Sam Kimbrel.

  • bpo-25969: Update the lib2to3 grammar to handle the unpacking generalizations added in 3.5.

  • bpo-14977: mailcap now respects the order of the lines in the mailcap files («first match»), as required by RFC 1542. Patch by Michael Lazar.

  • bpo-28082: Convert re flag constants to IntFlag.

  • bpo-28025: Convert all ssl module constants to IntEnum and IntFlags. SSLContext properties now return flags and enums.

  • bpo-23591: Add Flag, IntFlag, and auto() to enum module.

  • bpo-433028: Added support of modifier spans in regular expressions.

  • bpo-24594: Validates persist parameter when opening MSI database

  • bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes (Patch by Duane Griffin. Reviewed and approved by Stefan Behnel.)

  • bpo-28047: Fixed calculation of line length used for the base64 CTE in the new email policies.

  • bpo-27576: Fix call order in OrderedDict.__init__().

  • email.generator.DecodedGenerator now supports the policy keyword.

  • bpo-28027: Remove undocumented modules from Lib/plat-*: IN, CDROM, DLFCN, TYPES, CDIO, and STROPTS.

  • bpo-27445: Don’t pass str(_charset) to MIMEText.set_payload(). Patch by Claude Paroz.

  • bpo-24277: The new email API is no longer provisional, and the docs have been reorganized and rewritten to emphasize the new API.

  • bpo-22450: urllib now includes an Accept: */* header among the default headers. This makes the results of REST API requests more consistent and predictable especially when proxy servers are involved.

  • lib2to3.pgen3.driver.load_grammar() now creates a stable cache file between runs given the same Grammar.txt input regardless of the hash randomization setting.

  • bpo-28005: Allow ImportErrors in encoding implementation to propagate.

  • bpo-26667: Support path-like objects in importlib.util.

  • bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers in the «ctypes» and «array» modules.

  • bpo-22233: Break email header lines only on the RFC specified CR and LF characters, not on arbitrary unicode line breaks. This also fixes a bug in HTTP header parsing.

  • bpo-27331: The email.mime classes now all accept an optional policy keyword.

  • bpo-27988: Fix email iter_attachments incorrect mutation of payload list.

  • bpo-16113: Add SHA-3 and SHAKE support to hashlib module.

  • Eliminate a tautological-pointer-compare warning in _scproxy.c.

  • bpo-27776: Разрешить параметры с именами os.urandom() и PEP 524 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27778: Разрешить параметры с именами getrandom() и os.getrandom() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27691: Fix ssl module’s parsing of GEN_RID subject alternative name fields in X.509 certs.

  • bpo-18844: Add random.choices().

  • bpo-25761: Improved error reporting about truncated pickle data in C implementation of unpickler. UnpicklingError is now raised instead of AttributeError and ValueError in some cases.

  • bpo-26798: Add BLAKE2 (blake2b and blake2s) to hashlib.

  • bpo-26032: Optimized globbing in pathlib by using os.scandir(); it is now about 1.5–4 times faster.

  • bpo-25596: Optimized glob() and iglob() functions in the glob module; they are now about 3–6 times faster.

  • bpo-27928: Add scrypt (password-based key derivation function) to hashlib module (requires OpenSSL 1.1.0).

  • bpo-27850: Remove 3DES from ssl module’s default cipher list to counter measure sweet32 attack (CVE-2016-2183).

  • bpo-27766: Add ChaCha20 Poly1305 to ssl module’s default cipher list. (Required OpenSSL 1.1.0 or LibreSSL).

  • bpo-25387: Check return value of winsound.MessageBeep.

  • bpo-27866: Add SSLContext.get_ciphers() method to get a list of all enabled ciphers.

  • bpo-27744: Add AF_ALG (Linux Kernel crypto) to socket module.

  • bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0.

  • bpo-11620: Fix support for SND_MEMORY in winsound.PlaySound. Based on a patch by Tim Lesher.

  • bpo-11734: Add support for IEEE 754 half-precision floats to the struct module. Based on a patch by Eli Stevens.

  • bpo-27919: Deprecated extra_path distribution option in distutils packaging.

  • bpo-23229: Разрешить параметры с именами cmath и cmath.inf с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27842: The csv.DictReader now returns rows of type OrderedDict. (Contributed by Steve Holden.)

  • Remove support for passing a file descriptor to os.access. It never worked but previously didn’t raise.

  • bpo-12885: Fix error when distutils encounters symlink.

  • bpo-27881: Fixed possible bugs when setting sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang.

  • bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory creates not a cursor. Patch by Xiang Zhang.

  • bpo-19884: Avoid spurious output on OS X with Gnu Readline.

  • bpo-27706: Restore deterministic behavior of random.Random().seed() for string seeds using seeding version 1. Allows sequences of calls to random() to exactly match those obtained in Python 2. Patch by Nofar Schnider.

  • bpo-10513: Fix a regression in Connection.commit(). Statements should not be reset after a commit.

  • bpo-12319: Chunked transfer encoding support added to http.client.HTTPConnection requests. The urllib.request.AbstractHTTPHandler class does not enforce a Content-Length header any more. If a HTTP request has a file or iterable body, but no Content-Length header, the library now falls back to use chunked transfer-encoding.

  • A new version of typing.py from https://github.com/python/typing: - Collection (only for 3.6) (bpo-27598) - Add FrozenSet to __all__ (upstream #261) - fix crash in _get_type_vars() (upstream #259) - Remove the dict constraint in ForwardRef._eval_type (upstream #252)

  • bpo-27832: Разрешить параметры с именами _normalize и Fraction с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27539: Fix unnormalised Fraction.__pow__ result in the case of negative exponent and negative base.

  • bpo-21718: cursor.description is now available for queries using CTEs.

  • bpo-27819: In distutils sdists, simply produce the «gztar» (gzipped tar format) distributions on all platforms unless «formats» is supplied.

  • bpo-2466: posixpath.ismount now correctly recognizes mount points which the user does not have permission to access.

  • bpo-9998: On Linux, ctypes.util.find_library now looks in LD_LIBRARY_PATH for shared libraries.

  • bpo-27573: exit message for code.interact is now configurable.

  • bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to Paulo Andrade and Petr Viktorin for the analysis and patch.

  • bpo-6766: Distributed reference counting added to multiprocessing to support nesting of shared values / proxy objects.

  • bpo-21201: Improves readability of multiprocessing error message. Thanks to Wojciech Walczak for patch.

  • asyncio: Add set_protocol / get_protocol to Transports.

  • bpo-27456: asyncio: Set TCP_NODELAY by default.

IDLE

  • bpo-15308: Add „interrupt execution“ (^C) to Shell menu. Patch by Roger Serwy, updated by Bayard Randel.

  • bpo-27922: Stop IDLE tests from „flashing“ gui widgets on the screen.

  • bpo-27891: Consistently group and sort imports within idlelib modules.

  • bpo-17642: add larger font sizes for classroom projection.

  • Add version to title of IDLE help window.

  • bpo-25564: In section on IDLE – console differences, mention that using exec means that __builtins__ is defined for each statement.

  • bpo-27821: Fix 3.6.0a3 regression that prevented custom key sets from being selected when no custom theme was defined.

C API

  • bpo-26900: Excluded underscored names and other private API from limited API.

  • bpo-26027: Add support for path-like objects in PyUnicode_FSConverter() & PyUnicode_FSDecoder().

Тесты

  • bpo-27427: Additional tests for the math module. Patch by Francisco Couzo.

  • bpo-27953: Skip math and cmath tests that fail on OS X 10.4 due to a poor libm implementation of tan.

  • bpo-26040: Improve test_math and test_cmath coverage and rigour. Patch by Jeff Allen.

  • bpo-27787: Call gc.collect() before checking each test for «dangling threads», since the dangling threads are weak references.

Построить

  • bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach)

  • bpo-27705: Update message in validate_ucrtbase.py

  • bpo-27976: Deprecate building _ctypes with the bundled copy of libffi on non-OSX UNIX platforms.

  • bpo-27983: Cause lack of llvm-profdata tool when using clang as required for PGO linking to be a configure time error rather than make time when --with-optimizations is enabled. Also improve our ability to find the llvm-profdata tool on MacOS and some Linuxes.

  • bpo-21590: Support for DTrace and SystemTap probes.

  • bpo-26307: The profile-opt build now applies PGO to the built-in modules.

  • bpo-26359: Add the –with-optimizations flag to turn on LTO and PGO build support when available.

  • bpo-27917: Set platform triplets for Android builds.

  • bpo-25825: Update references to the $(LIBPL) installation path on AIX. This path was changed in 3.2a4.

  • Update OS X installer to use SQLite 3.14.1 and XZ 5.2.2.

  • bpo-21122: Fix LTO builds on OS X.

  • bpo-17128: Build OS X installer with a private copy of OpenSSL. Also provide a sample Install Certificates command script to install a set of root certificates from the third-party certifi module.

Инструменты/демоверсии

  • bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the current «re» module, avoid invalid Python backslash escapes, and fix a bug parsing escaped C quote signs.

Windows

  • bpo-28065: Update xz dependency to 5.2.2 and build it from source.

  • bpo-25144: Ensures TargetDir is set before continuing with custom install.

  • bpo-1602: Windows console doesn’t input or print Unicode (PEP 528)

  • bpo-27781: Change file system encoding on Windows to UTF-8 (PEP 529)

  • bpo-27731: Opt-out of MAX_PATH on Windows 10

  • bpo-6135: Adds encoding and errors parameters to subprocess.

  • bpo-27959: Adds oem encoding, alias ansi to mbcs, move aliasmbcs to codec lookup.

  • bpo-27982: The functions of the winsound module now accept keyword arguments.

  • bpo-20366: Build full text search support into SQLite on Windows.

  • bpo-27756: Adds new icons for Python files and processes on Windows. Designs by Cherry Wang.

  • bpo-27883: Update sqlite to 3.14.1.0 on Windows.

Python 3.6.0 alpha 4

Release date: 2016-08-15

Ядро и встроенные модули

  • bpo-27704: Optimized creating bytes and bytearray from byte-like objects and iterables. Speed up to 3 times for short objects. Original patch by Naoki Inada.

  • bpo-26823: Large sections of repeated lines in tracebacks are now abbreviated as «[Previous line repeated {count} more times]» by the builtin traceback rendering. Patch by Emanuel Barry.

  • bpo-27574: Decreased an overhead of parsing keyword arguments in functions implemented with using Argument Clinic.

  • bpo-22557: Now importing already imported modules is up to 2.5 times faster.

  • bpo-17596: Include <wincrypt.h> to help with Min GW building.

  • bpo-17599: On Windows, rename the privately defined REPARSE_DATA_BUFFER structure to avoid conflicting with the definition from Min GW.

  • bpo-27507: Add integer overflow check in bytearray.extend(). Patch by Xiang Zhang.

  • bpo-27581: Don’t rely on wrapping for overflow check in PySequence_Tuple(). Patch by Xiang Zhang.

  • bpo-1621: Avoid signed integer overflow in list and tuple operations. Patch by Xiang Zhang.

  • bpo-27419: Standard __import__() no longer look up «__import__» in globals or builtins for importing submodules or «from import». Fixed a crash if raise a warning about unabling to resolve package from __spec__ or __package__.

  • bpo-27083: Respect the PYTHONCASEOK environment variable under Windows.

  • bpo-27514: Make having too many statically nested blocks a SyntaxError instead of SystemError.

  • bpo-27366: Implemented PEP 487 (Simpler customization of class creation). Upon subclassing, the __init_subclass__ classmethod is called on the base class. Descriptors are initialized with __set_name__ after class creation.

Библиотека

  • bpo-26027: Разрешить параметры с именами PEP 519 и bpo-27524 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27598: Add Collections to collections.abc. Patch by Ivan Levkivskyi, docs by Neil Girdhar.

  • bpo-25958: Support «anti-registration» of special methods from various ABCs, like __hash__, __iter__ or __len__. All these (and several more) can be set to None in an implementation class and the behavior will be as if the method is not defined at all. (Previously, this mechanism existed only for __hash__, to make mutable classes unhashable.) Code contributed by Andrew Barnert and Ivan Levkivskyi.

  • bpo-16764: Support keyword arguments to zlib.decompress(). Patch by Xiang Zhang.

  • bpo-27736: Prevent segfault after interpreter re-initialization due to ref count problem introduced in code for bpo-27038 in 3.6.0a3. Patch by Xiang Zhang.

  • bpo-25628: The verbose and rename parameters for collections.namedtuple are now keyword-only.

  • bpo-12345: Add mathematical constant tau to math and cmath. See also PEP 628.

  • bpo-26823: traceback.StackSummary.format now abbreviates large sections of repeated lines as «[Previous line repeated {count} more times]» (this change then further affects other traceback display operations in the module). Patch by Emanuel Barry.

  • bpo-27664: Add to concurrent.futures.thread.ThreadPoolExecutor() the ability to specify a thread name prefix.

  • bpo-27181: Add geometric_mean and harmonic_mean to statistics module.

  • bpo-27573: code.interact now prints an message when exiting.

  • bpo-6422: Add autorange method to timeit.Timer objects.

  • bpo-27773: Correct some memory management errors server_hostname in _ssl.wrap_socket().

  • bpo-26750: unittest.mock.create_autospec() now works properly for subclasses of property() and other data descriptors. Removes the never publicly used, never documented unittest.mock.DescriptorTypes tuple.

  • bpo-26754: Undocumented support of general bytes-like objects as path in compile() and similar functions is now deprecated.

  • bpo-26800: Undocumented support of general bytes-like objects as paths in os functions is now deprecated.

  • bpo-26981: Add _order_ compatibility shim to enum.Enum for Python 2/3 code bases.

  • bpo-27661: Added tzinfo keyword argument to datetime.combine.

  • In the curses module, raise an error if window.getstr() or window.instr() is passed a negative value.

  • bpo-27783: Fix possible usage of uninitialized memory in operator.methodcaller.

  • bpo-27774: Fix possible Py_DECREF on unowned object in _sre.

  • bpo-27760: Fix possible integer overflow in binascii.b2a_qp.

  • bpo-27758: Fix possible integer overflow in the _csv module for large record lengths.

  • bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates that the script is in CGI mode.

  • bpo-7063: Remove dead code from the «array» module’s slice handling. Patch by Chuck.

  • bpo-27656: Do not assume sched.h defines any SCHED_* constants.

  • bpo-27130: In the «zlib» module, fix handling of large buffers (typically 4 GiB) when compressing and decompressing. Previously, inputs were limited to 4 GiB, and compression and decompression operations did not properly handle results of 4 GiB.

  • bpo-24773: Implemented PEP 495 (Local Time Disambiguation).

  • Expose the EPOLLEXCLUSIVE constant (when it is defined) in the select module.

  • bpo-27567: Expose the EPOLLRDHUP and POLLRDHUP constants in the select module.

  • bpo-1621: Avoid signed int negation overflow in the «audioop» module.

  • bpo-27533: Release GIL in nt._isdir

  • bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original patch by Alexandre Vassalotti.

  • bpo-27522: Avoid an unintentional reference cycle in email.feedparser.

  • bpo-27512: Fix a segfault when os.fspath() called an __fspath__() method that raised an exception. Patch by Xiang Zhang.

IDLE

  • bpo-27714: text_textview and test_autocomplete now pass when re-run in the same process. This occurs when test_idle fails when run with the -w option but without -jn. Fix warning from test_config.

  • bpo-27621: Put query response validation error messages in the query box itself instead of in a separate messagebox. Redo tests to match. Add Mac OSX refinements. Original patch by Mark Roseman.

  • bpo-27620: Escape key now closes Query box as cancelled.

  • bpo-27609: IDLE: tab after initial whitespace should tab, not autocomplete. This fixes problem with writing docstrings at least twice indented.

  • bpo-27609: Explicitly return None when there are also non-None returns. In a few cases, reverse a condition and eliminate a return.

  • bpo-25507: IDLE no longer runs buggy code because of its tkinter imports. Users must include the same imports required to run directly in Python.

  • bpo-27173: Add „IDLE Modern Unix“ to the built-in key sets. Make the default key set depend on the platform. Add tests for the changes to the config module.

  • bpo-27452: add line counter and crc to IDLE configHandler test dump.

Тесты

  • bpo-25805: Skip a test in test_pkgutil as needed that doesn’t work when __name__ == __main__. Patch by SilentGhost.

  • bpo-27472: Add test.support.unix_shell as the path to the default shell.

  • bpo-27369: In test_pyexpat, avoid testing an error message detail that changed in Expat 2.2.0.

  • bpo-27594: Prevent assertion error when running test_ast with coverage enabled: ensure code object has a valid first line number. Patch suggested by Ivan Levkivskyi.

Windows

  • bpo-27647: Update bundled Tcl/Tk to 8.6.6.

  • bpo-27610: Adds PEP 514 metadata to Windows installer

  • bpo-27469: Adds a shell extension to the launcher so that drag and drop works correctly.

  • bpo-27309: Enables proper Windows styles in python[w].exe manifest.

Построить

  • bpo-27713: Suppress spurious build warnings when updating importlib’s bootstrap files. Patch by Xiang Zhang

  • bpo-25825: Correct the references to Modules/python.exp, which is required on AIX. The references were accidentally changed in 3.5.0a1.

  • bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi Hsuan Yen.

  • bpo-27641: The configure script now inserts comments into the makefile to prevent the pgen and _freeze_importlib executables from being cross-compiled.

  • bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be used for file generation during the build.

  • bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update FreedBSD version checks for the original ctype UTF-8 workaround.

Python 3.6.0 alpha 3

Release date: 2016-07-11

Безопасность

  • bpo-27278: Fix os.urandom() implementation using getrandom() on Linux. Truncate size to INT_MAX and loop until we collected enough random bytes, instead of casting a directly Py_ssize_t to int.

  • bpo-22636: Avoid shell injection problems with ctypes.util.find_library().

Ядро и встроенные модули

  • bpo-27473: Fixed possible integer overflow in bytes and bytearray concatenations. Patch by Xiang Zhang.

  • bpo-23034: The output of a special Python build with defined COUNT_ALLOCS, SHOW_ALLOC_COUNT or SHOW_TRACK_COUNT macros is now off by default. It can be re-enabled using the «-X showalloccount» option. It now outputs to stderr instead of stdout.

  • bpo-27443: __length_hint__() of bytearray iterators no longer return a negative integer for a resized bytearray.

  • bpo-27007: The fromhex() class methods of bytes and bytearray subclasses now return an instance of corresponding subclass.

Библиотека

  • bpo-26844: Fix error message for imp.find_module() to refer to „path“ instead of „name“. Patch by Lev Maximov.

  • bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an error about unclean EOF.

  • bpo-27466: Change time format returned by http.cookie.time2netscape, confirming the netscape cookie format and making it consistent with documentation.

  • bpo-21708: Deprecated dbm.dumb behavior that differs from common dbm behavior: creating a database in „r“ and „w“ modes and modifying a database in „r“ mode.

  • bpo-26721: Change the socketserver.StreamRequestHandler.wfile attribute to implement BufferedIOBase. In particular, the write() method no longer does partial writes.

  • bpo-22115: Added methods trace_add, trace_remove and trace_info in the tkinter.Variable class. They replace old methods trace_variable, trace, trace_vdelete and trace_vinfo that use obsolete Tcl commands and might not work in future versions of Tcl. Fixed old tracing methods: trace_vdelete() with wrong mode no longer break tracing, trace_vinfo() now always returns a list of pairs of strings, tracing in the «u» mode now works.

  • bpo-26243: Only the level argument to zlib.compress() is keyword argument now. The first argument is positional-only.

  • bpo-27038: Expose the DirEntry type as os.DirEntry. Code patch by Jelle Zijlstra.

  • bpo-27186: Update os.fspath()/PyOS_FSPath() to check the return value of __fspath__() to be either str or bytes.

  • bpo-18726: All optional parameters of the dump(), dumps(), load() and loads() functions and JSONEncoder and JSONDecoder class constructors in the json module are now keyword-only.

  • bpo-27319: Methods selection_set(), selection_add(), selection_remove() and selection_toggle() of ttk.TreeView now allow passing multiple items as multiple arguments instead of passing them as a tuple. Deprecated undocumented ability of calling the selection() method with arguments.

  • bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and ispunct().

  • bpo-27294: Numerical state in the repr for Tkinter event objects is now represented as a combination of known flags.

  • bpo-27177: Match objects in the re module now support index-like objects as group indices. Based on patches by Jeroen Demeyer and Xiang Zhang.

  • bpo-26754: Some functions (compile() etc) accepted a filename argument encoded as an iterable of integers. Now only strings and byte-like objects are accepted.

  • bpo-26536: socket.ioctl now supports SIO_LOOPBACK_FAST_PATH. Patch by Daniel Stokes.

  • bpo-27048: Prevents distutils failing on Windows when environment variables contain non-ASCII characters

  • bpo-27330: Fixed possible leaks in the ctypes module.

  • bpo-27238: Got rid of bare excepts in the turtle module. Original patch by Jelle Zijlstra.

  • bpo-27122: When an exception is raised within the context being managed by a contextlib.ExitStack() and one of the exit stack generators catches and raises it in a chain, do not re-raise the original exception when exiting, let the new chained one through. This avoids the PEP 479 bug described in issue25782.

  • bpo-16864: sqlite3.Cursor.lastrowid now supports REPLACE statement. Initial patch by Alex LordThorsen.

  • bpo-26386: Fixed ttk.TreeView selection operations with item id’s containing spaces.

  • bpo-8637: Honor a pager set by the env var MANPAGER (in preference to one set by the env var PAGER).

  • bpo-16182: Fix various functions in the «readline» module to use the locale encoding, and fix get_begidx() and get_endidx() to return code point indexes.

  • bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton.

IDLE

  • bpo-27477: IDLE search dialogs now use ttk widgets.

  • bpo-27173: Add „IDLE Modern Unix“ to the built-in key sets. Make the default key set depend on the platform. Add tests for the changes to the config module.

  • bpo-27452: make command line «idle-test> python test_help.py» work. __file__ is relative when python is started in the file’s directory.

  • bpo-27452: add line counter and crc to IDLE configHandler test dump.

  • bpo-27380: IDLE: add query.py with base Query dialog and ttk widgets. Module had subclasses SectionName, ModuleName, and HelpSource, which are used to get information from users by configdialog and file =>Load Module. Each subclass has itw own validity checks. Using ModuleName allows users to edit bad module names instead of starting over. Add tests and delete the two files combined into the new one.

  • bpo-27372: Test_idle no longer changes the locale.

  • bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names.

  • bpo-27245: IDLE: Cleanly delete custom themes and key bindings. Previously, when IDLE was started from a console or by import, a cascade of warnings was emitted. Patch by Serhiy Storchaka.

  • bpo-24137: Run IDLE, test_idle, and htest with tkinter default root disabled. Fix code and tests that fail with this restriction. Fix htests to not create a second and redundant root and mainloop.

  • bpo-27310: Fix IDLE.app failure to launch on OS X due to vestigial import.

C API

  • bpo-26754: PyUnicode_FSDecoder() accepted a filename argument encoded as an iterable of integers. Now only strings and byte-like objects are accepted.

Построить

  • bpo-28066: Fix the logic that searches build directories for generated include files when building outside the source tree.

  • bpo-27442: Expose the Android API level that python was built against, in sysconfig.get_config_vars() as „ANDROID_API_LEVEL“.

  • bpo-27434: The interpreter that runs the cross-build, found in PATH, must now be of the same feature version (e.g. 3.6) as the source being built.

  • bpo-26930: Update Windows builds to use OpenSSL 1.0.2h.

  • bpo-23968: Rename the platform directory from plat-$(MACHDEP) to plat-$(PLATFORM_TRIPLET). Rename the config directory (LIBPL) from config-$(LDVERSION) to config-$(LDVERSION)-$(PLATFORM_TRIPLET). Install the platform specific _sysconfigdata module into the platform directory and rename it to include the ABIFLAGS.

  • Don’t use largefile support for GNU/Hurd.

Инструменты/демоверсии

  • bpo-27332: Fixed the type of the first argument of module-level functions generated by Argument Clinic. Patch by Petr Viktorin.

  • bpo-27418: Fixed Tools/importbench/importbench.py.

Документация

  • bpo-19489: Moved the search box from the sidebar to the header and footer of each page. Patch by Ammar Askar.

  • bpo-27285: Update documentation to reflect the deprecation of pyvenv and normalize on the term «virtual environment». Patch by Steve Piercy.

Тесты

  • bpo-27027: Added test.support.is_android that is True when this is an Android build.

Python 3.6.0 alpha 2

Release date: 2016-06-13

Безопасность

  • bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283.

  • Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by Team Oststrom.

  • bpo-26839: Разрешить параметры с именами os.urandom() и getrandom() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-27095: Simplified MAKE_FUNCTION and removed MAKE_CLOSURE opcodes. Patch by Demur Rumed.

  • bpo-27190: Raise NotSupportedError if sqlite3 is older than 3.3.1. Patch by Dave Sawyer.

  • bpo-27286: Fixed compiling BUILD_MAP_UNPACK_WITH_CALL opcode. Calling function with generalized unpacking (PEP 448) and conflicting keyword names could cause undefined behavior.

  • bpo-27140: Added BUILD_CONST_KEY_MAP opcode.

  • bpo-27186: Add support for os.PathLike objects to open() (part of PEP 519).

  • bpo-27066: Fixed SystemError if a custom opener (for open()) returns a negative number without setting an exception.

  • bpo-26983: float() now always return an instance of exact float. The deprecation warning is emitted if __float__ returns an instance of a strict subclass of float. In a future versions of Python this can be an error.

  • bpo-27097: Python interpreter is now about 7% faster due to optimized instruction decoding. Based on patch by Demur Rumed.

  • bpo-26647: Python interpreter now uses 16-bit wordcode instead of bytecode. Patch by Demur Rumed.

  • bpo-23275: Allow assigning to an empty target list in round brackets: () = iterable.

  • bpo-27243: Update the __aiter__ protocol: instead of returning an awaitable that resolves to an asynchronous iterator, the asynchronous iterator should be returned directly. Doing the former will trigger a PendingDeprecationWarning.

Библиотека

  • Comment out socket (SO_REUSEPORT) and posix (O_SHLOCK, O_EXLOCK) constants exposed on the API which are not implemented on GNU/Hurd. They would not work at runtime anyway.

  • bpo-27025: Generated names for Tkinter widgets are now more meaningful and recognizable.

  • bpo-25455: Fixed crashes in repr of recursive ElementTree.Element and functools.partial objects.

  • bpo-27294: Improved repr for Tkinter event objects.

  • bpo-20508: Improve exception message of IPv{4,6}Network.__getitem__. Patch by Gareth Rees.

  • bpo-21386: Implement missing IPv4Address.is_global property. It was documented since 07a5610bae9d. Initial patch by Roger Luethi.

  • bpo-27029: Removed deprecated support of universal newlines mode from ZipFile.open().

  • bpo-27030: Unknown escapes consisting of '\' and an ASCII letter in regular expressions now are errors. The re.LOCALE flag now can be used only with bytes patterns.

  • bpo-27186: Add os.PathLike support to DirEntry (part of PEP 519). Initial patch by Jelle Zijlstra.

  • bpo-20900: distutils register command now decodes HTTP responses correctly. Initial patch by ingrid.

  • bpo-27186: Add os.PathLike support to pathlib, removing its provisional status (part of PEP 519). Initial patch by Dusty Phillips.

  • bpo-27186: Add support for os.PathLike objects to os.fsencode() and os.fsdecode() (part of PEP 519).

  • bpo-27186: Introduce os.PathLike and os.fspath() (part of PEP 519).

  • A new version of typing.py provides several new classes and features: @overload outside stubs, Reversible, DefaultDict, Text, ContextManager, Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some of the new features are not yet implemented in mypy or other static analyzers). Also classes for PEP 492 (Awaitable, AsyncIterable, AsyncIterator) have been added (in fact they made it into 3.5.1 but were never mentioned).

  • bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from sending a message body for 205 Reset Content. Also, don’t send Content header fields in responses that don’t have a body. Patch by Susumu Koshiba.

  • bpo-21313: Fix the «platform» module to tolerate when sys.version contains truncated build information.

  • bpo-23883: Added missing APIs to __all__ to match the documented APIs for the following modules: cgi, mailbox, mimetypes, plistlib and smtpd. Patches by Jacek Kołodziej.

  • bpo-27164: In the zlib module, allow decompressing raw Deflate streams with a predefined zdict. Based on patch by Xiang Zhang.

  • bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely write data to the client. Previously it could do partial writes and truncate data. Also, wsgiref.handler.ServerHandler can now handle stdout doing partial writes, but this is deprecated.

  • bpo-21272: Use _sysconfigdata.py to initialize distutils.sysconfig.

  • bpo-19611: Разрешить параметры с именами inspect и .0 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26809: Разрешить параметры с именами __all__ и string с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26373: subprocess.Popen.communicate now correctly ignores BrokenPipeError when the child process dies before .communicate() is called in more/all circumstances.

  • signal, socket, and ssl module IntEnum constant name lookups now return a consistent name for values having multiple names. Ex: signal.Signals(6) now refers to itself as signal.SIGALRM rather than flipping between that and signal.SIGIOT based on the interpreter’s hash randomization seed.

  • bpo-27167: Clarify the subprocess.CalledProcessError error message text when the child process died due to a signal.

  • bpo-25931: Don’t define socketserver.Forking* names on platforms such as Windows that do not support os.fork().

  • bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch by Claudiu Popa.

  • bpo-26526: Replace custom parse tree validation in the parser module with a simple DFA validator.

  • bpo-27114: Fix SSLContext._load_windows_store_certs fails with PermissionError

  • bpo-18383: Avoid creating duplicate filters when using filterwarnings and simplefilter. Based on patch by Alex Shkop.

  • bpo-23026: winreg.QueryValueEx() now return an integer for REG_QWORD type.

  • bpo-26741: subprocess.Popen destructor now emits a ResourceWarning warning if the child process is still running.

  • bpo-27056: Optimize pickle.load() and pickle.loads(), up to 10% faster to deserialize a lot of small objects.

  • bpo-21271: New keyword only parameters in reset_mock call.

IDLE

  • bpo-5124: Paste with text selected now replaces the selection on X11. This matches how paste works on Windows, Mac, most modern Linux apps, and ttk widgets. Original patch by Serhiy Storchaka.

  • bpo-24750: Switch all scrollbars in IDLE to ttk versions. Where needed, minimal tests are added to cover changes.

  • bpo-24759: IDLE requires tk 8.5 and availability ttk widgets. Delete now unneeded tk version tests and code for older versions. Add test for IDLE syntax colorizer.

  • bpo-27239: idlelib.macosx.isXyzTk functions initialize as needed.

  • bpo-27262: move Aqua unbinding code, which enable context menus, to macosx.

  • bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is a private implementation of test.test_idle and tool for maintainers.

  • bpo-27196: Stop „ThemeChanged“ warnings when running IDLE tests. These persisted after other warnings were suppressed in #20567. Apply Serhiy Storchaka’s update_idletasks solution to four test files. Record this additional advice in idle_test/README.txt

  • bpo-20567: Revise idle_test/README.txt with advice about avoiding tk warning messages from tests. Apply advice to several IDLE tests.

  • bpo-24225: Update idlelib/README.txt with new file names and event handlers.

  • bpo-27156: Remove obsolete code not used by IDLE.

  • bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move code for configuring text widget colors to a new function.

  • bpo-24225: Разрешить параметры с именами idlelib/*.py и idle_test/test_*.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26673: When tk reports font size as 0, change to size 10. Such fonts on Linux prevented the configuration dialog from opening.

  • bpo-21939: Add test for IDLE’s percolator. Original patch by Saimadhav Heblikar.

  • bpo-21676: Add test for IDLE’s replace dialog. Original patch by Saimadhav Heblikar.

  • bpo-18410: Add test for IDLE’s search dialog. Original patch by Westley Martínez.

  • bpo-21703: Add test for undo delegator. Patch mostly by Saimadhav Heblikar .

  • bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks.

  • bpo-23977: Add more asserts to test_delegator.

Документация

  • bpo-16484: Change the default PYTHONDOCS URL to «https:», and fix the resulting links to use lowercase. Patch by Sean Rodman, test by Kaushik Nadikuditi.

  • bpo-24136: Document the new PEP 448 unpacking syntax of 3.5.

  • bpo-22558: Add remaining doc links to source code for Python-coded modules. Patch by Yoni Lavi.

Тесты

  • bpo-25285: regrtest now uses subprocesses when the -j1 command line option is used: each test file runs in a fresh child process. Before, the -j1 option was ignored.

  • bpo-25285: Tools/buildbot/test.bat script now uses -j1 by default to run each test file in fresh child process.

Windows

Построить

  • bpo-27229: Fix the cross-compiling pgen rule for in-tree builds. Patch by Xavier de Gaye.

  • bpo-26930: Update OS X 10.5+ 32-bit-only installer to build and link with OpenSSL 1.0.2h.

C API

  • bpo-27186: Add the PyOS_FSPath() function (part of PEP 519).

  • bpo-26282: PyArg_ParseTupleAndKeywords() now supports positional-only parameters.

Инструменты/демоверсии

  • bpo-26282: Argument Clinic now supports positional-only and keyword parameters in the same function.

Python 3.6.0 alpha 1

Release date: 2016-05-16

Безопасность

  • bpo-26657: Fix directory traversal vulnerability with http.server on Windows. This fixes a regression that was introduced in 3.3.4rc1 and 3.4.0rc1. Based on patch by Philipp Hagemeister.

  • bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is empty. Patch by Baji.

  • bpo-25939: On Windows open the cert store readonly in ssl.enum_certificates.

Ядро и встроенные модули

  • bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by Xavier de Gaye.

  • bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the «N» format unit.

  • bpo-26991: Fix possible refleak when creating a function with annotations.

  • bpo-27039: Fixed bytearray.remove() for values greater than 127. Based on patch by Joe Jevnik.

  • bpo-23640: int.from_bytes() no longer bypasses constructors for subclasses.

  • bpo-27005: Optimized the float.fromhex() class method for exact float. It is now 2 times faster.

  • bpo-18531: Single var-keyword argument of dict subtype was passed unscathed to the C-defined function. Now it is converted to exact dict.

  • bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL pointer.

  • bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for interpolation unintentionally added with move to Python 3. Behavior no longer does any interpolation in .pypirc files, matching behavior in Python 2.7 and Setuptools 19.0.

  • bpo-26249: Разрешить параметры с именами PyMem_Malloc() и PYMEM_DOMAIN_MEM с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26802: Optimize function calls only using unpacking like func(*tuple) (no other positional argument, no keyword): avoid copying the tuple. Patch written by Joe Jevnik.

  • bpo-26659: Make the builtin slice type support cycle collection.

  • bpo-26718: super.__init__ no longer leaks memory if called multiple times. NOTE: A direct call of super.__init__ is not endorsed!

  • bpo-27138: Fix the doc comment for FileFinder.find_spec().

  • bpo-27147: Mention PEP 420 in the importlib docs.

  • bpo-25339: PYTHONIOENCODING now has priority over locale in setting the error handler for stdin and stdout.

  • bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes are generic sequence iterators, iterators of str, bytes, bytearray, list, tuple, set, frozenset, dict, OrderedDict, corresponding views and os.scandir() iterator.

  • bpo-26574: Разрешить параметры с именами bytes.replace(b'', b'.') и bytearray.replace(b'', b'.') с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26581: If coding cookie is specified multiple times on a line in Python source code file, only the first one is taken to account.

  • bpo-19711: Add tests for reloading namespace packages.

  • bpo-21099: Switch applicable importlib tests to use PEP 451 API.

  • bpo-26563: Debug hooks on Python memory allocators now raise a fatal error if functions of the PyMem_Malloc() family are called without holding the GIL.

  • bpo-26564: On error, the debug hooks on Python memory allocators now use the tracemalloc module to get the traceback where a memory block was allocated.

  • bpo-26558: The debug hooks on Python memory allocator PyObject_Malloc() now detect when functions are called without holding the GIL.

  • bpo-26516: Add PYTHONMALLOC environment variable to set the Python memory allocators and/or install debug hooks.

  • bpo-26516: The PyMem_SetupDebugHooks() function can now also be used on Python compiled in release mode.

  • bpo-26516: The PYTHONMALLOCSTATS environment variable can now also be used on Python compiled in release mode. It now has no effect if set to an empty string.

  • bpo-26516: In debug mode, debug hooks are now also installed on Python memory allocators when Python is configured without pymalloc.

  • bpo-26464: Fix str.translate() when string is ASCII and first replacements removes character, but next replacement uses a non-ASCII character or a string longer than 1 character. Regression introduced in Python 3.5.0.

  • bpo-22836: Ensure exception reports from PyErr_Display() and PyErr_WriteUnraisable() are sensible even when formatting them produces secondary errors. This affects the reports produced by sys.__excepthook__() and when __del__() raises an exception.

  • bpo-26302: Correct behavior to reject comma as a legal character for cookie names.

  • bpo-26136: Upgrade the warning when a generator raises StopIteration from PendingDeprecationWarning to DeprecationWarning. Patch by Anish Shah.

  • bpo-26204: Разрешить параметры с именами 1.0 и def f(): 1.0 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-4806: Avoid masking the original TypeError exception when using star (*) unpacking in function calls. Based on patch by Hagen Fürstenau and Daniel Urban.

  • bpo-26146: Add a new kind of AST node: ast.Constant. It can be used by external AST optimizers, but the compiler does not emit directly such node.

  • bpo-23601: Sped-up allocation of dict key objects by using Python’s small object allocator. (Contributed by Julian Taylor.)

  • bpo-18018: Import raises ImportError instead of SystemError if a relative import is attempted without a known parent package.

  • bpo-25843: Разрешить параметры с именами f1, f2 = lambda: 1, lambda: 1.0 и f1() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26107: The format of the co_lnotab attribute of code objects changes to support negative line number delta.

  • bpo-26154: Add a new private _PyThreadState_UncheckedGet() function to get the current Python thread state, but don’t issue a fatal error if it is NULL. This new function must be used instead of accessing directly the _PyThreadState_Current variable. The variable is no more exposed since Python 3.5.1 to hide the exact implementation of atomic C types, to avoid compiler issues.

  • bpo-25791: If __package__ != __spec__.parent or if neither __package__ or __spec__ are defined then ImportWarning is raised.

  • bpo-22995: [UPDATE] Comment out the one of the pickleability tests in _PyObject_GetState() due to regressions observed in Cython-based projects.

  • bpo-25961: Disallowed null characters in the type name.

  • bpo-25973: Fix segfault when an invalid nonlocal statement binds a name starting with two underscores.

  • bpo-22995: Instances of extension types with a state that aren’t subclasses of list or dict and haven’t implemented any pickle-related methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, or __getstate__), can no longer be pickled. Including memoryview.

  • bpo-20440: Massive replacing unsafe attribute setting code with special macro Py_SETREF.

  • bpo-25766: Special method __bytes__() now works in str subclasses.

  • bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size. This allows sys.getsize() to work correctly with their subclasses with __slots__ defined.

  • bpo-25709: Fixed problem with in-place string concatenation and utf-8 cache.

  • bpo-5319: New Py_FinalizeEx() API allowing Python to set an exit status of 120 on failure to flush buffered streams.

  • bpo-25485: telnetlib.Telnet is now a context manager.

  • bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside __getattr__.

  • bpo-24731: Fixed crash on converting objects with special methods __bytes__, __trunc__, and __float__ returning instances of subclasses of bytes, int, and float to subclasses of bytes, int, and float correspondingly.

  • bpo-25630: Fix a possible segfault during argument parsing in functions that accept filesystem paths.

  • bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess internals regarding how fds_to_pass were passed to the child. The bug had no actual impact as subprocess.py already avoided it.

  • bpo-25388: Fixed tokenizer crash when processing undecodable source code with a null byte.

  • bpo-25462: The hash of the key now is calculated only once in most operations in C implementation of OrderedDict.

  • bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now rejects builtin types with not defined __new__.

  • bpo-24802: Avoid buffer overreads when int(), float(), compile(), exec() and eval() are passed bytes-like objects. These objects are not necessarily terminated by a null byte, but the functions assumed they were.

  • bpo-25555: Fix parser and AST: fill lineno and col_offset of «arg» node when compiling AST from Python objects.

  • bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that was mutated by direct calls of dict methods.

  • bpo-25449: Iterating OrderedDict with keys with unstable hash now raises KeyError in C implementations as well as in Python implementation.

  • bpo-25395: Fixed crash when highly nested OrderedDict structures were garbage collected.

  • bpo-25401: Optimize bytes.fromhex() and bytearray.fromhex(): they are now between 2x and 3.5x faster.

  • bpo-25399: Optimize bytearray % args using the new private _PyBytesWriter API. Formatting is now between 2.5 and 5 times faster.

  • bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new recursion limit is too low depending at the current recursion depth. Modify also the «lower-water mark» formula to make it monotonic. This mark is used to decide when the overflowed flag of the thread state is reset.

  • bpo-24402: Fix input() to prompt to the redirected stdout when sys.stdout.fileno() fails.

  • bpo-25349: Optimize bytes % args using the new private _PyBytesWriter API. Formatting is now up to 2 times faster.

  • bpo-24806: Prevent builtin types that are not allowed to be subclassed from being subclassed through multiple inheritance.

  • bpo-25301: Разрешить параметры с именами ignore и replace с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data.

  • bpo-25267: Разрешить параметры с именами ignore и replace с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25280: Import trace messages emitted in verbose (-v) mode are no longer formatted twice.

  • bpo-25227: Optimize ASCII and latin1 encoders with the surrogateescape error handler: the encoders are now up to 3 times as fast. Initial patch written by Serhiy Storchaka.

  • bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom() function instead of the getentropy() function. The getentropy() function is blocking to generate very good quality entropy, os.urandom() doesn’t need such high-quality entropy.

  • bpo-9232: Modify Python’s grammar to allow trailing commas in the argument list of a function declaration. For example, «def f(*, a = 3,): pass» is now legal. Patch from Mark Dickinson.

  • bpo-24965: Implement PEP 498 «Literal String Interpolation». This allows you to embed expressions inside f-strings, which are converted to normal strings at run time. Given x=3, then f’value={x}“ == „value=3“. Patch by Eric V. Smith.

  • bpo-26478: Fix semantic bugs when using binary operators with dictionary views and tuples.

  • bpo-26171: Fix possible integer overflow and heap corruption in zipimporter.get_data().

  • bpo-25660: Fix TAB key behaviour in REPL with readline.

  • bpo-26288: Optimize PyLong_AsDouble.

  • bpo-26289: Optimize floor and modulo division for single-digit longs. Microbenchmarks show 2-2.5x improvement. Built-in „divmod“ function is now also ~10% faster. (See also: bpo-26315)

  • bpo-25887: Raise a RuntimeError when a coroutine object is awaited more than once.

Библиотека

  • bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by SELinux and fails with EACCESS. The function now falls back to fcntl(). Patch written by Michał Bednarski.

  • bpo-27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure!

  • bpo-27031: Removed dummy methods in Tkinter widget classes: tk_menuBar() and tk_bindForTraversal().

  • bpo-14132: Fix urllib.request redirect handling when the target only has a query string. Original fix by Ján Janech.

  • bpo-17214: The «urllib.request» module now percent-encodes non-ASCII bytes found in redirect target URLs. Some servers send Location header fields with non-ASCII bytes, but «http.client» requires the request target to be ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch by Christian Heimes.

  • bpo-27033: The default value of the decode_data parameter for smtpd.SMTPChannel and smtpd.SMTPServer constructors is changed to False.

  • bpo-27034: Removed deprecated class asynchat.fifo.

  • bpo-26870: Added readline.set_auto_history(), which can stop entries being automatically added to the history list. Based on patch by Tyler Crompton.

  • bpo-26039: zipfile.ZipFile.open() can now be used to write data into a ZIP file, as well as for extracting data. Patch by Thomas Kluyver.

  • bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch contributed by Chi Hsuan Yen.

  • bpo-22274: In the subprocess module, allow stderr to be redirected to stdout even when stdout is not redirected. Patch by Akira Li.

  • bpo-26807: mock_open „files“ no longer error on readline at end of file. Patch from Yolanda Robla.

  • bpo-25745: Fixed leaking a userptr in curses panel destructor.

  • bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper in statistics.pvariance.

  • bpo-26002: Use bisect in statistics.median instead of a linear search. Patch by Upendra Kuma.

  • bpo-25974: Make use of new Decimal.as_integer_ratio() method in statistics module. Patch by Stefan Krah.

  • bpo-26996: Add secrets module as described in PEP 506.

  • bpo-26881: The modulefinder module now supports extended opcode arguments.

  • bpo-23815: Fixed crashes related to directly created instances of types in _tkinter and curses.panel modules.

  • bpo-17765: weakref.ref() no longer silently ignores keyword arguments. Patch by Georg Brandl.

  • bpo-26873: xmlrpc now raises ResponseError on unsupported type tags instead of silently return incorrect result.

  • bpo-26915: The __contains__ methods in the collections ABCs now check for identity before checking equality. This better matches the behavior of the concrete classes, allows sensible handling of NaNs, and makes it easier to reason about container invariants.

  • bpo-26711: Fixed the comparison of plistlib.Data with other types.

  • bpo-24114: Разрешить параметры с именами ctypes.util и crle с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26864: In urllib.request, change the proxy bypass host checking against no_proxy to be case-insensitive, and to not match unrelated host names that happen to have a bypassed hostname as a suffix. Patch by Xiang Zhang.

  • bpo-24902: Print server URL on http.server startup. Initial patch by Felix Kaiser.

  • bpo-25788: fileinput.hook_encoded() now supports an «errors» argument for passing to open. Original patch by Joseph Hackman.

  • bpo-26634: recursive_repr() now sets __qualname__ of wrapper. Patch by Xiang Zhang.

  • bpo-26804: urllib.request will prefer lower_case proxy environment variables over UPPER_CASE or Mixed_Case ones. Patch contributed by Hans-Peter Jansen.

  • bpo-26837: assertSequenceEqual() now correctly outputs non-stringified differing items (like bytes in the -b mode). This affects assertListEqual() and assertTupleEqual().

  • bpo-26041: Remove «will be removed in Python 3.7» from deprecation messages of platform.dist() and platform.linux_distribution(). Patch by Kumaripaba Miyurusara Athukorala.

  • bpo-26822: itemgetter, attrgetter and methodcaller objects no longer silently ignore keyword arguments.

  • bpo-26733: Disassembling a class now disassembles class and static methods. Patch by Xiang Zhang.

  • bpo-26801: Разрешить параметры с именами shutil.get_terminal_size() и AttributeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24838: tarfile’s ustar and gnu formats now correctly calculate name and link field limits for multibyte character encodings like utf-8.

  • bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by Anthony Sottile.

  • bpo-26782: Add STARTUPINFO to subprocess.__all__ on Windows.

  • bpo-26404: Add context manager to socketserver. Patch by Aviv Palivoda.

  • bpo-26735: Разрешить параметры с именами os.urandom() и getrandom() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26585: Eliminate http.server._quote_html() and use html.escape(quote=False). Patch by Xiang Zhang.

  • bpo-26685: Raise OSError if closing a socket fails.

  • bpo-16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola“.

  • bpo-13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson.

  • bpo-26587: the site module now allows .pth files to specify files to be added to sys.path (e.g. zip files).

  • bpo-25609: Introduce contextlib.AbstractContextManager and typing.ContextManager.

  • bpo-26709: Fixed Y2038 problem in loading binary PLists.

  • bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our own SIGWINCH handler. Patch by Eric Price.

  • bpo-25951: Change SSLSocket.sendall() to return None, as explicitly documented for plain socket objects. Patch by Aviv Palivoda.

  • bpo-26586: In http.server, respond with «413 Request header fields too large» if there are too many header fields to parse, rather than killing the connection and raising an unhandled exception. Patch by Xiang Zhang.

  • bpo-26676: Added missing XMLPullParser to ElementTree.__all__.

  • bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable() to always return False.

  • bpo-26492: Exhausted iterator of array.array now conforms with the behavior of iterators of other mutable sequences: it lefts exhausted even if iterated array is extended.

  • bpo-26641: doctest.DocFileTest and doctest.testfile() now support packages (module split into multiple directories) for the package parameter.

  • bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of tuple (changeset 3603bae63c13 only works for classes) so we need to implement __ne__ ourselves. Patch by Andrew Plummer.

  • bpo-26644: Raise ValueError rather than SystemError when a negative length is passed to SSLSocket.recv() or read().

  • bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes instead of up to 1024.

  • bpo-26616: Fixed a bug in datetime.astimezone() method.

  • bpo-26637: Разрешить параметры с именами importlib и ImportError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21925: Разрешить параметры с именами warnings.formatwarning() и linecache.getline() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23848: On Windows, faulthandler.enable() now also installs an exception handler to dump the traceback of all Python threads on any Windows exception, not only on UNIX signals (SIGSEGV, SIGFPE, SIGABRT).

  • bpo-26530: Разрешить параметры с именами _PyTraceMalloc_Track() и _PyTraceMalloc_Untrack() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26588: The _tracemalloc now supports tracing memory allocations of multiple address spaces (domains).

  • bpo-24266: Ctrl+C during Readline history search now cancels the search mode when compiled with Readline 7.

  • bpo-26590: Implement a safe finalizer for the _socket.socket type. It now releases the GIL to close the socket.

  • bpo-18787: spwd.getspnam() now raises a PermissionError if the user doesn’t have privileges.

  • bpo-26560: Avoid potential ValueError in BaseHandler.start_response. Initial patch by Peter Inglesby.

  • bpo-26567: Разрешить параметры с именами PyErr_ResourceWarning() и warnings.WarningMessage с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26569: Разрешить параметры с именами pyclbr.readmodule() и pyclbr.readmodule_ex() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26499: Account for remaining Content-Length in HTTPResponse.readline() and read1(). Based on patch by Silent Ghost. Also document that HTTPResponse now supports these methods.

  • bpo-25320: Handle sockets in directories unittest discovery is scanning. Patch from Victor van den Elzen.

  • bpo-16181: cookiejar.http2time() now returns None if year is higher than datetime.MAXYEAR.

  • bpo-26513: Fixes platform module detection of Windows Server

  • bpo-23718: Fixed parsing time in week 0 before Jan 1. Original patch by Tamás Bence Gedai.

  • bpo-26323: Add Mock.assert_called() and Mock.assert_called_once() methods to unittest.mock. Patch written by Amit Saha.

  • bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise NotImplementedError instead of ImportError.

  • bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets.

  • bpo-15068: Got rid of excessive buffering in fileinput. The bufsize parameter is now deprecated and ignored.

  • bpo-19475: Added an optional argument timespec to the datetime isoformat() method to choose the precision of the time component.

  • bpo-2202: Fix UnboundLocalError in AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu Dupuy.

  • bpo-26167: Minimized overhead in copy.copy() and copy.deepcopy(). Optimized copying and deepcopying bytearrays, NotImplemented, slices, short lists, tuples, dicts, sets.

  • bpo-25718: Fixed pickling and copying the accumulate() iterator with total is None.

  • bpo-26475: Fixed debugging output for regular expressions with the (?x) flag.

  • bpo-26482: Allowed pickling recursive dequeues.

  • bpo-26335: Make mmap.write() return the number of bytes written like other write methods. Patch by Jakub Stasiak.

  • bpo-26457: Fixed the subnets() methods in IP network classes for the case when resulting prefix length is equal to maximal prefix length. Based on patch by Xiang Zhang.

  • bpo-26385: Remove the file if the internal open() call in NamedTemporaryFile() fails. Patch by Silent Ghost.

  • bpo-26402: Fix XML-RPC client to retry when the server shuts down a persistent connection. This was a regression related to the new http.client.RemoteDisconnected exception in 3.5.0a4.

  • bpo-25913: Leading <~ is optional now in base64.a85decode() with adobe=True. Patch by Swati Jaiswal.

  • bpo-26186: Remove an invalid type check in importlib.util.LazyLoader.

  • bpo-26367: importlib.__import__() raises ImportError like builtins.__import__() when level is specified but without an accompanying package specified.

  • bpo-26309: In the «socketserver» module, shut down the request (closing the connected socket) when verify_request() returns false. Patch by Aviv Palivoda.

  • bpo-23430: Change the socketserver module to only catch exceptions raised from a request handler that are derived from Exception (instead of BaseException). Therefore SystemExit and KeyboardInterrupt no longer trigger the handle_error() method, and will now to stop a single-threaded server.

  • bpo-25995: os.walk() no longer uses FDs proportional to the tree depth.

  • bpo-25994: Added the close() method and the support of the context manager protocol for the os.scandir() iterator.

  • bpo-23992: multiprocessing: make MapResult not fail-fast upon exception.

  • bpo-26243: Support keyword arguments to zlib.compress(). Patch by Aviv Palivoda.

  • bpo-26117: The os.scandir() iterator now closes file descriptor not only when the iteration is finished, but when it was failed with error.

  • bpo-25949: __dict__ for an OrderedDict instance is now created only when needed.

  • bpo-25911: Restored support of bytes paths in os.walk() on Windows.

  • bpo-26045: Add UTF-8 suggestion to error message when posting a non-Latin-1 string with http.client.

  • bpo-26039: Added zipfile.ZipInfo.from_file() and zipinfo.ZipInfo.is_dir(). Patch by Thomas Kluyver.

  • bpo-12923: Reset FancyURLopener’s redirect counter even if there is an exception. Based on patches by Brian Brazil and Daniel Rocco.

  • bpo-25945: Fixed a crash when unpickle the functools.partial object with wrong state. Fixed a leak in failed functools.partial constructor. «args» and «keywords» attributes of functools.partial have now always types tuple and dict correspondingly.

  • bpo-26202: copy.deepcopy() now correctly copies range() objects with non-atomic attributes.

  • bpo-23076: Path.glob() now raises a ValueError if it’s called with an invalid pattern. Patch by Thomas Nyberg.

  • bpo-19883: Fixed possible integer overflows in zipimport.

  • bpo-26227: On Windows, getnameinfo(), gethostbyaddr() and gethostbyname_ex() functions of the socket module now decode the hostname from the ANSI code page rather than UTF-8.

  • bpo-26099: The site module now writes an error into stderr if sitecustomize module can be imported but executing the module raise an ImportError. Same change for usercustomize.

  • bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8 encoding.

  • bpo-25935: Garbage collector now breaks reference loops with OrderedDict.

  • bpo-16620: Fixed AttributeError in msilib.Directory.glob().

  • bpo-26013: Added compatibility with broken protocol 2 pickles created in old Python 3 versions (3.4.3 and lower).

  • bpo-26129: Deprecated accepting non-integers in grp.getgrgid().

  • bpo-25850: Use cross-compilation by default for 64-bit Windows.

  • bpo-25822: Add docstrings to the fields of urllib.parse results. Patch contributed by Swati Jaiswal.

  • bpo-22642: Convert trace module option parsing mechanism to argparse. Patch contributed by SilentGhost.

  • bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing before $() vars.

  • bpo-26069: Remove the deprecated apis in the trace module.

  • bpo-22138: Fix mock.patch behavior when patching descriptors. Restore original values after patching. Patch contributed by Sean McCully.

  • bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode option if it is safe to do so.

  • bpo-26012: Don’t traverse into symlinks for ** pattern in pathlib.Path.[r]glob().

  • bpo-24120: Ignore PermissionError when traversing a tree with pathlib.Path.[r]glob(). Patch by Ulrich Petri.

  • bpo-21815: Accept ] characters in the data portion of imap responses, in order to handle the flags with square brackets accepted and produced by servers such as gmail.

  • bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer attribute (restores backward compatibility).

  • bpo-25971: Optimized creating Fractions from floats by 2 times and from Decimals by 3 times.

  • bpo-25802: Document as deprecated the remaining implementations of importlib.abc.Loader.load_module().

  • bpo-25928: Add Decimal.as_integer_ratio().

  • bpo-25447: Copying the lru_cache() wrapper object now always works, independently from the type of the wrapped object (by returning the original object unchanged).

  • bpo-25768: Have the functions in compileall return booleans instead of ints and add proper documentation and tests for the return values.

  • bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser.

  • bpo-25860: os.fwalk() no longer skips remaining directories when error occurs. Original patch by Samson Lee.

  • bpo-25914: Fixed and simplified OrderedDict.__sizeof__.

  • bpo-25869: Optimized deepcopying ElementTree; it is now 20 times faster.

  • bpo-25873: Optimized iterating ElementTree. Iterating elements Element.iter() is now 40% faster, iterating text Element.itertext() is now up to 2.5 times faster.

  • bpo-25902: Fixed various refcount issues in ElementTree iteration.

  • bpo-22227: The TarFile iterator is reimplemented using generator. This implementation is simpler that using class.

  • bpo-25638: Optimized ElementTree.iterparse(); it is now 2x faster. Optimized ElementTree parsing; it is now 10% faster.

  • bpo-25761: Improved detecting errors in broken pickle data.

  • bpo-25717: Restore the previous behaviour of tolerating most fstat() errors when opening files. This was a regression in 3.5a1, and stopped anonymous temporary files from working in special cases.

  • bpo-24903: Fix regression in number of arguments compileall accepts when „-d“ is specified. The check on the number of arguments has been dropped completely as it never worked correctly anyway.

  • bpo-25764: In the subprocess module, preserve any exception caused by fork() failure when preexec_fn is used.

  • bpo-25771: Tweak the exception message for importlib.util.resolve_name() when „package“ isn’t specified but necessary.

  • bpo-6478: _strptime’s regexp cache now is reset after changing timezone with time.tzset().

  • bpo-14285: When executing a package with the «python -m package» option, and package initialization fails, a proper traceback is now reported. The «runpy» module now lets exceptions from package initialization pass back to the caller, rather than raising ImportError.

  • bpo-19771: Also in runpy and the «-m» option, omit the irrelevant message «… is a package and cannot be directly executed» if the package could not even be initialized (e.g. due to a bad *.pyc file).

  • bpo-25177: Fixed problem with the mean of very small and very large numbers. As a side effect, statistics.mean and statistics.variance should be significantly faster.

  • bpo-25718: Fixed copying object with state with boolean value is false.

  • bpo-10131: Fixed deep copying of minidom documents. Based on patch by Marian Ganisin.

  • bpo-7990: dir() on ElementTree.Element now lists properties: «tag», «text», «tail» and «attrib». Original patch by Santoso Wijaya.

  • bpo-25725: Fixed a reference leak in pickle.loads() when unpickling invalid data including tuple instructions.

  • bpo-25663: In the Readline completer, avoid listing duplicate global names, and search the global namespace before searching builtins.

  • bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error.

  • bpo-23914: Fixed SystemError raised by unpickler on broken pickle data.

  • bpo-25691: Fixed crash on deleting ElementTree.Element attributes.

  • bpo-25624: ZipFile now always writes a ZIP_STORED header for directory entries. Patch by Dingyuan Wang.

  • bpo-25626: Change three zlib functions to accept sizes that fit in Py_ssize_t, but internally cap those sizes to UINT_MAX. This resolves a regression in 3.5 where GzipFile.read() failed to read chunks larger than 2 or 4 GiB. The change affects the zlib.Decompress.decompress() max_length parameter, the zlib.decompress() bufsize parameter, and the zlib.Decompress.flush() length parameter.

  • bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True) when the OS gives priority to errors such as EACCES over EEXIST.

  • bpo-25593: Change semantics of EventLoop.stop() in asyncio.

  • bpo-6973: When we know a subprocess.Popen process has died, do not allow the send_signal(), terminate(), or kill() methods to do anything as they could potentially signal a different process.

  • bpo-23883: Added missing APIs to __all__ to match the documented APIs for the following modules: calendar, csv, enum, fileinput, ftplib, logging, optparse, tarfile, threading and wave. Also added a test.support.check__all__() helper. Patches by Jacek Kołodziej, Mauro S. M. Rodrigues and Joel Taddei.

  • bpo-25590: In the Readline completer, only call getattr() once per attribute. Also complete names of attributes such as properties and slots which are listed by dir() but not yet created on an instance.

  • bpo-25498: Fix a crash when garbage-collecting ctypes objects created by wrapping a memoryview. This was a regression made in 3.5a1. Based on patch by Eryksun.

  • bpo-25584: Added «escape» to the __all__ list in the glob module.

  • bpo-25584: Fixed recursive glob() with patterns starting with **.

  • bpo-25446: Fix regression in smtplib’s AUTH LOGIN support.

  • bpo-18010: Fix the pydoc web server’s module search function to handle exceptions from importing packages.

  • bpo-25554: Got rid of circular references in regular expression parsing.

  • bpo-18973: Command-line interface of the calendar module now uses argparse instead of optparse.

  • bpo-25510: fileinput.FileInput.readline() now returns b““ instead of „“ at the end if the FileInput was opened with binary mode. Patch by Ryosuke Ito.

  • bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties. Original patch by John Mark Vandenberg.

  • bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4.

  • bpo-21827: Fixed textwrap.dedent() for the case when largest common whitespace is a substring of smallest leading whitespace. Based on patch by Robert Li.

  • bpo-25447: The lru_cache() wrapper objects now can be copied and pickled (by returning the original object unchanged).

  • bpo-25390: typing: Don’t crash on Union[str, Pattern].

  • bpo-25441: asyncio: Raise error from drain() when socket is closed.

  • bpo-25410: Cleaned up and fixed minor bugs in C implementation of OrderedDict.

  • bpo-25411: Improved Unicode support in SMTPHandler through better use of the email package. Thanks to user simon04 for the patch.

  • Move the imp module from a PendingDeprecationWarning to DeprecationWarning.

  • bpo-25407: Remove mentions of the formatter module being removed in Python 3.6.

  • bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end() that caused segmentation fault or hang in iterating after moving several items to the start of ordered dict.

  • bpo-25382: pickletools.dis() now outputs implicit memo index for the MEMOIZE opcode.

  • bpo-25357: Add an optional newline parameter to binascii.b2a_base64(). base64.b64encode() uses it to avoid a memory copy.

  • bpo-24164: Objects that need calling __new__ with keyword arguments, can now be pickled using pickle protocols older than protocol version 4.

  • bpo-25364: zipfile now works in threads disabled builds.

  • bpo-25328: smtpd’s SMTPChannel now correctly raises a ValueError if both decode_data and enable_SMTPUTF8 are set to true.

  • bpo-16099: RobotFileParser now supports Crawl-delay and Request-rate extensions. Patch by Nikolay Bogoychev.

  • bpo-25316: distutils raises OSError instead of DistutilsPlatformError when MSVC is not installed.

  • bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in pickletools.opcodes.

  • bpo-23972: Updates asyncio datagram create method allowing reuseport and reuseaddr socket options to be set prior to binding the socket. Mirroring the existing asyncio create_server method the reuseaddr option for datagram sockets defaults to True if the O/S is „posix“ (except if the platform is Cygwin). Patch by Chris Laws.

  • bpo-25304: Add asyncio.run_coroutine_threadsafe(). This lets you submit a coroutine to a loop from another thread, returning a concurrent.futures.Future. By Vincent Michel.

  • bpo-25232: Fix CGIRequestHandler to split the query from the URL at the first question mark (?) rather than the last. Patch from Xiang Zhang.

  • bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query part of the URL as if it were a path. Patch from Xiang Zhang.

  • bpo-25287: Don’t add crypt.METHOD_CRYPT to crypt.methods if it’s not supported. Check if it is supported, it may not be supported on OpenBSD for example.

  • bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong results in some cases.

  • bpo-25203: Failed readline.set_completer_delims() no longer left the module in inconsistent state.

  • bpo-25011: rlcompleter now omits private and special attribute names unless the prefix starts with underscores.

  • bpo-25209: rlcompleter now can add a space or a colon after completed keyword.

  • bpo-22241: timezone.utc name is now plain „UTC“, not „UTC-00:00“.

  • bpo-23517: fromtimestamp() and utcfromtimestamp() methods of datetime.datetime now round microseconds to nearest with ties going to nearest even integer (ROUND_HALF_EVEN), as round(float), instead of rounding towards -Infinity (ROUND_FLOOR).

  • bpo-23552: Timeit now warns when there is substantial (4x) variance between best and worst times. Patch from Serhiy Storchaka.

  • bpo-24633: site-packages/README -> README.txt.

  • bpo-24879: help() and pydoc can now list named tuple fields in the order they were defined rather than alphabetically. The ordering is determined by the _fields attribute if present.

  • bpo-24874: Improve speed of itertools.cycle() and make its pickle more compact.

  • Fix crash in itertools.cycle.__setstate__() when the first argument wasn’t a list.

  • bpo-20059: urllib.parse raises ValueError on all invalid ports. Patch by Martin Panter.

  • bpo-24360: Improve __repr__ of argparse.Namespace() for invalid identifiers. Patch by Matthias Bussonnier.

  • bpo-23426: run_setup was broken in distutils. Patch from Alexander Belopolsky.

  • bpo-13938: 2to3 converts StringTypes to a tuple. Patch from Mark Hammond.

  • bpo-2091: open() accepted a „U“ mode string containing „+“, but „U“ can only be used with „r“. Patch from Jeff Balogh and John O’Connor.

  • bpo-8585: improved tests for zipimporter2. Patch from Mark Lawrence.

  • bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely. Patch from Nicola Palumbo and Laurent De Buyst.

  • bpo-24426: Fast searching optimization in regular expressions now works for patterns that starts with capturing groups. Fast searching optimization now can’t be disabled at compile time.

  • bpo-23661: unittest.mock side_effects can now be exceptions again. This was a regression vs Python 3.4. Patch from Ignacio Rossi

  • bpo-13248: Remove deprecated inspect.getmoduleinfo function.

  • bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer().

  • bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating ssl.SSLContext.

  • bpo-25569: Fix memory leak in SSLSocket.getpeercert().

  • bpo-25471: Sockets returned from accept() shouldn’t appear to be nonblocking.

  • bpo-25319: When threading.Event is reinitialized, the underlying condition should use a regular lock rather than a recursive lock.

  • Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu Davis.

  • bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк Коренберг.

  • bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis.

  • bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis.

  • bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input. Patch by Jack O’Connor.

  • bpo-27040: Add loop.get_exception_handler method

  • bpo-27041: asyncio: Add loop.create_future method

IDLE

  • bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav Heblikar.

  • In the „IDLE-console differences“ section of the IDLE doc, clarify how running with IDLE affects sys.modules and the standard streams.

  • bpo-25507: fix incorrect change in IOBinding that prevented printing. Augment IOBinding htest to include all major IOBinding functions.

  • bpo-25905: Revert unwanted conversion of „ to ’ RIGHT SINGLE QUOTATION MARK in README.txt and open this and NEWS.txt with „ascii“. Re-encode CREDITS.txt to utf-8 and open it with „utf-8“.

  • bpo-15348: Stop the debugger engine (normally in a user process) before closing the debugger window (running in the IDLE process). This prevents the RuntimeErrors that were being caught and ignored.

  • bpo-24455: Prevent IDLE from hanging when a) closing the shell while the debugger is active (15347); b) closing the debugger with the [X] button (15348); and c) activating the debugger when already active (24455). The patch by Mark Roseman does this by making two changes. 1. Suspend and resume the gui.interaction method with the tcl vwait mechanism intended for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow any existing interaction to terminate first.

  • Change „The program“ to „Your program“ in an IDLE „kill program?“ message to make it clearer that the program referred to is the currently running user program, not IDLE itself.

  • bpo-24750: Improve the appearance of the IDLE editor window status bar. Patch by Mark Roseman.

  • bpo-25313: Change the handling of new built-in text color themes to better address the compatibility problem introduced by the addition of IDLE Dark. Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.

  • bpo-24782: Extension configuration is now a tab in the IDLE Preferences dialog rather than a separate dialog. The former tabs are now a sorted list. Patch by Mark Roseman.

  • bpo-22726: Re-activate the config dialog help button with some content about the other buttons and the new IDLE Dark theme.

  • bpo-24820: IDLE now has an „IDLE Dark“ built-in text color theme. It is more or less IDLE Classic inverted, with a cobalt blue background. Strings, comments, keywords, … are still green, red, orange, … . To use it with IDLEs released before November 2015, hit the „Save as New Custom Theme“ button and enter a new name, such as „Custom Dark“. The custom theme will work with any IDLE release, and can be modified.

  • bpo-25224: README.txt is now an idlelib index for IDLE developers and curious users. The previous user content is now in the IDLE doc chapter. „IDLE“ now means „Integrated Development and Learning Environment“.

  • bpo-24820: Users can now set breakpoint colors in Settings -> Custom Highlighting. Original patch by Mark Roseman.

  • bpo-24972: Inactive selection background now matches active selection background, as configured by users, on all systems. Found items are now always highlighted on Windows. Initial patch by Mark Roseman.

  • bpo-24570: Idle: make calltip and completion boxes appear on Macs affected by a tk regression. Initial patch by Mark Roseman.

  • bpo-24988: Idle ScrolledList context menus (used in debugger) now work on Mac Aqua. Patch by Mark Roseman.

  • bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by Mark Roseman.

  • bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac OSX, make them a „sheet“. Patch by Mark Roseman.

  • bpo-25198: Enhance the initial html viewer now used for Idle Help. Properly indent fixed-pitch text (patch by Mark Roseman). Give code snippet a very Sphinx-like light blueish-gray background. Re-use initial width and height set by users for shell and editor. When the Table of Contents (TOC) menu is used, put the section header at the top of the screen.

  • bpo-25225: Condense and rewrite Idle doc section on text colors.

  • bpo-21995: Explain some differences between IDLE and console Python.

  • bpo-22820: Explain need for print when running file from Idle editor.

  • bpo-25224: Doc: augment Idle feature list and no-subprocess section.

  • bpo-25219: Update doc for Idle command line options. Some were missing and notes were not correct.

  • bpo-24861: Most of idlelib is private and subject to change. Use idleib.idle.* to start Idle. See idlelib.__init__.__doc__.

  • bpo-25199: Idle: add synchronization comments for future maintainers.

  • bpo-16893: Replace help.txt with help.html for Idle doc display. The new idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks better than help.txt and will better document Idle as released. The tkinter html viewer that works for this file was written by Rose Roseman. The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.

  • bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6.

  • bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts).

Документация

  • bpo-26736: Used HTTPS for external links in the documentation if possible.

  • bpo-6953: Rework the Readline module documentation to group related functions together, and add more details such as what underlying Readline functions and variables are accessed.

  • bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt.

  • bpo-24952: Clarify the default size argument of stack_size() in the «threading» and «_thread» modules. Patch from Mattip.

  • bpo-26014: Update 3.x packaging documentation: * «See also» links to the new docs are now provided in the legacy pages * links to setuptools documentation have been updated

Тесты

  • bpo-21916: Added tests for the turtle module. Patch by ingrid, Gregory Loyse and Jelle Zijlstra.

  • bpo-26295: When using «python3 -m test –testdir=TESTDIR», regrtest doesn’t add «test.» prefix to test module names.

  • bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool) was untested.

  • bpo-26015: Added new tests for pickling iterators of mutable sequences.

  • bpo-26325: Added test.support.check_no_resource_warning() to check that no ResourceWarning is emitted.

  • bpo-25940: Changed test_ssl to use its internal local server more. This avoids relying on svn.python.org, which recently changed root certificate.

  • bpo-25616: Tests for OrderedDict are extracted from test_collections into separate file test_ordered_dict.

  • bpo-25449: Added tests for OrderedDict subclasses.

  • bpo-25188: Add -P/–pgo to test.regrtest to suppress error output when running the test suite for the purposes of a PGO build. Initial patch by Alecsandru Patrascu.

  • bpo-22806: Add python -m test --list-tests command to list tests.

  • bpo-18174: python -m test --huntrleaks ... now also checks for leak of file descriptors. Patch written by Richard Oudkerk.

  • bpo-25260: Fix python -m test --coverage on Windows. Remove the list of ignored directories.

  • PCbuild\rt.bat now accepts an unlimited number of arguments to pass along to regrtest.py. Previously there was a limit of 9.

  • bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files cannot be written.

Построить

  • bpo-21277: Don’t try to link _ctypes with a ffi_convenience library.

  • bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier de Gaye.

  • bpo-26932: Fixed support of RTLD_* constants defined as enum values, not via macros (in particular on Android). Patch by Chi Hsuan Yen.

  • bpo-22359: Disable the rules for running _freeze_importlib and pgen when cross-compiling. The output of these programs is normally saved with the source code anyway, and is still regenerated when doing a native build. Patch by Xavier de Gaye.

  • bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except on Mac OS X. Patch written by Chi Hsuan Yen.

  • bpo-25702: A –with-lto configure option has been added that will enable link time optimizations at build time during a make profile-opt. Some compilers and toolchains are known to not produce stable code when using LTO, be sure to test things thoroughly before relying on it. It can provide a few % speed up over profile-opt alone.

  • bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old versions.

  • bpo-17603: Avoid error about nonexistent fileblocks.o file by using a lower-level check for st_blocks in struct stat.

  • bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern Thiel.

  • bpo-26465: Update Windows builds to use OpenSSL 1.0.2g.

  • bpo-25348: Разрешить параметры с именами --pgo и --pgo-job с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25827: Разрешить параметры с именами configure и --with-icc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25696: Fix installation of Python on UNIX with make -j9.

  • bpo-24986: It is now possible to build Python on Windows without errors when external libraries are not available.

  • bpo-24421: Compile Modules/_math.c once, before building extensions. Previously it could fail to compile properly if the math and cmath builds were concurrent.

  • bpo-26465: Update OS X 10.5+ 32-bit-only installer to build and link with OpenSSL 1.0.2g.

  • bpo-26268: Update Windows builds to use OpenSSL 1.0.2f.

  • bpo-25136: Support Apple Xcode 7’s new textual SDK stub libraries.

  • bpo-24324: Do not enable unreachable code warnings when using gcc as the option does not work correctly in older versions of gcc and has been silently removed as of gcc-4.5.

Windows

  • bpo-27053: Updates make_zip.py to correctly generate library ZIP file.

  • bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases that don’t include the contents of the include directory (that is, 1.0.2e and later).

  • bpo-26071: bdist_wininst created binaries fail to start and find 32bit Python

  • bpo-26073: Update the list of magic numbers in launcher

  • bpo-26065: Excludes venv from library when generating embeddable distro.

  • bpo-25022: Removed very outdated PC/example_nt/ directory.

Инструменты/демоверсии

  • bpo-26799: Fix python-gdb.py: don’t get C types once when the Python code is loaded, but get C types on demand. The C types can change if python-gdb.py is loaded before the Python executable. Patch written by Thomas Ilsche.

  • bpo-26271: Fix the Freeze tool to properly use flags passed through configure. Patch by Daniel Shaulov.

  • bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py. Patch by Guo Ci Teo.

  • bpo-26316: Fix variable name typo in Argument Clinic.

  • bpo-25440: Fix output of python-config –extension-suffix.

  • bpo-25154: The pyvenv script has been deprecated in favour of python3 -m venv.

C API

  • bpo-26312: SystemError is now raised in all programming bugs with using PyArg_ParseTupleAndKeywords(). RuntimeError did raised before in some programming bugs.

  • bpo-26198: ValueError is now raised instead of TypeError on buffer overflow in parsing «es#» and «et#» format units. SystemError is now raised instead of TypeError on programmatical error in parsing format string.

Python 3.5.5 final

Release date: 2018-02-04

There were no new changes in version 3.5.5.

Python 3.5.5 release candidate 1

Release date: 2018-01-23

Безопасность

  • bpo-32551: Разрешить параметры с именами sys.path[0] и bpo-29139 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30657: Fixed possible integer overflow in PyBytes_DecodeEscape, CVE-2017-1000158. Original patch by Jay Bosamiya; rebased to Python 3 by Miro Hrončok.

  • bpo-30947: Обновите встроенную копию libexpat с версии 2.2.1 до 2.2.3, чтобы получить исправления безопасности.

Ядро и встроенные модули

  • bpo-31095: Разрешить параметры с именами tp_dealloc и PyObject_GC_UnTrack() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Библиотека

  • bpo-32072: Исправлены проблемы с бинарными списками: Исправлено сохранение байтовых массивов. Идентичные объекты будут сохраняться только один раз. Равные ссылки будут загружаться как идентичные объекты. Добавлена поддержка сохранения и загрузки рекурсивных структур данных.

  • bpo-31170: expat: Обновление libexpat с 2.2.3 до 2.2.4. Исправление копирования частичных символов для ввода UTF-8 (ошибка 115 в libexpat): https://github.com/libexpat/libexpat/issues/115.

Python 3.5.4 final

Release date: 2017-08-07

Библиотека

  • bpo-30119: ftplib.FTP.putline() теперь выбрасывает ошибку ValueError на команды, содержащие CR или LF. Исправление от Donghee Na.

Python 3.5.4 release candidate 1

Release date: 2017-07-23

Безопасность

  • bpo-30730: Предотвращает внедрение переменных окружения в подпроцесс в Windows. Предотвращает передачу других переменных окружения и командных аргументов.

  • bpo-30694: Разрешить параметры с именами CVE-2017-9233 и CVE-2016-9063 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30500: Разрешить параметры с именами splithost('//127.0.0.1#@evil.com/') и 127.0.0.1 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29591: Разрешить параметры с именами CVE-2016-0718 и CVE-2016-4472 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Ядро и встроенные модули

  • bpo-30876: Относительный импорт из незагруженного пакета теперь повторно импортирует пакет вместо ошибки SystemError. Относительный импорт из непакета теперь завершается с ошибкой ImportError, а не SystemError.

  • bpo-30765: Избегайте блокировки в pthread_mutex_lock(), когда PyThread_acquire_lock() просят не блокировать.

  • bpo-27945: Исправлены различные segfault’ы с dict, когда входные коллекции мутируют во время поиска, вставки или сравнения. Основано на исправлениях Дуэйна Гриффина и Тима Митчелла.

  • bpo-25794: Исправлены type.__setattr__() и type.__delattr__() для неинтернированных имен атрибутов. Основано на исправлении Эрика Суна.

  • bpo-29935: Исправлены сообщения об ошибках в методе index() кортежей, списков и deque при передаче индексов неправильного типа.

  • bpo-28876: Разрешить параметры с именами bool(range) и len(range) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29600: Fix wrapping coroutine return values in StopIteration.

  • bpo-29537: Restore runtime compatibility with bytecode files generated by CPython 3.5.0 to 3.5.2, and adjust the eval loop to avoid the problems that could be caused by the malformed variant of the BUILD_MAP_UNPACK_WITH_CALL opcode that they may contain. Patch by Petr Viktorin, Serhiy Storchaka, and Nick Coghlan.

  • bpo-28598: Поддержка __rmod__ для подклассов str, вызываемых перед str.__mod__. Исправление от Martijn Pieters.

  • bpo-29602: Исправлена некорректная обработка подписанных нулей в конструкторе complex для подклассов complex и для входов, имеющих метод __complex__. Исправление Сергея Сторчака.

  • bpo-29347: Исправлена возможность разыменования неопределенных указателей при создании объектов weakref.

  • bpo-29438: Исправлена проблема use-after-free в дикте разделения ключей.

  • bpo-29319: Предотвращение перезаписи RunMainFromImporter в sys.path[0].

  • bpo-29337: Исправлено возможное предупреждение BytesWarning при сравнении объектов кода. Предупреждения могли выдаваться во время компиляции.

  • bpo-29478: Если при использовании политики Compat32 указано значение max_line_length=None, оно больше не игнорируется. Исправление Мирчи Косбука.

Библиотека

  • bpo-29403: Исправьте autospec unittest.mock, чтобы он не ошибался при использовании встроенных функций с привязкой к методу. Исправление Аарона Галлахера.

  • bpo-30961: Исправление декрементирования заимствованной ссылки в tracemalloc.

  • bpo-30886: Исправьте multiprocessing.Queue.join_thread(): теперь он ожидает завершения потока, даже если поток был запущен тем же процессом, который создал очередь.

  • bpo-29854: Исправление segfault в readline при использовании опции readline’s history-size. Исправление Нира Соффера.

  • bpo-30807: signal.setitimer() может отключить таймер при передаче крошечного значения. Крошечные значения (например, 1e-6) являются допустимыми ненулевыми значениями для setitimer(), которая задана как принимающая интервалы с микросекундным разрешением. Однако на некоторых платформах наша процедура преобразования может превратить 1e-6 в нулевой интервал, тем самым отключив таймер вместо того, чтобы (повторно) запланировать его.

  • bpo-30441: Исправление ошибки при изменении os.environ во время итерации по нему

  • bpo-30532: Исправление парсера значений заголовков электронной почты, удаляющего пробелы при складывании в некоторых случаях.

  • bpo-29169: Обновление zlib до версии 1.2.11.

  • bpo-30879: os.listdir() и os.scandir() теперь выдают имена байтов при вызове с аргументом типа bytes.

  • bpo-30746: Разрешить параметры с именами os.putenv() и os.spawn*() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29755: Исправлено семейство функций lgettext() в модуле gettext. Теперь они всегда возвращают байты.

  • bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases when a package is only shipped with bytecodes. Patch by Alexandru Ardelean.

  • bpo-23890: unittest.TestCase.assertRaises() теперь вручную разрывает цикл ссылок, чтобы не держать объекты живыми дольше, чем ожидается.

  • bpo-30149: inspect.signature() теперь поддерживает callables с параметрами с переменными аргументами, обернутыми partialmethod. Исправление от Donghee Na.

  • bpo-29931: Исправлена проверка сравнения для объектов ipaddress.ip_interface. Исправление от Sanjay Sundaresan.

  • bpo-24484: Избегайте состояния гонки при многопроцессорной очистке.

  • bpo-28994: Больше не отображается обратный след для SystemExit, вызванного в обратном вызове, зарегистрированном atexit.

  • bpo-30508: Не регистрируйте исключения, если был вызван метод Task/Future «cancel()».

  • bpo-28556: Обновления в модуле типизации: Добавление общего AsyncContextManager, добавление поддержки ContextManager на всех версиях. Авторы оригинальных PR: Jelle Zijlstra и Ivan Levkivskyi

  • bpo-29870: Исправление утечек ssl-сокетов при прерывании соединения в реализации asyncio/ssl. Исправление от Michaël Sghaïer.

  • bpo-29743: Закрытие транспорта во время процесса рукопожатия приводит к утечке открытого сокета. Исправление от Николая Кима

  • bpo-27585: Исправление отмены ожидания в asyncio.Lock. Исправление от Mathieu Sornay.

  • bpo-30418: В Windows subprocess.Popen.communicate() теперь также игнорирует EINVAL на stdin.write(), если дочерний процесс все еще запущен, но закрыл трубу.

  • bpo-30378: Исправление проблемы, из-за которой logging.handlers.SysLogHandler не может обрабатывать IPv6-адреса.

  • bpo-29960: Сохранение состояния генератора, когда _random.Random.setstate() вызывает исключение. Исправление от Bryan Olson.

  • bpo-30414: multiprocessing.Queue._feed фоновый запущенный поток не прерывается из главного цикла при исключении.

  • bpo-30003: Исправлена работа со сбегающими символами в кодеке HZ. Основано на патче Ма Лина.

  • bpo-30301: Исправление ошибки AttributeError при использовании SimpleQueue.empty() в методах запуска spawn и forkserver.

  • bpo-30329: imaplib и poplib теперь отлавливают ошибку WSAEINVAL сокета Windows (код 10022) при выключении(SHUT_RDWR): Была предпринята попытка выполнить недопустимую операцию. Эта ошибка иногда возникает при SSL-соединениях.

  • bpo-30375: Предупреждения, выдаваемые при компиляции регулярного выражения, теперь всегда указывают на строку в пользовательском коде. Ранее они могли указывать на внутренности модуля re, если выдавались изнутри групп или условий.

  • bpo-30048: Разрешить параметры с именами Task.cancel() и await с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29990: Исправление проверки диапазона в декодере GB18030. Оригинальный патч от Ma Lin.

  • bpo-26293: Change resulted because of zipfile breakage. (See also: bpo-29094)

  • bpo-30243: Удалены методы __init__ сканера и кодировщика _json. Их неправильное использование могло привести к утечкам памяти или сбоям. Теперь объекты сканера и кодировщика полностью инициализируются в методах __new__.

  • bpo-30185: Избегайте отслеживания прерываний KeyboardInterrupt в вспомогательном процессе forkserver при получении Ctrl-C.

  • bpo-28556: Различные обновления модуля типизации: добавление типа typing.NoReturn, использование WrapperDescriptorType, исправление мелких ошибок. Авторы оригинальных PR - Джим Фасаракис-Хиллиард и Иван Левкивский.

  • bpo-30205: Исправление getsockname() для несвязанных сокетов AF_UNIX в Linux.

  • bpo-30070: Исправлены утечки и сбои в обработке ошибок в модуле парсера.

  • bpo-30061: Исправлены сбои в методах IOBase __next__() и readlines(), когда readline() или __next__() соответственно возвращали объект, не имеющий размера. Исправлены возможные другие ошибки, вызванные непроверкой результатов PyObject_Size(), PySequence_Size() или PyMapping_Size().

  • bpo-30068: _io._IOBase.readlines будет проверять, закрыт ли он первым при наличии подсказки.

  • bpo-29694: Исправлено состояние гонки в pathlib mkdir с флагом parents=True. Исправление от Армина Риго.

  • bpo-29692: Исправлена произвольная развязка исключений RuntimeError в contextlib.contextmanager. Исправление Сиддхарта Веланкара.

  • bpo-29998: При пикировке и копировании ImportError теперь сохраняются атрибуты имени и пути.

  • bpo-29942: Исправление сбоя в itertools.chain.from_iterable при столкновении с длинными прогонами пустых итераций.

  • bpo-27863: Исправлены многочисленные сбои в ElementTree, вызванные условиями гонки и неправильными типами.

  • bpo-28699: Исправлена ошибка в пулах в файле multiprocessing.pool, в результате которой при возникновении исключения в самом начале итерабельной таблицы исключение могло быть проглочено или привести к зависанию программы. Исправление подготовили Дэвин Поттс и Сян Чжан.

  • bpo-25803: Избегайте некорректных ошибок, выдаваемых Path.mkdir(exist_ok=True), когда ОС отдает приоритет ошибкам типа EACCES перед EEXIST.

  • bpo-29861: Освободите ссылки на задачи, их аргументы и результаты, как только они завершатся в multiprocessing.Pool.

  • bpo-29884: faulthandler: Восстановление старого sigaltstack во время сноса. Исправление Кристофа Зейтуни.

  • bpo-25455: Исправлены сбои при repr рекурсивных буферизованных файлоподобных объектов.

  • bpo-29800: Исправление сбоев в partial.__repr__, если ключи partial.keywords не являются строками. Исправление от Michael Seifert.

  • bpo-29742: get_extra_info() вызывает исключение, если вызывается на закрытом ssl-транспорте. Исправление от Николая Кима.

  • bpo-8256: Исправлена возможность сбоя или падения input(), если атрибуты «encoding» или «errors» в sys.stdin или sys.stdout не установлены или не являются строками.

  • bpo-28298: Fix a bug that prevented array „Q“, „L“ and „I“ from accepting big intables (objects that have __int__) as elements. Patch by Oren Milman.

  • bpo-29615: SimpleXMLRPCDispatcher больше не цепляет KeyError (или любое другое исключение) к исключению(ям), поднятому(ым) в диспетчеризируемых методах. Исправление от Петра Мотейлека.

  • bpo-29704: asyncio.subprocess.SubprocessStreamProtocol больше не закрывается до закрытия всех труб.

  • bpo-29703: Исправьте asyncio для поддержки инстанцирования новых циклов событий в дочерних процессах.

  • bpo-29376: Исправьте ошибку утверждения в threading._DummyThread.is_alive().

  • bpo-29110: Исправление утечки объекта файла в aifc.open(), когда файл указан как путь к файловой системе и не является допустимым форматом AIFF. Исправление Энтони Чжана.

  • bpo-28961: Исправление помощника unittest.mock._Call: больше не игнорирует параметр name. Автор патча - Jiajun Huang.

  • bpo-29532: Изменение словаря kwarg, переданного в functools.partial(), больше не влияет на частичный объект после его создания.

  • bpo-28556: Различные обновления модуля типизации: typing.Counter, typing.ChainMap, улучшено кэширование ABC и т.д. Авторы оригинальных PR: Jelle Zijlstra, Ivan Levkivskyi, Manuel Krebber и Łukasz Langa.

  • bpo-29100: Исправьте регрессию datetime.fromtimestamp(), появившуюся в Python 3.6.0: проверьте минимальный и максимальный годы.

  • bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when used with a rare combination of multiprocessing and custom codecs.

  • bpo-29416: Предотвращение бесконечного цикла в pathlib.Path.mkdir

  • bpo-29444: Исправлено обращение к буферу за пределами границ в методе group() объекта match. Основано на исправлении от WGH.

  • bpo-29335: Исправьте subprocess.Popen.wait(), когда дочерний процесс вышел не в завершенное, а в остановленное состояние (например, при наличии ptrace).

  • bpo-29290: Исправление регрессии в argparse, из-за которой сообщения справки обрывались на неразрывных пробелах.

  • bpo-28735: Исправлено сравнение mock.MagickMock с mock.ANY.

  • bpo-29011: Fix an important omission by adding Deque to the typing module.

  • bpo-29219: Исправлена бесконечная рекурсия при повторном использовании неинициализированных экземпляров ctypes.CDLL.

  • bpo-28969: Исправлено состояние гонки в реализации functools.lru_cache на C. KeyError могла быть вызвана, когда кэшированная функция с полным кэшем одновременно вызывалась из разных потоков с одинаковыми некэшированными аргументами.

  • bpo-29142: В urllib.request суффиксы в переменной окружения no_proxy с ведущими точками могли повторно соответствовать связанным именам хостов (например, .b.c соответствует a.b.c). Исправление Милана Оберкирха.

Документация

  • bpo-30176: Add missing attribute related constants in curses documentation.

  • bpo-26985: Add missing info of code object in inspect documentation.

  • bpo-28929: Link the documentation to its source file on GitHub.

  • bpo-25008: Document smtpd.py as effectively deprecated and add a pointer to aiosmtpd, a third-party asyncio-based replacement.

  • bpo-26355: Add canonical header link on each page to corresponding major version of the documentation. Patch by Matthias Bussonnier.

  • bpo-29349: Fix Python 2 syntax in code for building the documentation.

Тесты

  • bpo-30822: Fix regrtest command line parser to allow passing -u extralargefile to run test_zipfile64.

  • bpo-30383: Разрешить параметры с именами bpo-30523 и bpo-30540 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-30357: test_thread: setUp() now uses support.threading_setup() and support.threading_cleanup() to wait until threads complete to avoid random side effects on following tests. Initial patch written by Grzegorz Grzywacz.

  • bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip some tests of select.poll when running on macOS due to unresolved issues with the underlying system poll function on some macOS versions.

  • bpo-30197: Enhanced functions swap_attr() and swap_item() in the test.support module. They now work when delete replaced attribute or item inside the with statement. The old value of the attribute or item (or None if it doesn’t exist) now will be assigned to the target of the «as» clause, if there is one.

  • bpo-29571: Разрешить параметры с именами re.LOCALE и locale.getpreferredencoding(False) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

Построить

  • bpo-29243: Разрешить параметры с именами make test и make install с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23404: Разрешить параметры с именами make touch и make regen-all с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-29643: Fix --enable-optimization didn’t work.

Windows

  • bpo-30687: Locate msbuild.exe on Windows when building rather than vcvarsall.bat

  • bpo-29392: Prevent crash when passing invalid arguments into msvcrt module.

C API

  • bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if Py_LIMITED_API is set to the value between 0x03050400 and 0x03060000 (not including) or 0x03060100 or higher.

  • bpo-29083: Fixed the declaration of some public API functions. PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and Py_BuildValue() were not available in limited API of version < 3.3 when PY_SSIZE_T_CLEAN is defined.

Python 3.5.3 final

Release date: 2017-01-17

There were no code changes between 3.5.3rc1 and 3.5.3 final.

Python 3.5.3 release candidate 1

Release date: 2017-01-02

Безопасность

  • bpo-27278: Fix os.urandom() implementation using getrandom() on Linux. Truncate size to INT_MAX and loop until we collected enough random bytes, instead of casting a directly Py_ssize_t to int.

  • bpo-22636: Avoid shell injection problems with ctypes.util.find_library().

Ядро и встроенные модули

  • bpo-29073: bytearray formatting no longer truncates on first null byte.

  • bpo-28932: Не включайте <sys/random.h>, если он не существует.

  • bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must not convert combined table into split table.

  • bpo-25677: Исправление позиционирования символа синтаксической ошибки для блоков с отступами. Основано на исправлении Майкла Лейзелла.

  • bpo-29000: Исправлено форматирование байтов окталов с нулевой прокладкой в альтернативной форме.

  • bpo-28512: Исправлена установка атрибута смещения SyntaxError с помощью PyErr_SyntaxLocationEx() и PyErr_SyntaxLocationObject().

  • bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy bug caused by a monkey-patched len() function.

  • bpo-28648: Исправлен сбой в Py_DecodeLocale() в отладочной сборке на Mac OS X при декодировании астральных символов. Исправление от Xiang Zhang.

  • bpo-19398: Лишний слэш больше не добавляется к компонентам sys.path в случае пустых компонентов PYTHONPATH во время компиляции.

  • bpo-28426: Исправлен потенциальный сбой в PyUnicode_AsDecodedObject() в отладочной сборке.

  • bpo-23782: Исправлена возможная утечка памяти в _PyTraceback_Add() и потеря исключений в PyTraceBack_Here().

  • bpo-28379: Добавлены проверки на вменяемость и тесты для PyUnicode_CopyCharacters(). Исправление от Xiang Zhang.

  • bpo-28376: Тип итератора дальнего действия теперь регистрируется как Iterator. Исправление от Орена Милмана.

  • bpo-28376: The constructor of range_iterator now checks that step is not 0. Patch by Oren Milman.

  • bpo-26906: Разрешение специальных методов неинициализированного типа теперь вызывает неявную инициализацию типа вместо отказа.

  • bpo-18287: PyType_Ready() теперь проверяет, что tp_name не является NULL. Автор оригинального патча - Никлас Коеп.

  • bpo-24098: Исправлено возможное падение при изменении AST в процессе компиляции.

  • bpo-28350: Строковые константы с нулевым символом больше не интернируются.

  • bpo-26617: Исправление сбоя при запуске GC во время обратного вызова weakref.

  • bpo-27942: Строковые константы теперь рекурсивно интернализируются в кортежах и фростенсетах.

  • bpo-21578: Исправлено вводящее в заблуждение сообщение об ошибке при вызове ImportError с недопустимыми ключевыми словами args.

  • bpo-28203: Fix incorrect type in error message from complex(1.0, {2:3}). Patch by Soumya Sharma.

  • bpo-27955: Откат при чтении устройства /dev/urandom, когда системный вызов getrandom() терпит неудачу с EPERM, например, при блокировке SECCOMP.

  • bpo-28131: Исправление регрессии в zipimport’s compile_source(). zipimport должен использовать тот же уровень оптимизации, что и интерпретатор.

  • bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is compiled with NSMALLPOSINTS = 0.

  • bpo-25758: Prevents zipimport from unnecessarily encoding a filename (patch by Eryk Sun)

  • bpo-28189: dictitems_contains no longer swallows compare errors. (Patch by Xiang Zhang)

  • bpo-27812: Properly clear out a generator’s frame’s backreference to the generator to prevent crashes in frame.clear().

  • bpo-27811: Fix a crash when a coroutine that has not been awaited is finalized with warnings-as-errors enabled.

  • bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after use of „def“ in _PyState_AddModule(). Initial patch by Christian Heimes.

  • bpo-26020: set literal evaluation order did not match documented behaviour.

  • bpo-27782: Разрешить параметры с именами m_methods и Py_create_mod с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-27936: The round() function accepted a second None argument for some types but not for others. Fixed the inconsistency by accepting None for all numeric types.

  • bpo-27487: Warn if a submodule argument to «python -m» or runpy.run_module() is found in sys.modules after parent packages are imported, but before the submodule is executed.

  • bpo-27558: Fix a SystemError in the implementation of «raise» statement. In a brand new thread, raise a RuntimeError since there is no active exception to reraise. Patch written by Xiang Zhang.

  • bpo-27419: Standard __import__() no longer look up «__import__» in globals or builtins for importing submodules or «from import». Fixed handling an error of non-string package name.

  • bpo-27083: Respect the PYTHONCASEOK environment variable under Windows.

  • bpo-27514: Make having too many statically nested blocks a SyntaxError instead of SystemError.

  • bpo-27473: Fixed possible integer overflow in bytes and bytearray concatenations. Patch by Xiang Zhang.

  • bpo-27507: Add integer overflow check in bytearray.extend(). Patch by Xiang Zhang.

  • bpo-27581: Don’t rely on wrapping for overflow check in PySequence_Tuple(). Patch by Xiang Zhang.

  • bpo-27443: __length_hint__() of bytearray iterators no longer return a negative integer for a resized bytearray.

  • bpo-27942: Fix memory leak in codeobject.c

Библиотека

  • bpo-15812: inspect.getframeinfo() теперь корректно показывает первую строку контекста. Исправление Сэма Бриза.

  • bpo-29094: Offsets in a ZIP file created with extern file object and modes «w» and «x» now are relative to the start of the file.

  • bpo-13051: Исправлены ошибки рекурсии в больших или измененных по размеру curses.textpad.Textbox. Основано на патче Тихо Андерсена.

  • bpo-29119: Fix weakrefs in the pure python version of collections.OrderedDict move_to_end() method. Contributed by Andra Bogildea.

  • bpo-9770: предикаты curses.ascii теперь корректно работают с отрицательными целыми числами.

  • bpo-28427: старые ключи не должны удалять новые значения из WeakValueDictionary при сборе из другого потока.

  • bpo-28923: Удалите артефакты редактора из Tix.py.

  • bpo-28871: Исправлен сбой при деаллокации глубокого дерева ElementTree.

  • bpo-19542: Исправление ошибок в WeakValueDictionary.setdefault() и WeakValueDictionary.pop(), когда сбор GC происходит в другом потоке.

  • bpo-20191: Fixed a crash in resource.prlimit() when pass a sequence that doesn’t own its elements as limits.

  • bpo-28779: multiprocessing.set_forkserver_preload() приведет к аварийному завершению процесса forkserver, если предварительно загруженный модуль инстанцирует некоторые объекты мультипроцессинга, такие как блокировки.

  • bpo-28847: dbm.dumb now supports reading read-only files and no longer writes the index file when it is not changed.

  • bpo-25659: В ctypes предотвратите падение при вызове методов from_buffer() и from_buffer_copy() для абстрактных классов типа Array.

  • bpo-28732: Fix crash in os.spawnv() with no elements in args

  • bpo-28485: Always raise ValueError for negative compileall.compile_dir(workers=…) parameter, even when multithreading is unavailable.

  • bpo-28387: Исправлено возможное падение деаллокатора _io.TextIOWrapper, когда сборщик мусора вызывался в другом потоке. Основано на исправлении Себастьяна Куфре.

  • bpo-27517: Компрессор и декомпрессор LZMA больше не вызывают исключения, если им дважды передаются пустые данные. Исправление от Бенджамина Фогла.

  • bpo-28549: Исправлена ошибка segfault в addch() в curses с ncurses6.

  • bpo-28449: tarfile.open() с режимом «r» или «r:» теперь пытается открыть tar-файл со сжатием, прежде чем пытаться открыть его без сжатия. В противном случае с вероятностью 50% он терпел неудачу при ignore_zeros=True.

  • bpo-23262: Модуль webbrowser теперь поддерживает Firefox 36+ и производные браузеры. Основано на патче Олега Бройтмана.

  • bpo-27939: Исправлены ошибки в tkinter.ttk.LabeledScale и tkinter.Scale, вызванные внутренним представлением шкалы как float-значения в Tk. tkinter.IntVar теперь работает, если float-значение установлено в базовую переменную Tk.

  • bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at the start of new line after printing a month’s calendar. Patch by Xiang Zhang.

  • bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces. Based on patch by Kaarle Ritvanen.

  • bpo-28353: os.fwalk() no longer fails on broken links.

  • bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a workaround to Tix library bug.

  • bpo-28488: shutil.make_archive() no longer add entry «./» to ZIP archive.

  • bpo-24452: Make webbrowser support Chrome on Mac OS X.

  • bpo-20766: Fix references leaked by pdb in the handling of SIGINT handlers.

  • bpo-26293: Fixed writing ZIP files that starts not from the start of the file. Offsets in ZIP file now are relative to the start of the archive in conforming to the specification.

  • bpo-28321: Fixed writing non-BMP characters with binary format in plistlib.

  • bpo-28322: Fixed possible crashes when unpickle itertools objects from incorrect pickle data. Based on patch by John Leitch.

  • Fix possible integer overflows and crashes in the mmap module with unusual usage patterns.

  • bpo-1703178: Fix the ability to pass the –link-objects option to the distutils build_ext command.

  • bpo-28253: Fixed calendar functions for extreme months: 0001-01 and 9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so that they don’t call itermonthdates() which can cause datetime.date under/overflow.

  • bpo-28275: Fixed possible use after free in the decompress() methods of the LZMADecompressor and BZ2Decompressor classes. Original patch by John Leitch.

  • bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation() if pass invalid string-like object as a name. Patch by Xiang Zhang.

  • bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py. Patch by Madison May.

  • bpo-27611: Fixed support of default root window in the tkinter.tix module.

  • bpo-27348: In the traceback module, restore the formatting of exception messages like «Exception: None». This fixes a regression introduced in 3.5a2.

  • bpo-25651: Allow false values to be used for msg parameter of subTest().

  • bpo-27932: Prevent memory leak in win32_ver().

  • Fix UnboundLocalError in socket._sendfile_use_sendfile.

  • bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of os.stat(). Patch by Eryk Sun.

  • bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an empty bytestring is passed.

  • bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.

  • bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by Gergely Imreh and Markus Holtermann.

  • bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and binascii.a2b_qp().

  • bpo-19003: Разрешить параметры с именами \r и \n с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-28019: itertools.count() no longer rounds non-integer step in range between 1.0 and 2.0 to 1.

  • bpo-25969: Update the lib2to3 grammar to handle the unpacking generalizations added in 3.5.

  • bpo-14977: mailcap now respects the order of the lines in the mailcap files («first match»), as required by RFC 1542. Patch by Michael Lazar.

  • bpo-24594: Validates persist parameter when opening MSI database

  • bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes (Patch by Duane Griffin. Reviewed and approved by Stefan Behnel.)

  • bpo-28047: Fixed calculation of line length used for the base64 CTE in the new email policies.

  • bpo-27445: Don’t pass str(_charset) to MIMEText.set_payload(). Patch by Claude Paroz.

  • bpo-22450: urllib now includes an Accept: */* header among the default headers. This makes the results of REST API requests more consistent and predictable especially when proxy servers are involved.

  • lib2to3.pgen3.driver.load_grammar() now creates a stable cache file between runs given the same Grammar.txt input regardless of the hash randomization setting.

  • bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers in the «ctypes» and «array» modules.

  • bpo-22233: Break email header lines only on the RFC specified CR and LF characters, not on arbitrary unicode line breaks. This also fixes a bug in HTTP header parsing.

  • bpo-27988: Fix email iter_attachments incorrect mutation of payload list.

  • bpo-27691: Fix ssl module’s parsing of GEN_RID subject alternative name fields in X.509 certs.

  • bpo-27850: Remove 3DES from ssl module’s default cipher list to counter measure sweet32 attack (CVE-2016-2183).

  • bpo-27766: Add ChaCha20 Poly1305 to ssl module’s default cipher list. (Required OpenSSL 1.1.0 or LibreSSL).

  • bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0.

  • Remove support for passing a file descriptor to os.access. It never worked but previously didn’t raise.

  • bpo-12885: Fix error when distutils encounters symlink.

  • bpo-27881: Fixed possible bugs when setting sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang.

  • bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory creates not a cursor. Patch by Xiang Zhang.

  • bpo-19884: Avoid spurious output on OS X with Gnu Readline.

  • bpo-27706: Restore deterministic behavior of random.Random().seed() for string seeds using seeding version 1. Allows sequences of calls to random() to exactly match those obtained in Python 2. Patch by Nofar Schnider.

  • bpo-10513: Fix a regression in Connection.commit(). Statements should not be reset after a commit.

  • A new version of typing.py from https://github.com/python/typing: Collection (only for 3.6) (bpo-27598). Add FrozenSet to __all__ (upstream #261). Fix crash in _get_type_vars() (upstream #259). Remove the dict constraint in ForwardRef._eval_type (upstream #252).

  • bpo-27539: Fix unnormalised Fraction.__pow__ result in the case of negative exponent and negative base.

  • bpo-21718: cursor.description is now available for queries using CTEs.

  • bpo-2466: posixpath.ismount now correctly recognizes mount points which the user does not have permission to access.

  • bpo-27773: Correct some memory management errors server_hostname in _ssl.wrap_socket().

  • bpo-26750: unittest.mock.create_autospec() now works properly for subclasses of property() and other data descriptors.

  • In the curses module, raise an error if window.getstr() or window.instr() is passed a negative value.

  • bpo-27783: Fix possible usage of uninitialized memory in operator.methodcaller.

  • bpo-27774: Fix possible Py_DECREF on unowned object in _sre.

  • bpo-27760: Fix possible integer overflow in binascii.b2a_qp.

  • bpo-27758: Fix possible integer overflow in the _csv module for large record lengths.

  • bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates that the script is in CGI mode.

  • bpo-27656: Do not assume sched.h defines any SCHED_* constants.

  • bpo-27130: In the «zlib» module, fix handling of large buffers (typically 4 GiB) when compressing and decompressing. Previously, inputs were limited to 4 GiB, and compression and decompression operations did not properly handle results of 4 GiB.

  • bpo-27533: Release GIL in nt._isdir

  • bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original patch by Alexandre Vassalotti.

  • bpo-27522: Avoid an unintentional reference cycle in email.feedparser.

  • bpo-26844: Fix error message for imp.find_module() to refer to „path“ instead of „name“. Patch by Lev Maximov.

  • bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an error about unclean EOF.

  • bpo-27466: Change time format returned by http.cookie.time2netscape, confirming the netscape cookie format and making it consistent with documentation.

  • bpo-26664: Fix activate.fish by removing mis-use of $.

  • bpo-22115: Fixed tracing Tkinter variables: trace_vdelete() with wrong mode no longer break tracing, trace_vinfo() now always returns a list of pairs of strings, tracing in the «u» mode now works.

  • Fix a scoping issue in importlib.util.LazyLoader which triggered an UnboundLocalError when lazy-loading a module that was already put into sys.modules.

  • bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and ispunct().

  • bpo-26754: Some functions (compile() etc) accepted a filename argument encoded as an iterable of integers. Now only strings and byte-like objects are accepted.

  • bpo-27048: Prevents distutils failing on Windows when environment variables contain non-ASCII characters

  • bpo-27330: Fixed possible leaks in the ctypes module.

  • bpo-27238: Got rid of bare excepts in the turtle module. Original patch by Jelle Zijlstra.

  • bpo-27122: When an exception is raised within the context being managed by a contextlib.ExitStack() and one of the exit stack generators catches and raises it in a chain, do not re-raise the original exception when exiting, let the new chained one through. This avoids the PEP 479 bug described in issue25782.

  • bpo-26386: Fixed ttk.TreeView selection operations with item id’s containing spaces.

  • bpo-16182: Fix various functions in the «readline» module to use the locale encoding, and fix get_begidx() and get_endidx() to return code point indexes.

  • bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton.

  • bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to Paulo Andrade and Petr Viktorin for the analysis and patch.

  • bpo-21201: Improves readability of multiprocessing error message. Thanks to Wojciech Walczak for patch.

  • bpo-27456: asyncio: Set TCP_NODELAY by default.

  • bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by Kevin Conway.

  • bpo-28174: Handle when SO_REUSEPORT isn’t properly supported. Patch by Seth Michael Larson.

  • bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by iceboy.

  • bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.

  • bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.

  • bpo-27759: Fix selectors incorrectly retain invalid file descriptors. Patch by Mark Williams.

  • bpo-28368: Refuse monitoring processes if the child watcher has no loop attached. Patch by Vincent Michel.

  • bpo-28369: Raise RuntimeError when transport’s FD is used with add_reader, add_writer, etc.

  • bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг Марк.

  • bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.

  • bpo-28372: Fix asyncio to support formatting of non-python coroutines.

  • bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг Марк.

  • bpo-27972: Prohibit Tasks to await on themselves.

  • bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children are done. Patch by Johannes Ebke.

  • bpo-26796: Don’t configure the number of workers for default threadpool executor. Initial patch by Hans Lawrenz.

  • bpo-28600: Optimize loop.call_soon().

  • bpo-28613: Fix get_event_loop() return the current loop if called from coroutines/callbacks.

  • bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin Mayfield.

  • bpo-28652: Make loop methods reject socket kinds they do not support.

  • bpo-28653: Fix a refleak in functools.lru_cache.

  • bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects.

  • bpo-24142: Reading a corrupt config file left the parser in an invalid state. Original patch by Florian Höch.

  • bpo-28990: Fix SSL hanging if connection is closed before handshake completed. (Patch by HoHo-Ho)

IDLE

  • bpo-15308: Add „interrupt execution“ (^C) to Shell menu. Patch by Roger Serwy, updated by Bayard Randel.

  • bpo-27922: Stop IDLE tests from „flashing“ gui widgets on the screen.

  • Add version to title of IDLE help window.

  • bpo-25564: In section on IDLE – console differences, mention that using exec means that __builtins__ is defined for each statement.

  • bpo-27714: text_textview and test_autocomplete now pass when re-run in the same process. This occurs when test_idle fails when run with the -w option but without -jn. Fix warning from test_config.

  • bpo-25507: IDLE no longer runs buggy code because of its tkinter imports. Users must include the same imports required to run directly in Python.

  • bpo-27452: add line counter and crc to IDLE configHandler test dump.

  • bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names.

  • bpo-27245: IDLE: Cleanly delete custom themes and key bindings. Previously, when IDLE was started from a console or by import, a cascade of warnings was emitted. Patch by Serhiy Storchaka.

C API

  • bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.

  • bpo-26754: PyUnicode_FSDecoder() accepted a filename argument encoded as an iterable of integers. Now only strings and bytes-like objects are accepted.

Документация

  • bpo-28513: Documented command-line interface of zipfile.

Тесты

  • bpo-28950: Disallow -j0 to be combined with -T/-l/-M in regrtest command line arguments.

  • bpo-28666: Now test.support.rmtree is able to remove unwritable or unreadable directories.

  • bpo-23839: Various caches now are cleared before running every test file.

  • bpo-28409: regrtest: fix the parser of command line arguments.

  • bpo-27787: Call gc.collect() before checking each test for «dangling threads», since the dangling threads are weak references.

  • bpo-27369: In test_pyexpat, avoid testing an error message detail that changed in Expat 2.2.0.

Инструменты/демоверсии

  • bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the current «re» module, avoid invalid Python backslash escapes, and fix a bug parsing escaped C quote signs.

  • bpo-27332: Fixed the type of the first argument of module-level functions generated by Argument Clinic. Patch by Petr Viktorin.

  • bpo-27418: Fixed Tools/importbench/importbench.py.

Windows

  • bpo-28251: Improvements to help manuals on Windows.

  • bpo-28110: launcher.msi has different product codes between 32-bit and 64-bit

  • bpo-25144: Ensures TargetDir is set before continuing with custom install.

  • bpo-27469: Adds a shell extension to the launcher so that drag and drop works correctly.

  • bpo-27309: Enabled proper Windows styles in python[w].exe manifest.

Построить

  • bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat

  • bpo-23903: Added missed names to PC/python3.def.

  • bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and Michael Haubenwallner.

  • bpo-26359: Rename –with-optimiations to –enable-optimizations.

  • bpo-28444: Fix missing extensions modules when cross compiling.

  • bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.

  • bpo-28258: Fixed build with Estonian locale (python-config and distclean targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis.

  • bpo-26661: setup.py now detects system libffi with multiarch wrapper.

  • bpo-28066: Fix the logic that searches build directories for generated include files when building outside the source tree.

  • bpo-15819: Remove redundant include search directory option for building outside the source tree.

  • bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach)

  • bpo-27705: Update message in validate_ucrtbase.py

  • bpo-27983: Cause lack of llvm-profdata tool when using clang as required for PGO linking to be a configure time error rather than make time when –with-optimizations is enabled. Also improve our ability to find the llvm-profdata tool on MacOS and some Linuxes.

  • bpo-26307: The profile-opt build now applies PGO to the built-in modules.

  • bpo-26359: Add the –with-optimizations configure flag.

  • bpo-27713: Suppress spurious build warnings when updating importlib’s bootstrap files. Patch by Xiang Zhang

  • bpo-25825: Correct the references to Modules/python.exp and ld_so_aix, which are required on AIX. This updates references to an installation path that was changed in 3.2a4, and undoes changed references to the build tree that were made in 3.5.0a1.

  • bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi Hsuan Yen.

  • bpo-27641: The configure script now inserts comments into the makefile to prevent the pgen and _freeze_importlib executables from being cross-compiled.

  • bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be used for file generation during the build.

  • bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update FreedBSD version checks for the original ctype UTF-8 workaround.

  • bpo-28676: Prevent missing „getentropy“ declaration warning on macOS. Patch by Gareth Rees.

Python 3.5.2 final

Release date: 2016-06-26

Ядро и встроенные модули

  • bpo-26930: Update Windows builds to use OpenSSL 1.0.2h.

Тесты

  • bpo-26867: Ubuntu’s openssl OP_NO_SSLv3 is forced on by default; fix test.

IDLE

  • bpo-27365: Allow non-ascii in idlelib/NEWS.txt - minimal part for 3.5.2.

Python 3.5.2 release candidate 1

Release date: 2016-06-12

Безопасность

  • bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283.

  • Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by Team Oststrom.

  • bpo-26839: Разрешить параметры с именами os.urandom() и getrandom() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26657: Fix directory traversal vulnerability with http.server on Windows. This fixes a regression that was introduced in 3.3.4rc1 and 3.4.0rc1. Based on patch by Philipp Hagemeister.

  • bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is empty. Patch by Baji.

  • bpo-25939: On Windows open the cert store readonly in ssl.enum_certificates.

Ядро и встроенные модули

  • bpo-27066: Fixed SystemError if a custom opener (for open()) returns a negative number without setting an exception.

  • bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by Xavier de Gaye.

  • bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the «N» format unit.

  • bpo-26991: Fix possible refleak when creating a function with annotations.

  • bpo-27039: Fixed bytearray.remove() for values greater than 127. Patch by Joe Jevnik.

  • bpo-23640: int.from_bytes() no longer bypasses constructors for subclasses.

  • bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL pointer.

  • bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for interpolation unintentionally added with move to Python 3. Behavior no longer does any interpolation in .pypirc files, matching behavior in Python 2.7 and Setuptools 19.0.

  • bpo-26659: Make the builtin slice type support cycle collection.

  • bpo-26718: super.__init__ no longer leaks memory if called multiple times. NOTE: A direct call of super.__init__ is not endorsed!

  • bpo-25339: PYTHONIOENCODING now has priority over locale in setting the error handler for stdin and stdout.

  • bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes are generic sequence iterators, iterators of str, bytes, bytearray, list, tuple, set, frozenset, dict, OrderedDict, corresponding views and os.scandir() iterator.

  • bpo-26581: If coding cookie is specified multiple times on a line in Python source code file, only the first one is taken to account.

  • bpo-26464: Fix str.translate() when string is ASCII and first replacements removes character, but next replacement uses a non-ASCII character or a string longer than 1 character. Regression introduced in Python 3.5.0.

  • bpo-22836: Ensure exception reports from PyErr_Display() and PyErr_WriteUnraisable() are sensible even when formatting them produces secondary errors. This affects the reports produced by sys.__excepthook__() and when __del__() raises an exception.

  • bpo-26302: Correct behavior to reject comma as a legal character for cookie names.

  • bpo-4806: Avoid masking the original TypeError exception when using star (*) unpacking in function calls. Based on patch by Hagen Fürstenau and Daniel Urban.

  • bpo-27138: Fix the doc comment for FileFinder.find_spec().

  • bpo-26154: Add a new private _PyThreadState_UncheckedGet() function to get the current Python thread state, but don’t issue a fatal error if it is NULL. This new function must be used instead of accessing directly the _PyThreadState_Current variable. The variable is no more exposed since Python 3.5.1 to hide the exact implementation of atomic C types, to avoid compiler issues.

  • bpo-26194: Deque.insert() gave odd results for bounded deques that had reached their maximum size. Now an IndexError will be raised when attempting to insert into a full deque.

  • bpo-25843: Разрешить параметры с именами f1, f2 = lambda: 1, lambda: 1.0 и f1() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-22995: [UPDATE] Comment out the one of the pickleability tests in _PyObject_GetState() due to regressions observed in Cython-based projects.

  • bpo-25961: Disallowed null characters in the type name.

  • bpo-25973: Fix segfault when an invalid nonlocal statement binds a name starting with two underscores.

  • bpo-22995: Instances of extension types with a state that aren’t subclasses of list or dict and haven’t implemented any pickle-related methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, or __getstate__), can no longer be pickled. Including memoryview.

  • bpo-20440: Massive replacing unsafe attribute setting code with special macro Py_SETREF.

  • bpo-25766: Special method __bytes__() now works in str subclasses.

  • bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size. This allows sys.getsize() to work correctly with their subclasses with __slots__ defined.

  • bpo-25709: Fixed problem with in-place string concatenation and utf-8 cache.

  • bpo-27147: Mention PEP 420 in the importlib docs.

  • bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside __getattr__.

  • bpo-24731: Fixed crash on converting objects with special methods __bytes__, __trunc__, and __float__ returning instances of subclasses of bytes, int, and float to subclasses of bytes, int, and float correspondingly.

  • bpo-26478: Fix semantic bugs when using binary operators with dictionary views and tuples.

  • bpo-26171: Fix possible integer overflow and heap corruption in zipimporter.get_data().

  • bpo-25660: Fix TAB key behaviour in REPL with readline.

  • bpo-25887: Raise a RuntimeError when a coroutine object is awaited more than once.

  • bpo-27243: Update the __aiter__ protocol: instead of returning an awaitable that resolves to an asynchronous iterator, the asynchronous iterator should be returned directly. Doing the former will trigger a PendingDeprecationWarning.

Библиотека

  • bpo-21386: Implement missing IPv4Address.is_global property. It was documented since 07a5610bae9d. Initial patch by Roger Luethi.

  • bpo-20900: distutils register command now decodes HTTP responses correctly. Initial patch by ingrid.

  • A new version of typing.py provides several new classes and features: @overload outside stubs, Reversible, DefaultDict, Text, ContextManager, Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some of the new features are not yet implemented in mypy or other static analyzers). Also classes for PEP 492 (Awaitable, AsyncIterable, AsyncIterator) have been added (in fact they made it into 3.5.1 but were never mentioned).

  • bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from sending a message body for 205 Reset Content. Also, don’t send Content header fields in responses that don’t have a body. Patch by Susumu Koshiba.

  • bpo-21313: Fix the «platform» module to tolerate when sys.version contains truncated build information.

  • bpo-27164: In the zlib module, allow decompressing raw Deflate streams with a predefined zdict. Based on patch by Xiang Zhang.

  • bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely write data to the client. Previously it could do partial writes and truncate data. Also, wsgiref.handler.ServerHandler can now handle stdout doing partial writes, but this is deprecated.

  • bpo-26809: Разрешить параметры с именами __all__ и string с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26373: subprocess.Popen.communicate now correctly ignores BrokenPipeError when the child process dies before .communicate() is called in more/all circumstances.

  • bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch by Claudiu Popa.

  • bpo-27114: Fix SSLContext._load_windows_store_certs fails with PermissionError

  • bpo-18383: Avoid creating duplicate filters when using filterwarnings and simplefilter. Based on patch by Alex Shkop.

  • bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by SELinux and fails with EACCESS. The function now falls back to fcntl(). Patch written by Michał Bednarski.

  • bpo-27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure!

  • bpo-14132: Fix urllib.request redirect handling when the target only has a query string. Original fix by Ján Janech.

  • bpo-17214: The «urllib.request» module now percent-encodes non-ASCII bytes found in redirect target URLs. Some servers send Location header fields with non-ASCII bytes, but «http.client» requires the request target to be ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch by Christian Heimes.

  • bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch contributed by Chi Hsuan Yen.

  • bpo-22274: In the subprocess module, allow stderr to be redirected to stdout even when stdout is not redirected. Patch by Akira Li.

  • bpo-26807: mock_open „files“ no longer error on readline at end of file. Patch from Yolanda Robla.

  • bpo-25745: Fixed leaking a userptr in curses panel destructor.

  • bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper in statistics.pvariance.

  • bpo-26881: The modulefinder module now supports extended opcode arguments.

  • bpo-23815: Fixed crashes related to directly created instances of types in _tkinter and curses.panel modules.

  • bpo-17765: weakref.ref() no longer silently ignores keyword arguments. Patch by Georg Brandl.

  • bpo-26873: xmlrpc now raises ResponseError on unsupported type tags instead of silently return incorrect result.

  • bpo-26711: Fixed the comparison of plistlib.Data with other types.

  • bpo-24114: Разрешить параметры с именами ctypes.util и crle с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26864: In urllib.request, change the proxy bypass host checking against no_proxy to be case-insensitive, and to not match unrelated host names that happen to have a bypassed hostname as a suffix. Patch by Xiang Zhang.

  • bpo-26634: recursive_repr() now sets __qualname__ of wrapper. Patch by Xiang Zhang.

  • bpo-26804: urllib.request will prefer lower_case proxy environment variables over UPPER_CASE or Mixed_Case ones. Patch contributed by Hans-Peter Jansen.

  • bpo-26837: assertSequenceEqual() now correctly outputs non-stringified differing items (like bytes in the -b mode). This affects assertListEqual() and assertTupleEqual().

  • bpo-26041: Remove «will be removed in Python 3.7» from deprecation messages of platform.dist() and platform.linux_distribution(). Patch by Kumaripaba Miyurusara Athukorala.

  • bpo-26822: itemgetter, attrgetter and methodcaller objects no longer silently ignore keyword arguments.

  • bpo-26733: Disassembling a class now disassembles class and static methods. Patch by Xiang Zhang.

  • bpo-26801: Разрешить параметры с именами shutil.get_terminal_size() и AttributeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24838: tarfile’s ustar and gnu formats now correctly calculate name and link field limits for multibyte character encodings like utf-8.

  • bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by Anthony Sottile.

  • bpo-26735: Разрешить параметры с именами os.urandom() и getrandom() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola“.

  • bpo-13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson.

  • bpo-26709: Fixed Y2038 problem in loading binary PLists.

  • bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our own SIGWINCH handler. Patch by Eric Price.

  • bpo-26586: In http.server, respond with «413 Request header fields too large» if there are too many header fields to parse, rather than killing the connection and raising an unhandled exception. Patch by Xiang Zhang.

  • bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable() to always return False.

  • bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of tuple (changeset 3603bae63c13 only works for classes) so we need to implement __ne__ ourselves. Patch by Andrew Plummer.

  • bpo-26644: Raise ValueError rather than SystemError when a negative length is passed to SSLSocket.recv() or read().

  • bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes instead of up to 1024.

  • bpo-26616: Fixed a bug in datetime.astimezone() method.

  • bpo-21925: Разрешить параметры с именами warnings.formatwarning() и linecache.getline(...) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24266: Ctrl+C during Readline history search now cancels the search mode when compiled with Readline 7.

  • bpo-26560: Avoid potential ValueError in BaseHandler.start_response. Initial patch by Peter Inglesby.

  • bpo-26569: Разрешить параметры с именами pyclbr.readmodule() и pyclbr.readmodule_ex() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-26499: Account for remaining Content-Length in HTTPResponse.readline() and read1(). Based on patch by Silent Ghost. Also document that HTTPResponse now supports these methods.

  • bpo-25320: Handle sockets in directories unittest discovery is scanning. Patch from Victor van den Elzen.

  • bpo-16181: cookiejar.http2time() now returns None if year is higher than datetime.MAXYEAR.

  • bpo-26513: Fixes platform module detection of Windows Server

  • bpo-23718: Fixed parsing time in week 0 before Jan 1. Original patch by Tamás Bence Gedai.

  • bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise NotImplementedError instead of ImportError.

  • bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets.

  • bpo-15068: Got rid of excessive buffering in the fileinput module. The bufsize parameter is no longer used.

  • bpo-2202: Fix UnboundLocalError in AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu Dupuy.

  • bpo-25718: Fixed pickling and copying the accumulate() iterator with total is None.

  • bpo-26475: Fixed debugging output for regular expressions with the (?x) flag.

  • bpo-26457: Fixed the subnets() methods in IP network classes for the case when resulting prefix length is equal to maximal prefix length. Based on patch by Xiang Zhang.

  • bpo-26385: Remove the file if the internal open() call in NamedTemporaryFile() fails. Patch by Silent Ghost.

  • bpo-26402: Fix XML-RPC client to retry when the server shuts down a persistent connection. This was a regression related to the new http.client.RemoteDisconnected exception in 3.5.0a4.

  • bpo-25913: Leading <~ is optional now in base64.a85decode() with adobe=True. Patch by Swati Jaiswal.

  • bpo-26186: Remove an invalid type check in importlib.util.LazyLoader.

  • bpo-26367: importlib.__import__() raises SystemError like builtins.__import__() when level is specified but without an accompanying package specified.

  • bpo-26309: In the «socketserver» module, shut down the request (closing the connected socket) when verify_request() returns false. Patch by Aviv Palivoda.

  • bpo-25995: os.walk() no longer uses FDs proportional to the tree depth.

  • bpo-26117: The os.scandir() iterator now closes file descriptor not only when the iteration is finished, but when it was failed with error.

  • bpo-25911: Restored support of bytes paths in os.walk() on Windows.

  • bpo-26045: Add UTF-8 suggestion to error message when posting a non-Latin-1 string with http.client.

  • bpo-12923: Reset FancyURLopener’s redirect counter even if there is an exception. Based on patches by Brian Brazil and Daniel Rocco.

  • bpo-25945: Fixed a crash when unpickle the functools.partial object with wrong state. Fixed a leak in failed functools.partial constructor. «args» and «keywords» attributes of functools.partial have now always types tuple and dict correspondingly.

  • bpo-26202: copy.deepcopy() now correctly copies range() objects with non-atomic attributes.

  • bpo-23076: Path.glob() now raises a ValueError if it’s called with an invalid pattern. Patch by Thomas Nyberg.

  • bpo-19883: Fixed possible integer overflows in zipimport.

  • bpo-26227: On Windows, getnameinfo(), gethostbyaddr() and gethostbyname_ex() functions of the socket module now decode the hostname from the ANSI code page rather than UTF-8.

  • bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8 encoding.

  • bpo-25935: Garbage collector now breaks reference loops with OrderedDict.

  • bpo-16620: Fixed AttributeError in msilib.Directory.glob().

  • bpo-26013: Added compatibility with broken protocol 2 pickles created in old Python 3 versions (3.4.3 and lower).

  • bpo-25850: Use cross-compilation by default for 64-bit Windows.

  • bpo-17633: Improve zipimport’s support for namespace packages.

  • bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing before $() vars.

  • bpo-22138: Fix mock.patch behavior when patching descriptors. Restore original values after patching. Patch contributed by Sean McCully.

  • bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode option if it is safe to do so.

  • bpo-26012: Don’t traverse into symlinks for ** pattern in pathlib.Path.[r]glob().

  • bpo-24120: Ignore PermissionError when traversing a tree with pathlib.Path.[r]glob(). Patch by Ulrich Petri.

  • bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer attribute (restores backward compatibility).

  • bpo-25447: Copying the lru_cache() wrapper object now always works, independently from the type of the wrapped object (by returning the original object unchanged).

  • bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser.

  • bpo-25860: os.fwalk() no longer skips remaining directories when error occurs. Original patch by Samson Lee.

  • bpo-25914: Fixed and simplified OrderedDict.__sizeof__.

  • bpo-25902: Fixed various refcount issues in ElementTree iteration.

  • bpo-25717: Restore the previous behaviour of tolerating most fstat() errors when opening files. This was a regression in 3.5a1, and stopped anonymous temporary files from working in special cases.

  • bpo-24903: Fix regression in number of arguments compileall accepts when „-d“ is specified. The check on the number of arguments has been dropped completely as it never worked correctly anyway.

  • bpo-25764: In the subprocess module, preserve any exception caused by fork() failure when preexec_fn is used.

  • bpo-6478: _strptime’s regexp cache now is reset after changing timezone with time.tzset().

  • bpo-14285: When executing a package with the «python -m package» option, and package initialization fails, a proper traceback is now reported. The «runpy» module now lets exceptions from package initialization pass back to the caller, rather than raising ImportError.

  • bpo-19771: Also in runpy and the «-m» option, omit the irrelevant message «… is a package and cannot be directly executed» if the package could not even be initialized (e.g. due to a bad *.pyc file).

  • bpo-25177: Fixed problem with the mean of very small and very large numbers. As a side effect, statistics.mean and statistics.variance should be significantly faster.

  • bpo-25718: Fixed copying object with state with boolean value is false.

  • bpo-10131: Fixed deep copying of minidom documents. Based on patch by Marian Ganisin.

  • bpo-25725: Fixed a reference leak in pickle.loads() when unpickling invalid data including tuple instructions.

  • bpo-25663: In the Readline completer, avoid listing duplicate global names, and search the global namespace before searching builtins.

  • bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error.

  • bpo-23914: Fixed SystemError raised by unpickler on broken pickle data.

  • bpo-25691: Fixed crash on deleting ElementTree.Element attributes.

  • bpo-25624: ZipFile now always writes a ZIP_STORED header for directory entries. Patch by Dingyuan Wang.

  • Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu Davis.

  • bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк Коренберг.

  • bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis.

  • bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis.

  • bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input. Patch by Jack O’Connor.

  • bpo-27040: Add loop.get_exception_handler method

  • bpo-27041: asyncio: Add loop.create_future method

  • bpo-27223: asyncio: Fix _read_ready and _write_ready to respect _conn_lost. Patch by Łukasz Langa.

  • bpo-22970: asyncio: Fix inconsistency cancelling Condition.wait. Patch by David Coles.

IDLE

  • bpo-5124: Paste with text selected now replaces the selection on X11. This matches how paste works on Windows, Mac, most modern Linux apps, and ttk widgets. Original patch by Serhiy Storchaka.

  • bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is a private implementation of test.test_idle and tool for maintainers.

  • bpo-27196: Stop „ThemeChanged“ warnings when running IDLE tests. These persisted after other warnings were suppressed in #20567. Apply Serhiy Storchaka’s update_idletasks solution to four test files. Record this additional advice in idle_test/README.txt

  • bpo-20567: Revise idle_test/README.txt with advice about avoiding tk warning messages from tests. Apply advice to several IDLE tests.

  • bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move code for configuring text widget colors to a new function.

  • bpo-26673: When tk reports font size as 0, change to size 10. Such fonts on Linux prevented the configuration dialog from opening.

  • bpo-21939: Add test for IDLE’s percolator. Original patch by Saimadhav Heblikar.

  • bpo-21676: Add test for IDLE’s replace dialog. Original patch by Saimadhav Heblikar.

  • bpo-18410: Add test for IDLE’s search dialog. Original patch by Westley Martínez.

  • bpo-21703: Add test for IDLE’s undo delegator. Original patch by Saimadhav Heblikar .

  • bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks.

  • bpo-23977: Add more asserts to test_delegator.

  • bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav Heblikar.

  • In the „IDLE-console differences“ section of the IDLE doc, clarify how running with IDLE affects sys.modules and the standard streams.

  • bpo-25507: fix incorrect change in IOBinding that prevented printing. Augment IOBinding htest to include all major IOBinding functions.

  • bpo-25905: Revert unwanted conversion of „ to ’ RIGHT SINGLE QUOTATION MARK in README.txt and open this and NEWS.txt with „ascii“. Re-encode CREDITS.txt to utf-8 and open it with „utf-8“.

Документация

  • bpo-19489: Moved the search box from the sidebar to the header and footer of each page. Patch by Ammar Askar.

  • bpo-24136: Document the new PEP 448 unpacking syntax of 3.5.

  • bpo-26736: Used HTTPS for external links in the documentation if possible.

  • bpo-6953: Rework the Readline module documentation to group related functions together, and add more details such as what underlying Readline functions and variables are accessed.

  • bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt.

  • bpo-25500: Fix documentation to not claim that __import__ is searched for in the global scope.

  • bpo-26014: Update 3.x packaging documentation: * «See also» links to the new docs are now provided in the legacy pages * links to setuptools documentation have been updated

Тесты

  • bpo-21916: Added tests for the turtle module. Patch by ingrid, Gregory Loyse and Jelle Zijlstra.

  • bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool) was untested.

  • bpo-26015: Added new tests for pickling iterators of mutable sequences.

  • bpo-26325: Added test.support.check_no_resource_warning() to check that no ResourceWarning is emitted.

  • bpo-25940: Changed test_ssl to use self-signed.pythontest.net. This avoids relying on svn.python.org, which recently changed root certificate.

  • bpo-25616: Tests for OrderedDict are extracted from test_collections into separate file test_ordered_dict.

  • bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files cannot be written.

Построить

  • bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier de Gaye.

  • bpo-22359: Disable the rules for running _freeze_importlib and pgen when cross-compiling. The output of these programs is normally saved with the source code anyway, and is still regenerated when doing a native build. Patch by Xavier de Gaye.

  • bpo-27229: Fix the cross-compiling pgen rule for in-tree builds. Patch by Xavier de Gaye.

  • bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except on Mac OS X. Patch written by Xavier de Gaye.

  • bpo-25702: A –with-lto configure option has been added that will enable link time optimizations at build time during a make profile-opt. Some compilers and toolchains are known to not produce stable code when using LTO, be sure to test things thoroughly before relying on it. It can provide a few % speed up over profile-opt alone.

  • bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old versions.

  • bpo-17603: Avoid error about nonexistent fileblocks.o file by using a lower-level check for st_blocks in struct stat.

  • bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern Thiel.

  • bpo-26465: Update Windows builds to use OpenSSL 1.0.2g.

  • bpo-24421: Compile Modules/_math.c once, before building extensions. Previously it could fail to compile properly if the math and cmath builds were concurrent.

  • bpo-25348: Разрешить параметры с именами --pgo и --pgo-job с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25827: Разрешить параметры с именами configure и --with-icc с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-25696: Fix installation of Python on UNIX with make -j9.

  • bpo-26930: Update OS X 10.5+ 32-bit-only installer to build and link with OpenSSL 1.0.2h.

  • bpo-26268: Update Windows builds to use OpenSSL 1.0.2f.

  • bpo-25136: Support Apple Xcode 7’s new textual SDK stub libraries.

  • bpo-24324: Do not enable unreachable code warnings when using gcc as the option does not work correctly in older versions of gcc and has been silently removed as of gcc-4.5.

Windows

  • bpo-27053: Updates make_zip.py to correctly generate library ZIP file.

  • bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases that don’t include the contents of the include directory (that is, 1.0.2e and later).

  • bpo-26071: bdist_wininst created binaries fail to start and find 32bit Python

  • bpo-26073: Update the list of magic numbers in launcher

  • bpo-26065: Excludes venv from library when generating embeddable distro.

  • bpo-17500: Remove unused and outdated icons. (See also: https://github.com/python/pythondotorg/issues/945)

Инструменты/демоверсии

  • bpo-26799: Fix python-gdb.py: don’t get C types once when the Python code is loaded, but get C types on demand. The C types can change if python-gdb.py is loaded before the Python executable. Patch written by Thomas Ilsche.

  • bpo-26271: Fix the Freeze tool to properly use flags passed through configure. Patch by Daniel Shaulov.

  • bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py. Patch by Guo Ci Teo.

  • bpo-26316: Fix variable name typo in Argument Clinic.

Python 3.5.1 final

Release date: 2015-12-06

Ядро и встроенные модули

  • bpo-25709: Fixed problem with in-place string concatenation and utf-8 cache.

Windows

  • bpo-25715: Python 3.5.1 installer shows wrong upgrade path and incorrect logic for launcher detection.

Python 3.5.1 release candidate 1

Release date: 2015-11-22

Ядро и встроенные модули

  • bpo-25630: Fix a possible segfault during argument parsing in functions that accept filesystem paths.

  • bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess internals regarding how fds_to_pass were passed to the child. The bug had no actual impact as subprocess.py already avoided it.

  • bpo-25388: Fixed tokenizer crash when processing undecodable source code with a null byte.

  • bpo-25462: The hash of the key now is calculated only once in most operations in C implementation of OrderedDict.

  • bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now rejects builtin types with not defined __new__.

  • bpo-25555: Fix parser and AST: fill lineno and col_offset of «arg» node when compiling AST from Python objects.

  • bpo-24802: Avoid buffer overreads when int(), float(), compile(), exec() and eval() are passed bytes-like objects. These objects are not necessarily terminated by a null byte, but the functions assumed they were.

  • bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that was mutated by direct calls of dict methods.

  • bpo-25449: Iterating OrderedDict with keys with unstable hash now raises KeyError in C implementations as well as in Python implementation.

  • bpo-25395: Fixed crash when highly nested OrderedDict structures were garbage collected.

  • bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new recursion limit is too low depending at the current recursion depth. Modify also the «lower-water mark» formula to make it monotonic. This mark is used to decide when the overflowed flag of the thread state is reset.

  • bpo-24402: Fix input() to prompt to the redirected stdout when sys.stdout.fileno() fails.

  • bpo-24806: Prevent builtin types that are not allowed to be subclassed from being subclassed through multiple inheritance.

  • bpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data.

  • bpo-25280: Import trace messages emitted in verbose (-v) mode are no longer formatted twice.

  • bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom() function instead of the getentropy() function. The getentropy() function is blocking to generate very good quality entropy, os.urandom() doesn’t need such high-quality entropy.

  • bpo-25182: The stdprinter (used as sys.stderr before the io module is imported at startup) now uses the backslashreplace error handler.

  • bpo-25131: Make the line number and column offset of set/dict literals and comprehensions correspond to the opening brace.

  • bpo-25150: Hide the private _Py_atomic_xxx symbols from the public Python.h header to fix a compilation error with OpenMP. PyThreadState_GET() becomes an alias to PyThreadState_Get() to avoid ABI incompatibilities.

Библиотека

  • bpo-25626: Change three zlib functions to accept sizes that fit in Py_ssize_t, but internally cap those sizes to UINT_MAX. This resolves a regression in 3.5 where GzipFile.read() failed to read chunks larger than 2 or 4 GiB. The change affects the zlib.Decompress.decompress() max_length parameter, the zlib.decompress() bufsize parameter, and the zlib.Decompress.flush() length parameter.

  • bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True) when the OS gives priority to errors such as EACCES over EEXIST.

  • bpo-25593: Change semantics of EventLoop.stop() in asyncio.

  • bpo-6973: When we know a subprocess.Popen process has died, do not allow the send_signal(), terminate(), or kill() methods to do anything as they could potentially signal a different process.

  • bpo-25590: In the Readline completer, only call getattr() once per attribute.

  • bpo-25498: Fix a crash when garbage-collecting ctypes objects created by wrapping a memoryview. This was a regression made in 3.5a1. Based on patch by Eryksun.

  • bpo-25584: Added «escape» to the __all__ list in the glob module.

  • bpo-25584: Fixed recursive glob() with patterns starting with **.

  • bpo-25446: Fix regression in smtplib’s AUTH LOGIN support.

  • bpo-18010: Fix the pydoc web server’s module search function to handle exceptions from importing packages.

  • bpo-25554: Got rid of circular references in regular expression parsing.

  • bpo-25510: fileinput.FileInput.readline() now returns b““ instead of „“ at the end if the FileInput was opened with binary mode. Patch by Ryosuke Ito.

  • bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties. Original patch by John Mark Vandenberg.

  • bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4.

  • bpo-21827: Fixed textwrap.dedent() for the case when largest common whitespace is a substring of smallest leading whitespace. Based on patch by Robert Li.

  • bpo-25447: The lru_cache() wrapper objects now can be copied and pickled (by returning the original object unchanged).

  • bpo-25390: typing: Don’t crash on Union[str, Pattern].

  • bpo-25441: asyncio: Raise error from drain() when socket is closed.

  • bpo-25410: Cleaned up and fixed minor bugs in C implementation of OrderedDict.

  • bpo-25411: Improved Unicode support in SMTPHandler through better use of the email package. Thanks to user simon04 for the patch.

  • bpo-25407: Remove mentions of the formatter module being removed in Python 3.6.

  • bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end() that caused segmentation fault or hang in iterating after moving several items to the start of ordered dict.

  • bpo-25364: zipfile now works in threads disabled builds.

  • bpo-25328: smtpd’s SMTPChannel now correctly raises a ValueError if both decode_data and enable_SMTPUTF8 are set to true.

  • bpo-25316: distutils raises OSError instead of DistutilsPlatformError when MSVC is not installed.

  • bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in pickletools.opcodes.

  • bpo-23972: Updates asyncio datagram create method allowing reuseport and reuseaddr socket options to be set prior to binding the socket. Mirroring the existing asyncio create_server method the reuseaddr option for datagram sockets defaults to True if the O/S is „posix“ (except if the platform is Cygwin). Patch by Chris Laws.

  • bpo-25304: Add asyncio.run_coroutine_threadsafe(). This lets you submit a coroutine to a loop from another thread, returning a concurrent.futures.Future. By Vincent Michel.

  • bpo-25232: Fix CGIRequestHandler to split the query from the URL at the first question mark (?) rather than the last. Patch from Xiang Zhang.

  • bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query part of the URL as if it were a path. Patch from Xiang Zhang.

  • bpo-24483: C implementation of functools.lru_cache() now calculates key’s hash only once.

  • bpo-22958: Constructor and update method of weakref.WeakValueDictionary now accept the self and the dict keyword arguments.

  • bpo-22609: Constructor of collections.UserDict now accepts the self keyword argument.

  • bpo-25111: Fixed comparison of traceback.FrameSummary.

  • bpo-25262: Added support for BINBYTES8 opcode in Python implementation of unpickler. Highest 32 bits of 64-bit size for BINUNICODE8 and BINBYTES8 opcodes no longer silently ignored on 32-bit platforms in C implementation.

  • bpo-25034: Fix string.Formatter problem with auto-numbering and nested format_specs. Patch by Anthon van der Neut.

  • bpo-25233: Rewrite the guts of asyncio.Queue and asyncio.Semaphore to be more understandable and correct.

  • bpo-25203: Failed readline.set_completer_delims() no longer left the module in inconsistent state.

  • bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong results in some cases.

  • bpo-23329: Allow the ssl module to be built with older versions of LibreSSL.

  • Prevent overflow in _Unpickler_Read.

  • bpo-25047: The XML encoding declaration written by Element Tree now respects the letter case given by the user. This restores the ability to write encoding names in uppercase like «UTF-8», which worked in Python 2.

  • bpo-25135: Make deque_clear() safer by emptying the deque before clearing. This helps avoid possible reentrancy issues.

  • bpo-19143: platform module now reads Windows version from kernel32.dll to avoid compatibility shims.

  • bpo-25092: Fix datetime.strftime() failure when errno was already set to EINVAL.

  • bpo-23517: Fix rounding in fromtimestamp() and utcfromtimestamp() methods of datetime.datetime: microseconds are now rounded to nearest with ties going to nearest even integer (ROUND_HALF_EVEN), instead of being rounding towards minus infinity (ROUND_FLOOR). It’s important that these methods use the same rounding mode than datetime.timedelta to keep the property: (datetime(1970,1,1) + timedelta(seconds=t)) == datetime.utcfromtimestamp(t). It also the rounding mode used by round(float) for example.

  • bpo-25155: Fix datetime.datetime.now() and datetime.datetime.utcnow() on Windows to support date after year 2038. It was a regression introduced in Python 3.5.0.

  • bpo-25108: Omitted internal frames in traceback functions print_stack(), format_stack(), and extract_stack() called without arguments.

  • bpo-25118: Fix a regression of Python 3.5.0 in os.waitpid() on Windows.

  • bpo-24684: socket.socket.getaddrinfo() now calls PyUnicode_AsEncodedString() instead of calling the encode() method of the host, to handle correctly custom string with an encode() method which doesn’t return a byte string. The encoder of the IDNA codec is now called directly instead of calling the encode() method of the string.

  • bpo-25060: Correctly compute stack usage of the BUILD_MAP opcode.

  • bpo-24857: Comparing call_args to a long sequence now correctly returns a boolean result instead of raising an exception. Patch by A Kaptur.

  • bpo-23144: Make sure that HTMLParser.feed() returns all the data, even when convert_charrefs is True.

  • bpo-24982: shutil.make_archive() with the «zip» format now adds entries for directories (including empty directories) in ZIP file.

  • bpo-25019: Fixed a crash caused by setting non-string key of expat parser. Based on patch by John Leitch.

  • bpo-16180: Exit pdb if file has syntax error, instead of trapping user in an infinite loop. Patch by Xavier de Gaye.

  • bpo-24891: Fix a race condition at Python startup if the file descriptor of stdin (0), stdout (1) or stderr (2) is closed while Python is creating sys.stdin, sys.stdout and sys.stderr objects. These attributes are now set to None if the creation of the object failed, instead of raising an OSError exception. Initial patch written by Marco Paolini.

  • bpo-24992: Fix error handling and a race condition (related to garbage collection) in collections.OrderedDict constructor.

  • bpo-24881: Fixed setting binary mode in Python implementation of FileIO on Windows and Cygwin. Patch from Akira Li.

  • bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer().

  • bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating ssl.SSLContext.

  • bpo-25569: Fix memory leak in SSLSocket.getpeercert().

  • bpo-25471: Sockets returned from accept() shouldn’t appear to be nonblocking.

  • bpo-25319: When threading.Event is reinitialized, the underlying condition should use a regular lock rather than a recursive lock.

  • bpo-21112: Fix regression in unittest.expectedFailure on subclasses. Patch from Berker Peksag.

  • bpo-24764: cgi.FieldStorage.read_multi() now ignores the Content-Length header in part headers. Patch written by Peter Landry and reviewed by Pierre Quentel.

  • bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and Bryce Darling.

  • bpo-24774: Fix docstring in http.server.test. Patch from Chiu-Hsiang Hsu.

  • bpo-21159: Improve message in configparser.InterpolationMissingOptionError. Patch from Łukasz Langa.

  • bpo-20362: Honour TestCase.longMessage correctly in assertRegex. Patch from Ilia Kurenkov.

  • bpo-23572: Fixed functools.singledispatch on classes with false metaclasses. Patch by Ethan Furman.

  • asyncio: ensure_future() now accepts awaitable objects.

IDLE

  • bpo-15348: Stop the debugger engine (normally in a user process) before closing the debugger window (running in the IDLE process). This prevents the RuntimeErrors that were being caught and ignored.

  • bpo-24455: Prevent IDLE from hanging when a) closing the shell while the debugger is active (15347); b) closing the debugger with the [X] button (15348); and c) activating the debugger when already active (24455). The patch by Mark Roseman does this by making two changes. 1. Suspend and resume the gui.interaction method with the tcl vwait mechanism intended for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow any existing interaction to terminate first.

  • Change „The program“ to „Your program“ in an IDLE „kill program?“ message to make it clearer that the program referred to is the currently running user program, not IDLE itself.

  • bpo-24750: Improve the appearance of the IDLE editor window status bar. Patch by Mark Roseman.

  • bpo-25313: Change the handling of new built-in text color themes to better address the compatibility problem introduced by the addition of IDLE Dark. Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.

  • bpo-24782: Extension configuration is now a tab in the IDLE Preferences dialog rather than a separate dialog. The former tabs are now a sorted list. Patch by Mark Roseman.

  • bpo-22726: Re-activate the config dialog help button with some content about the other buttons and the new IDLE Dark theme.

  • bpo-24820: IDLE now has an „IDLE Dark“ built-in text color theme. It is more or less IDLE Classic inverted, with a cobalt blue background. Strings, comments, keywords, … are still green, red, orange, … . To use it with IDLEs released before November 2015, hit the „Save as New Custom Theme“ button and enter a new name, such as „Custom Dark“. The custom theme will work with any IDLE release, and can be modified.

  • bpo-25224: README.txt is now an idlelib index for IDLE developers and curious users. The previous user content is now in the IDLE doc chapter. „IDLE“ now means „Integrated Development and Learning Environment“.

  • bpo-24820: Users can now set breakpoint colors in Settings -> Custom Highlighting. Original patch by Mark Roseman.

  • bpo-24972: Inactive selection background now matches active selection background, as configured by users, on all systems. Found items are now always highlighted on Windows. Initial patch by Mark Roseman.

  • bpo-24570: Idle: make calltip and completion boxes appear on Macs affected by a tk regression. Initial patch by Mark Roseman.

  • bpo-24988: Idle ScrolledList context menus (used in debugger) now work on Mac Aqua. Patch by Mark Roseman.

  • bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by Mark Roseman.

  • bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac OSX, make them a „sheet“. Patch by Mark Roseman.

  • bpo-25198: Enhance the initial html viewer now used for Idle Help. Properly indent fixed-pitch text (patch by Mark Roseman). Give code snippet a very Sphinx-like light blueish-gray background. Re-use initial width and height set by users for shell and editor. When the Table of Contents (TOC) menu is used, put the section header at the top of the screen.

  • bpo-25225: Condense and rewrite Idle doc section on text colors.

  • bpo-21995: Explain some differences between IDLE and console Python.

  • bpo-22820: Explain need for print when running file from Idle editor.

  • bpo-25224: Doc: augment Idle feature list and no-subprocess section.

  • bpo-25219: Update doc for Idle command line options. Some were missing and notes were not correct.

  • bpo-24861: Most of idlelib is private and subject to change. Use idleib.idle.* to start Idle. See idlelib.__init__.__doc__.

  • bpo-25199: Idle: add synchronization comments for future maintainers.

  • bpo-16893: Replace help.txt with help.html for Idle doc display. The new idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks better than help.txt and will better document Idle as released. The tkinter html viewer that works for this file was written by Mark Roseman. The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.

  • bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6.

  • bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts).

Документация

  • bpo-22558: Add remaining doc links to source code for Python-coded modules. Patch by Yoni Lavi.

  • bpo-12067: Rewrite Comparisons section in the Expressions chapter of the language reference. Some of the details of comparing mixed types were incorrect or ambiguous. NotImplemented is only relevant at a lower level than the Expressions chapter. Added details of comparing range() objects, and default behaviour and consistency suggestions for user-defined classes. Patch from Andy Maier.

  • bpo-24952: Clarify the default size argument of stack_size() in the «threading» and «_thread» modules. Patch from Mattip.

  • bpo-23725: Overhaul tempfile docs. Note deprecated status of mktemp. Patch from Zbigniew Jędrzejewski-Szmek.

  • bpo-24808: Update the types of some PyTypeObject fields. Patch by Joseph Weston.

  • bpo-22812: Fix unittest discovery examples. Patch from Pam McA’Nulty.

Тесты

  • bpo-25449: Added tests for OrderedDict subclasses.

  • bpo-25099: Make test_compileall not fail when an entry on sys.path cannot be written to (commonly seen in administrative installs on Windows).

  • bpo-23919: Prevents assert dialogs appearing in the test suite.

  • PCbuild\rt.bat now accepts an unlimited number of arguments to pass along to regrtest.py. Previously there was a limit of 9.

Построить

  • bpo-24915: Add LLVM support for PGO builds and use the test suite to generate the profile data. Initial patch by Alecsandru Patrascu of Intel.

  • bpo-24910: Windows MSIs now have unique display names.

  • bpo-24986: It is now possible to build Python on Windows without errors when external libraries are not available.

Windows

  • bpo-25450: Updates shortcuts to start Python in installation directory.

  • bpo-25164: Changes default all-users install directory to match per-user directory.

  • bpo-25143: Improves installer error messages for unsupported platforms.

  • bpo-25163: Display correct directory in installer when using non-default settings.

  • bpo-25361: Disables use of SSE2 instructions in Windows 32-bit build

  • bpo-25089: Adds logging to installer for case where launcher is not selected on upgrade.

  • bpo-25165: Windows uninstallation should not remove launcher if other versions remain

  • bpo-25112: py.exe launcher is missing icons

  • bpo-25102: Windows installer does not precompile for -O or -OO.

  • bpo-25081: Makes Back button in installer go back to upgrade page when upgrading.

  • bpo-25091: Increases font size of the installer.

  • bpo-25126: Clarifies that the non-web installer will download some components.

  • bpo-25213: Restores requestedExecutionLevel to manifest to disable UAC virtualization.

  • bpo-25022: Removed very outdated PC/example_nt/ directory.

Инструменты/демоверсии

  • bpo-25440: Fix output of python-config –extension-suffix.

Python 3.5.0 final

Release date: 2015-09-13

Построить

  • bpo-25071: Windows installer should not require TargetDir parameter when installing quietly.

Python 3.5.0 release candidate 4

Release date: 2015-09-09

Библиотека

  • bpo-25029: Fixes MemoryError in test_strptime.

Построить

  • bpo-25027: Reverts partial-static build options and adds vcruntime140.dll to Windows installation.

Python 3.5.0 release candidate 3

Release date: 2015-09-07

Ядро и встроенные модули

  • bpo-24305: Prevent import subsystem stack frames from being counted by the warnings.warn(stacklevel=) parameter.

  • bpo-24912: Prevent __class__ assignment to immutable built-in objects.

  • bpo-24975: Fix AST compilation for PEP 448 syntax.

Библиотека

  • bpo-24917: time_strftime() buffer over-read.

  • bpo-24748: To resolve a compatibility problem found with py2exe and pywin32, imp.load_dynamic() once again ignores previously loaded modules to support Python modules replacing themselves with extension modules. Patch by Petr Viktorin.

  • bpo-24635: Fixed a bug in typing.py where isinstance([], typing.Iterable) would return True once, then False on subsequent calls.

  • bpo-24989: Fixed buffer overread in BytesIO.readline() if a position is set beyond size. Based on patch by John Leitch.

  • bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and Bryce Darling.

Python 3.5.0 release candidate 2

Release date: 2015-08-25

Ядро и встроенные модули

  • bpo-24769: Interpreter now starts properly when dynamic loading is disabled. Patch by Petr Viktorin.

  • bpo-21167: NAN operations are now handled correctly when python is compiled with ICC even if -fp-model strict is not specified.

  • bpo-24492: A «package» lacking a __name__ attribute when trying to perform a from .. import ... statement will trigger an ImportError instead of an AttributeError.

Библиотека

  • bpo-24847: Removes vcruntime140.dll dependency from Tcl/Tk.

  • bpo-24839: platform._syscmd_ver raises DeprecationWarning

  • bpo-24867: Fix Task.get_stack() for „async def“ coroutines

Python 3.5.0 release candidate 1

Release date: 2015-08-09

Ядро и встроенные модули

  • bpo-24667: Resize odict in all cases that the underlying dict resizes.

Библиотека

  • bpo-24824: Signatures of codecs.encode() and codecs.decode() now are compatible with pydoc.

  • bpo-24634: Importing uuid should not try to load libc on Windows

  • bpo-24798: _msvccompiler.py doesn’t properly support manifests

  • bpo-4395: Better testing and documentation of binary operators. Patch by Martin Panter.

  • bpo-23973: Update typing.py from GitHub repo.

  • bpo-23004: mock_open() now reads binary data correctly when the type of read_data is bytes. Initial patch by Aaron Hill.

  • bpo-23888: Handle fractional time in cookie expiry. Patch by ssh.

  • bpo-23652: Make it possible to compile the select module against the libc headers from the Linux Standard Base, which do not include some EPOLL macros. Patch by Matt Frank.

  • bpo-22932: Fix timezones in email.utils.formatdate. Patch from Dmitry Shachnev.

  • bpo-23779: imaplib raises TypeError if authenticator tries to abort. Patch from Craig Holmquist.

  • bpo-23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch written by Matthieu Gautier.

  • bpo-23254: Document how to close the TCPServer listening socket. Patch from Martin Panter.

  • bpo-19450: Update Windows and OS X installer builds to use SQLite 3.8.11.

  • bpo-17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella.

  • bpo-24791: Fix grammar regression for call syntax: „g(*a or b)“.

IDLE

  • bpo-23672: Allow Idle to edit and run files with astral chars in name. Patch by Mohd Sanad Zaki Rizvi.

  • bpo-24745: Idle editor default font. Switch from Courier to platform-sensitive TkFixedFont. This should not affect current customized font selections. If there is a problem, edit $HOME/.idlerc/config-main.cfg and remove „fontxxx“ entries from [Editor Window]. Patch by Mark Roseman.

  • bpo-21192: Idle editor. When a file is run, put its name in the restart bar. Do not print false prompts. Original patch by Adnan Umer.

  • bpo-13884: Idle menus. Remove tearoff lines. Patch by Roger Serwy.

Документация

  • bpo-24129: Clarify the reference documentation for name resolution. This includes removing the assumption that readers will be familiar with the name resolution scheme Python used prior to the introduction of lexical scoping for function namespaces. Patch by Ivan Levkivskyi.

  • bpo-20769: Improve reload() docs. Patch by Dorian Pula.

  • bpo-23589: Remove duplicate sentence from the FAQ. Patch by Yongzhi Pan.

  • bpo-24729: Correct IO tutorial to match implementation regarding encoding parameter to open function.

Тесты

  • bpo-24751: When running regrtest with the -w command line option, a test run is no longer marked as a failure if all tests succeed when re-run.

Python 3.5.0 beta 4

Release date: 2015-07-26

Ядро и встроенные модули

  • bpo-23573: Restored optimization of bytes.rfind() and bytearray.rfind() for single-byte argument on Linux.

  • bpo-24569: Make PEP 448 dictionary evaluation more consistent.

  • bpo-24583: Fix crash when set is mutated while being updated.

  • bpo-24407: Fix crash when dict is mutated while being updated.

  • bpo-24619: New approach for tokenizing async/await. As a consequence, it is now possible to have one-line „async def foo(): await ..“ functions.

  • bpo-24687: Plug refleak on SyntaxError in function parameters annotations.

  • bpo-15944: memoryview: Allow arbitrary formats when casting to bytes. Patch by Martin Panter.

Библиотека

  • bpo-23441: rcompleter now prints a tab character instead of displaying possible completions for an empty word. Initial patch by Martin Sekera.

  • bpo-24683: Fixed crashes in _json functions called with arguments of inappropriate type.

  • bpo-21697: shutil.copytree() now correctly handles symbolic links that point to directories. Patch by Eduardo Seabra and Thomas Kluyver.

  • bpo-14373: Fixed segmentation fault when gc.collect() is called during constructing lru_cache (C implementation).

  • bpo-24695: Fix a regression in traceback.print_exception(). If exc_traceback is None we shouldn’t print a traceback header like described in the documentation.

  • bpo-24620: Random.setstate() now validates the value of state last element.

  • bpo-22485: Fixed an issue that caused inspect.getsource to return incorrect results on nested functions.

  • bpo-22153: Improve unittest docs. Patch from Martin Panter and evilzero.

  • bpo-24580: Symbolic group references to open group in re patterns now are explicitly forbidden as well as numeric group references.

  • bpo-24206: Fixed __eq__ and __ne__ methods of inspect classes.

  • bpo-24631: Fixed regression in the timeit module with multiline setup.

  • bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely. Patch from Nicola Palumbo and Laurent De Buyst.

  • bpo-23661: unittest.mock side_effects can now be exceptions again. This was a regression vs Python 3.4. Patch from Ignacio Rossi

  • bpo-24608: chunk.Chunk.read() now always returns bytes, not str.

  • bpo-18684: Fixed reading out of the buffer in the re module.

  • bpo-24259: tarfile now raises a ReadError if an archive is truncated inside a data segment.

  • bpo-15014: SMTP.auth() and SMTP.login() now support RFC 4954’s optional initial-response argument to the SMTP AUTH command.

  • bpo-24669: Fix inspect.getsource() for „async def“ functions. Patch by Kai Groner.

  • bpo-24688: ast.get_docstring() for „async def“ functions.

Построить

  • bpo-24603: Update Windows builds and OS X 10.5 installer to use OpenSSL 1.0.2d.

Python 3.5.0 beta 3

Release date: 2015-07-05

Ядро и встроенные модули

  • bpo-24467: Fixed possible buffer over-read in bytearray. The bytearray object now always allocates place for trailing null byte and it’s buffer now is always null-terminated.

  • Upgrade to Unicode 8.0.0.

  • bpo-24345: Add Py_tp_finalize slot for the stable ABI.

  • bpo-24400: Introduce a distinct type for PEP 492 coroutines; add types.CoroutineType, inspect.getcoroutinestate, inspect.getcoroutinelocals; coroutines no longer use CO_GENERATOR flag; sys.set_coroutine_wrapper works only for „async def“ coroutines; inspect.iscoroutine no longer uses collections.abc.Coroutine, it’s intended to test for pure „async def“ coroutines only; add new opcode: GET_YIELD_FROM_ITER; fix generators wrapper used in types.coroutine to be instance of collections.abc.Generator; collections.abc.Awaitable and collections.abc.Coroutine can no longer be used to detect generator-based coroutines–use inspect.isawaitable instead.

  • bpo-24450: Add gi_yieldfrom to generators and cr_await to coroutines. Contributed by Benno Leslie and Yury Selivanov.

  • bpo-19235: Add new RecursionError exception. Patch by Georg Brandl.

Библиотека

  • bpo-21750: mock_open.read_data can now be read from each instance, as it could in Python 3.3.

  • bpo-24552: Fix use after free in an error case of the _pickle module.

  • bpo-24514: tarfile now tolerates number fields consisting of only whitespace.

  • bpo-19176: Fixed doctype() related bugs in C implementation of ElementTree. A deprecation warning no longer issued by XMLParser subclass with default doctype() method. Direct call of doctype() now issues a warning. Parser’s doctype() now is not called if target’s doctype() is called. Based on patch by Martin Panter.

  • bpo-20387: Restore semantic round-trip correctness in tokenize/untokenize for tab-indented blocks.

  • bpo-24456: Fixed possible buffer over-read in adpcm2lin() and lin2adpcm() functions of the audioop module.

  • bpo-24336: The contextmanager decorator now works with functions with keyword arguments called «func» and «self». Patch by Martin Panter.

  • bpo-24522: Fix possible integer overflow in json accelerator module.

  • bpo-24489: ensure a previously set C errno doesn’t disturb cmath.polar().

  • bpo-24408: Fixed AttributeError in measure() and metrics() methods of tkinter.Font.

  • bpo-14373: C implementation of functools.lru_cache() now can be used with methods.

  • bpo-24347: Set KeyError if PyDict_GetItemWithError returns NULL.

  • bpo-24348: Drop superfluous incref/decref.

  • bpo-24359: Check for changed OrderedDict size during iteration.

  • bpo-24368: Support keyword arguments in OrderedDict methods.

  • bpo-24362: Simplify the C OrderedDict fast nodes resize logic.

  • bpo-24377: Fix a ref leak in OrderedDict.__repr__.

  • bpo-24369: Defend against key-changes during iteration.

Тесты

  • bpo-24373: _testmultiphase and xxlimited now use tp_traverse and tp_finalize to avoid reference leaks encountered when combining tp_dealloc with PyType_FromSpec (see bpo-16690 for details)

Документация

  • bpo-24458: Update documentation to cover multi-phase initialization for extension modules (PEP 489). Patch by Petr Viktorin.

  • bpo-24351: Clarify what is meant by «identifier» in the context of string.Template instances.

Построить

  • bpo-24432: Update Windows builds and OS X 10.5 installer to use OpenSSL 1.0.2c.

Python 3.5.0 beta 2

Release date: 2015-05-31

Ядро и встроенные модули

  • bpo-24284: The startswith and endswith methods of the str class no longer return True when finding the empty string and the indexes are completely out of range.

  • bpo-24115: Update uses of PyObject_IsTrue(), PyObject_Not(), PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains() to check for and handle errors correctly.

  • bpo-24328: Fix importing one character extension modules.

  • bpo-11205: In dictionary displays, evaluate the key before the value.

  • bpo-24285: Fixed regression that prevented importing extension modules from inside packages. Patch by Petr Viktorin.

Библиотека

  • bpo-23247: Fix a crash in the StreamWriter.reset() of CJK codecs.

  • bpo-24270: Add math.isclose() and cmath.isclose() functions as per PEP 485. Contributed by Chris Barker and Tal Einat.

  • bpo-5633: Fixed timeit when the statement is a string and the setup is not.

  • bpo-24326: Fixed audioop.ratecv() with non-default weightB argument. Original patch by David Moore.

  • bpo-16991: Add a C implementation of OrderedDict.

  • bpo-23934: Fix inspect.signature to fail correctly for builtin types lacking signature information. Initial patch by James Powell.

Python 3.5.0 beta 1

Release date: 2015-05-24

Ядро и встроенные модули

  • bpo-24276: Fixed optimization of property descriptor getter.

  • bpo-24268: PEP 489: Multi-phase extension module initialization. Patch by Petr Viktorin.

  • bpo-23955: Add pyvenv.cfg option to suppress registry/environment lookup for generating sys.path on Windows.

  • bpo-24257: Fixed system error in the comparison of faked types.SimpleNamespace.

  • bpo-22939: Fixed integer overflow in iterator object. Patch by Clement Rouault.

  • bpo-23985: Fix a possible buffer overrun when deleting a slice from the front of a bytearray and then appending some other bytes data.

  • bpo-24102: Fixed exception type checking in standard error handlers.

  • bpo-15027: The UTF-32 encoder is now 3x to 7x faster.

  • bpo-23290: Optimize set_merge() for cases where the target is empty. (Contributed by Serhiy Storchaka.)

  • bpo-2292: PEP 448: Additional Unpacking Generalizations.

  • bpo-24096: Make warnings.warn_explicit more robust against mutation of the warnings.filters list.

  • bpo-23996: Avoid a crash when a delegated generator raises an unnormalized StopIteration exception. Patch by Stefan Behnel.

  • bpo-23910: Optimize property() getter calls. Patch by Joe Jevnik.

  • bpo-23911: Move path-based importlib bootstrap code to a separate frozen module.

  • bpo-24192: Fix namespace package imports.

  • bpo-24022: Fix tokenizer crash when processing undecodable source code.

  • bpo-9951: Added a hex() method to bytes, bytearray, and memoryview.

  • bpo-22906: PEP 479: Change StopIteration handling inside generators.

  • bpo-24017: PEP 492: Coroutines with async and await syntax.

Библиотека

  • bpo-14373: Added C implementation of functools.lru_cache(). Based on patches by Matt Joiner and Alexey Kachayev.

  • bpo-24230: The tempfile module now accepts bytes for prefix, suffix and dir parameters and returns bytes in such situations (matching the os module APIs).

  • bpo-22189: collections.UserString now supports __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable(), and maketrans(). Patch by Joe Jevnik.

  • bpo-24244: Prevents termination when an invalid format string is encountered on Windows in strftime.

  • bpo-23973: PEP 484: Add the typing module.

  • bpo-23086: The collections.abc.Sequence() abstract base class added start and stop parameters to the index() mixin. Patch by Devin Jeanpierre.

  • bpo-20035: Разрешить параметры с именами tkinter._fix и _tkinter с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-24257: Fixed segmentation fault in sqlite3.Row constructor with faked cursor type.

  • bpo-15836: assertRaises(), assertRaisesRegex(), assertWarns() and assertWarnsRegex() assertments now check the type of the first argument to prevent possible user error. Based on patch by Daniel Wagner-Hall.

  • bpo-9858: Add missing method stubs to _io.RawIOBase. Patch by Laura Rupprecht.

  • bpo-22955: attrgetter, itemgetter and methodcaller objects in the operator module now support pickling. Added readable and evaluable repr for these objects. Based on patch by Josh Rosenberg.

  • bpo-22107: tempfile.gettempdir() and tempfile.mkdtemp() now try again when a directory with the chosen name already exists on Windows as well as on Unix. tempfile.mkstemp() now fails early if parent directory is not valid (not exists or is a file) on Windows.

  • bpo-23780: Improved error message in os.path.join() with single argument.

  • bpo-6598: Increased time precision and random number range in email.utils.make_msgid() to strengthen the uniqueness of the message ID.

  • bpo-24091: Fixed various crashes in corner cases in C implementation of ElementTree.

  • bpo-21931: msilib.FCICreate() now raises TypeError in the case of a bad argument instead of a ValueError with a bogus FCI error number. Patch by Jeffrey Armstrong.

  • bpo-13866: quote_via argument added to urllib.parse.urlencode.

  • bpo-20098: New mangle_from policy option for email, default True for compat32, but False for all other policies.

  • bpo-24211: The email library now supports RFC 6532: it can generate headers using utf-8 instead of encoded words.

  • bpo-16314: Added support for the LZMA compression in distutils.

  • bpo-21804: poplib now supports RFC 6856 (UTF8).

  • bpo-18682: Optimized pprint functions for builtin scalar types.

  • bpo-22027: smtplib now supports RFC 6531 (SMTPUTF8).

  • bpo-23488: Random generator objects now consume 2x less memory on 64-bit.

  • bpo-1322: platform.dist() and platform.linux_distribution() functions are now deprecated. Initial patch by Vajrasky Kok.

  • bpo-22486: Added the math.gcd() function. The fractions.gcd() function now is deprecated. Based on patch by Mark Dickinson.

  • bpo-24064: Property() docstrings are now writeable. (Patch by Berker Peksag.)

  • bpo-22681: Added support for the koi8_t encoding.

  • bpo-22682: Added support for the kz1048 encoding.

  • bpo-23796: peek and read1 methods of BufferedReader now raise ValueError if they called on a closed object. Patch by John Hergenroeder.

  • bpo-21795: smtpd now supports the 8BITMIME extension whenever the new decode_data constructor argument is set to False.

  • bpo-24155: optimize heapq.heapify() for better cache performance when heapifying large lists.

  • bpo-21800: imaplib now supports RFC 5161 (enable), RFC 6855 (utf8/internationalized email) and automatically encodes non-ASCII usernames and passwords to UTF8.

  • bpo-20274: When calling a _sqlite.Connection, it now complains if passed any keyword arguments. Previously it silently ignored them.

  • bpo-20274: Remove ignored and erroneous «kwargs» parameters from three METH_VARARGS methods on _sqlite.Connection.

  • bpo-24134: assertRaises(), assertRaisesRegex(), assertWarns() and assertWarnsRegex() checks now emits a deprecation warning when callable is None or keyword arguments except msg is passed in the context manager mode.

  • bpo-24018: Add a collections.abc.Generator abstract base class. Contributed by Stefan Behnel.

  • bpo-23880: Tkinter’s getint() and getdouble() now support Tcl_Obj. Tkinter’s getdouble() now supports any numbers (in particular int).

  • bpo-22619: Added negative limit support in the traceback module. Based on patch by Dmitry Kazakov.

  • bpo-24094: Fix possible crash in json.encode with poorly behaved dict subclasses.

  • bpo-9246: On POSIX, os.getcwd() now supports paths longer than 1025 bytes. Patch written by William Orr.

  • bpo-17445: add difflib.diff_bytes() to support comparison of byte strings (fixes a regression from Python 2).

  • bpo-23917: Fall back to sequential compilation when ProcessPoolExecutor doesn’t exist. Patch by Claudiu Popa.

  • bpo-23008: Fixed resolving attributes with boolean value is False in pydoc.

  • Fix asyncio issue 235: LifoQueue and PriorityQueue’s put didn’t increment unfinished tasks (this bug was introduced when JoinableQueue was merged with Queue).

  • bpo-23908: os functions now reject paths with embedded null character on Windows instead of silently truncating them.

  • bpo-23728: binascii.crc_hqx() could return an integer outside of the range 0-0xffff for empty data.

  • bpo-23887: urllib.error.HTTPError now has a proper repr() representation. Patch by Berker Peksag.

  • asyncio: New event loop APIs: set_task_factory() and get_task_factory().

  • asyncio: async() function is deprecated in favour of ensure_future().

  • bpo-24178: asyncio.Lock, Condition, Semaphore, and BoundedSemaphore support new „async with“ syntax. Contributed by Yury Selivanov.

  • bpo-24179: Support „async for“ for asyncio.StreamReader. Contributed by Yury Selivanov.

  • bpo-24184: Add AsyncIterator and AsyncIterable ABCs to collections.abc. Contributed by Yury Selivanov.

  • bpo-22547: Implement informative __repr__ for inspect.BoundArguments. Contributed by Yury Selivanov.

  • bpo-24190: Implement inspect.BoundArgument.apply_defaults() method. Contributed by Yury Selivanov.

  • bpo-20691: Add „follow_wrapped“ argument to inspect.Signature.from_callable() and inspect.signature(). Contributed by Yury Selivanov.

  • bpo-24248: Deprecate inspect.Signature.from_function() and inspect.Signature.from_builtin().

  • bpo-23898: Fix inspect.classify_class_attrs() to support attributes with overloaded __eq__ and __bool__. Patch by Mike Bayer.

  • bpo-24298: Fix inspect.signature() to correctly unwrap wrappers around bound methods.

IDLE

  • bpo-23184: remove unused names and imports in idlelib. Initial patch by Al Sweigart.

Тесты

  • bpo-21520: test_zipfile no longer fails if the word „bad“ appears anywhere in the name of the current directory.

  • bpo-9517: Move script_helper into the support package. Patch by Christie Wilson.

Документация

  • bpo-22155: Add File Handlers subsection with createfilehandler to tkinter doc. Remove obsolete example from FAQ. Patch by Martin Panter.

  • bpo-24029: Document the name binding behavior for submodule imports.

  • bpo-24077: Fix typo in man page for -I command option: -s, not -S

Инструменты/демоверсии

  • bpo-24000: Improved Argument Clinic’s mapping of converters to legacy «format units». Updated the documentation to match.

  • bpo-24001: Argument Clinic converters now use accept={type} instead of types={„type“} to specify the types the converter accepts.

  • bpo-23330: h2py now supports arbitrary filenames in #include.

  • bpo-24031: make patchcheck now supports git checkouts, too.

Python 3.5.0 alpha 4

Release date: 2015-04-19

Ядро и встроенные модули

  • bpo-22980: Under Linux, GNU/KFreeBSD and the Hurd, C extensions now include the architecture triplet in the extension name, to make it easy to test builds for different ABIs in the same working tree. Under OS X, the extension name now includes PEP 3149-style information.

  • bpo-22631: Added Linux-specific socket constant CAN_RAW_FD_FRAMES. Patch courtesy of Joe Jevnik.

  • bpo-23731: Implement PEP 488: removal of .pyo files.

  • bpo-23726: Don’t enable GC for user subclasses of non-GC types that don’t add any new fields. Patch by Eugene Toder.

  • bpo-23309: Avoid a deadlock at shutdown if a daemon thread is aborted while it is holding a lock to a buffered I/O object, and the main thread tries to use the same I/O object (typically stdout or stderr). A fatal error is emitted instead.

  • bpo-22977: Fixed formatting Windows error messages on Wine. Patch by Martin Panter.

  • bpo-23466: %c, %o, %x, and %X in bytes formatting now raise TypeError on non-integer input.

  • bpo-24044: Fix possible null pointer dereference in list.sort in out of memory conditions.

  • bpo-21354: PyCFunction_New function is exposed by python DLL again.

Библиотека

  • bpo-23840: tokenize.open() now closes the temporary binary file on error to fix a resource warning.

  • bpo-16914: new debuglevel 2 in smtplib adds timestamps to debug output.

  • bpo-7159: urllib.request now supports sending auth credentials automatically after the first 401. This enhancement is a superset of the enhancement from bpo-19494 and supersedes that change.

  • bpo-23703: Fix a regression in urljoin() introduced in 901e4e52b20a. Patch by Demian Brecht.

  • bpo-4254: Adds _curses.update_lines_cols(). Patch by Arnon Yaari

  • bpo-19933: Provide default argument for ndigits in round. Patch by Vajrasky Kok.

  • bpo-23193: Add a numeric_owner parameter to tarfile.TarFile.extract and tarfile.TarFile.extractall. Patch by Michael Vogt and Eric Smith.

  • bpo-23342: Add a subprocess.run() function than returns a CalledProcess instance for a more consistent API than the existing call* functions.

  • bpo-21217: inspect.getsourcelines() now tries to compute the start and end lines from the code object, fixing an issue when a lambda function is used as decorator argument. Patch by Thomas Ballinger and Allison Kaptur.

  • bpo-24521: Fix possible integer overflows in the pickle module.

  • bpo-22931: Allow „[“ and „]“ in cookie values.

  • The keywords attribute of functools.partial is now always a dictionary.

  • bpo-23811: Add missing newline to the PyCompileError error message. Patch by Alex Shkop.

  • bpo-21116: Avoid blowing memory when allocating a multiprocessing shared array that’s larger than 50% of the available RAM. Patch by Médéric Boquien.

  • bpo-22982: Improve BOM handling when seeking to multiple positions of a writable text file.

  • bpo-23464: Removed deprecated asyncio JoinableQueue.

  • bpo-23529: Limit the size of decompressed data when reading from GzipFile, BZ2File or LZMAFile. This defeats denial of service attacks using compressed bombs (i.e. compressed payloads which decompress to a huge size). Patch by Martin Panter and Nikolaus Rath.

  • bpo-21859: Added Python implementation of io.FileIO.

  • bpo-23865: close() methods in multiple modules now are idempotent and more robust at shutdown. If they need to release multiple resources, all are released even if errors occur.

  • bpo-23400: Raise same exception on both Python 2 and 3 if sem_open is not available. Patch by Davin Potts.

  • bpo-10838: The subprocess now module includes SubprocessError and TimeoutError in its list of exported names for the users wild enough to use from subprocess import *.

  • bpo-23411: Added DefragResult, ParseResult, SplitResult, DefragResultBytes, ParseResultBytes, and SplitResultBytes to urllib.parse.__all__. Patch by Martin Panter.

  • bpo-23881: urllib.request.ftpwrapper constructor now closes the socket if the FTP connection failed to fix a ResourceWarning.

  • bpo-23853: socket.socket.sendall() does no more reset the socket timeout each time data is sent successfully. The socket timeout is now the maximum total duration to send all data.

  • bpo-22721: An order of multiline pprint output of set or dict containing orderable and non-orderable elements no longer depends on iteration order of set or dict.

  • bpo-15133: _tkinter.tkapp.getboolean() now supports Tcl_Obj and always returns bool. tkinter.BooleanVar now validates input values (accepted bool, int, str, and Tcl_Obj). tkinter.BooleanVar.get() now always returns bool.

  • bpo-10590: xml.sax.parseString() now supports string argument.

  • bpo-23338: Fixed formatting ctypes error messages on Cygwin. Patch by Makoto Kato.

  • bpo-15582: inspect.getdoc() now follows inheritance chains.

  • bpo-2175: SAX parsers now support a character stream of InputSource object.

  • bpo-16840: Tkinter now supports 64-bit integers added in Tcl 8.4 and arbitrary precision integers added in Tcl 8.5.

  • bpo-23834: Fix socket.sendto(), use the C Py_ssize_t type to store the result of sendto() instead of the C int type.

  • bpo-23618: Разрешить параметры с именами socket.socket.connect() и InterruptedError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21526: Tkinter now supports new boolean type in Tcl 8.5.

  • bpo-23836: Fix the faulthandler module to handle reentrant calls to its signal handlers.

  • bpo-23838: linecache now clears the cache and returns an empty result on MemoryError.

  • bpo-10395: Added os.path.commonpath(). Implemented in posixpath and ntpath. Based on patch by Rafik Draoui.

  • bpo-23611: Serializing more «lookupable» objects (such as unbound methods or nested classes) now are supported with pickle protocols < 4.

  • bpo-13583: sqlite3.Row now supports slice indexing.

  • bpo-18473: Fixed 2to3 and 3to2 compatible pickle mappings. Fixed ambiguous reverse mappings. Added many new mappings. Import mapping is no longer applied to modules already mapped with full name mapping.

  • bpo-23485: select.select() is now retried automatically with the recomputed timeout when interrupted by a signal, except if the signal handler raises an exception. This change is part of the PEP 475.

  • bpo-23752: When built from an existing file descriptor, io.FileIO() now only calls fstat() once. Before fstat() was called twice, which was not necessary.

  • bpo-23704: collections.deque() objects now support __add__, __mul__, and __imul__().

  • bpo-23171: csv.Writer.writerow() now supports arbitrary iterables.

  • bpo-23745: The new email header parser now handles duplicate MIME parameter names without error, similar to how get_param behaves.

  • bpo-22117: Fix os.utime(), it now rounds the timestamp towards minus infinity (-inf) instead of rounding towards zero.

  • bpo-23310: Fix MagicMock’s initializer to work with __methods__, just like configure_mock(). Patch by Kasia Jachim.

Построить

  • bpo-23817: FreeBSD now uses «1.0» in the SOVERSION as other operating systems, instead of just «1».

  • bpo-23501: Argument Clinic now generates code into separate files by default.

Тесты

  • bpo-23799: Added test.support.start_threads() for running and cleaning up multiple threads.

  • bpo-22390: test.regrtest now emits a warning if temporary files or directories are left after running a test.

Инструменты/демоверсии

  • bpo-18128: pygettext now uses standard +NNNN format in the POT-Creation-Date header.

  • bpo-23935: Argument Clinic’s understanding of format units accepting bytes, bytearrays, and buffers is now consistent with both the documentation and the implementation.

  • bpo-23944: Argument Clinic now wraps long impl prototypes at column 78.

  • bpo-20586: Argument Clinic now ensures that functions without docstrings have signatures.

  • bpo-23492: Argument Clinic now generates argument parsing code with PyArg_Parse instead of PyArg_ParseTuple if possible.

  • bpo-23500: Argument Clinic is now smarter about generating the «#ifndef» (empty) definition of the methoddef macro: it’s only generated once, even if Argument Clinic processes the same symbol multiple times, and it’s emitted at the end of all processing rather than immediately after the first use.

C API

  • bpo-23998: PyImport_ReInitLock() now checks for lock allocation error

Python 3.5.0 alpha 3

Release date: 2015-03-28

Ядро и встроенные модули

  • bpo-23573: Increased performance of string search operations (str.find, str.index, str.count, the in operator, str.split, str.partition) with arguments of different kinds (UCS1, UCS2, UCS4).

  • bpo-23753: Python doesn’t support anymore platforms without stat() or fstat(), these functions are always required.

  • bpo-23681: The -b option now affects comparisons of bytes with int.

  • bpo-23632: Memoryviews now allow tuple indexing (including for multi-dimensional memoryviews).

  • bpo-23192: Fixed generator lambdas. Patch by Bruno Cauet.

  • bpo-23629: Fix the default __sizeof__ implementation for variable-sized objects.

Библиотека

  • bpo-14260: The groupindex attribute of regular expression pattern object now is non-modifiable mapping.

  • bpo-23792: Ignore KeyboardInterrupt when the pydoc pager is active. This mimics the behavior of the standard unix pagers, and prevents pipepager from shutting down while the pager itself is still running.

  • bpo-23775: pprint() of OrderedDict now outputs the same representation as repr().

  • bpo-23765: Removed IsBadStringPtr calls in ctypes

  • bpo-22364: Improved some re error messages using regex for hints.

  • bpo-23742: ntpath.expandvars() no longer loses unbalanced single quotes.

  • bpo-21717: The zipfile.ZipFile.open function now supports „x“ (exclusive creation) mode.

  • bpo-21802: The reader in BufferedRWPair now is closed even when closing writer failed in BufferedRWPair.close().

  • bpo-23622: Unknown escapes in regular expressions that consist of '\' and ASCII letter now raise a deprecation warning and will be forbidden in Python 3.6.

  • bpo-23671: string.Template now allows specifying the «self» parameter as a keyword argument. string.Formatter now allows specifying the «self» and the «format_string» parameters as keyword arguments.

  • bpo-23502: The pprint module now supports mapping proxies.

  • bpo-17530: pprint now wraps long bytes objects and bytearrays.

  • bpo-22687: Fixed some corner cases in breaking words in tetxtwrap. Got rid of quadratic complexity in breaking long words.

  • bpo-4727: The copy module now uses pickle protocol 4 (PEP 3154) and supports copying of instances of classes whose __new__ method takes keyword-only arguments.

  • bpo-23491: Added a zipapp module to support creating executable zip file archives of Python code. Registered «.pyz» and «.pyzw» extensions on Windows for these archives (PEP 441).

  • bpo-23657: Avoid explicit checks for str in zipapp, adding support for pathlib.Path objects as arguments.

  • bpo-23688: Added support of arbitrary bytes-like objects and avoided unnecessary copying of memoryview in gzip.GzipFile.write(). Original patch by Wolfgang Maier.

  • bpo-23252: Added support for writing ZIP files to unseekable streams.

  • bpo-23647: Increase imaplib’s MAXLINE to accommodate modern mailbox sizes.

  • bpo-23539: If body is None, http.client.HTTPConnection.request now sets Content-Length to 0 for PUT, POST, and PATCH headers to avoid 411 errors from some web servers.

  • bpo-22351: The nntplib.NNTP constructor no longer leaves the connection and socket open until the garbage collector cleans them up. Patch by Martin Panter.

  • bpo-23704: collections.deque() objects now support methods for index(), insert(), and copy(). This allows deques to be registered as a MutableSequence and it improves their substitutability for lists.

  • bpo-23715: Разрешить параметры с именами signal.sigwaitinfo() и signal.sigtimedwait() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23001: Few functions in modules mmap, ossaudiodev, socket, ssl, and codecs, that accepted only read-only bytes-like object now accept writable bytes-like object too.

  • bpo-23646: If time.sleep() is interrupted by a signal, the sleep is now retried with the recomputed delay, except if the signal handler raises an exception (PEP 475).

  • bpo-23136: _strptime now uniformly handles all days in week 0, including Dec 30 of previous year. Based on patch by Jim Carroll.

  • bpo-23700: Iterator of NamedTemporaryFile now keeps a reference to NamedTemporaryFile instance. Patch by Bohuslav Kabrda.

  • bpo-22903: The fake test case created by unittest.loader when it fails importing a test module is now picklable.

  • bpo-22181: On Linux, os.urandom() now uses the new getrandom() syscall if available, syscall introduced in the Linux kernel 3.17. It is more reliable and more secure, because it avoids the need of a file descriptor and waits until the kernel has enough entropy.

  • bpo-2211: Updated the implementation of the http.cookies.Morsel class. Setting attributes key, value and coded_value directly now is deprecated. update() and setdefault() now transform and check keys. Comparing for equality now takes into account attributes key, value and coded_value. copy() now returns a Morsel, not a dict. repr() now contains all attributes. Optimized checking keys and quoting values. Added new tests. Original patch by Demian Brecht.

  • bpo-18983: Allow selection of output units in timeit. Patch by Julian Gindi.

  • bpo-23631: Fix traceback.format_list when a traceback has been mutated.

  • bpo-23568: Add rdivmod support to MagicMock() objects. Patch by Håkan Lövdahl.

  • bpo-2052: Add charset parameter to HtmlDiff.make_file().

  • bpo-23668: Support os.truncate and os.ftruncate on Windows.

  • bpo-23138: Fixed parsing cookies with absent keys or values in cookiejar. Patch by Demian Brecht.

  • bpo-23051: multiprocessing.Pool methods imap() and imap_unordered() now handle exceptions raised by an iterator. Patch by Alon Diamant and Davin Potts.

  • bpo-23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl.

  • bpo-23566: enable(), register(), dump_traceback() and dump_traceback_later() functions of faulthandler now accept file descriptors. Patch by Wei Wu.

  • bpo-22928: Disabled HTTP header injections in http.client. Original patch by Demian Brecht.

  • bpo-23615: Modules bz2, tarfile and tokenize now can be reloaded with imp.reload(). Patch by Thomas Kluyver.

  • bpo-23605: os.walk() now calls os.scandir() instead of os.listdir(). The usage of os.scandir() reduces the number of calls to os.stat(). Initial patch written by Ben Hoyt.

Построить

  • bpo-23585: make patchcheck will ensure the interpreter is built.

Тесты

  • bpo-23583: Added tests for standard IO streams in IDLE.

  • bpo-22289: Prevent test_urllib2net failures due to ftp connection timeout.

Инструменты/демоверсии

  • bpo-22826: The result of open() in Tools/freeze/bkfile.py is now better compatible with regular files (in particular it now supports the context management protocol).

Python 3.5.0 alpha 2

Release date: 2015-03-09

Ядро и встроенные модули

  • bpo-23571: PyObject_Call() and PyCFunction_Call() now raise a SystemError if a function returns a result and raises an exception. The SystemError is chained to the previous exception.

Библиотека

  • bpo-22524: New os.scandir() function, part of the PEP 471: «os.scandir() function – a better and faster directory iterator». Patch written by Ben Hoyt.

  • bpo-23103: Reduced the memory consumption of IPv4Address and IPv6Address.

  • bpo-21793: BaseHTTPRequestHandler again logs response code as numeric, not as stringified enum. Patch by Demian Brecht.

  • bpo-23476: In the ssl module, enable OpenSSL’s X509_V_FLAG_TRUSTED_FIRST flag on certificate stores when it is available.

  • bpo-23576: Avoid stalling in SSL reads when EOF has been reached in the SSL layer but the underlying connection hasn’t been closed.

  • bpo-23504: Added an __all__ to the types module.

  • bpo-23563: Optimized utility functions in urllib.parse.

  • bpo-7830: Flatten nested functools.partial.

  • bpo-20204: Added the __module__ attribute to _tkinter classes.

  • bpo-19980: Improved help() for non-recognized strings. help(„“) now shows the help on str. help(„help“) now shows the help on help(). Original patch by Mark Lawrence.

  • bpo-23521: Corrected pure python implementation of timedelta division. Eliminated OverflowError from timedelta * float for some floats; Corrected rounding in timedelta true division.

  • bpo-21619: Popen objects no longer leave a zombie after exit in the with statement if the pipe was broken. Patch by Martin Panter.

  • bpo-22936: Make it possible to show local variables in tracebacks for both the traceback module and unittest.

  • bpo-15955: Add an option to limit the output size in bz2.decompress(). Patch by Nikolaus Rath.

  • bpo-6639: Module-level turtle functions no longer raise TclError after closing the window.

  • bpo-814253: Group references and conditional group references now work in lookbehind assertions in regular expressions. (See also: bpo-9179)

  • bpo-23215: Multibyte codecs with custom error handlers that ignores errors consumed too much memory and raised SystemError or MemoryError. Original patch by Aleksi Torhamo.

  • bpo-5700: io.FileIO() called flush() after closing the file. flush() was not called in close() if closefd=False.

  • bpo-23374: Fixed pydoc failure with non-ASCII files when stdout encoding differs from file system encoding (e.g. on Mac OS).

  • bpo-23481: Remove RC4 from the SSL module’s default cipher list.

  • bpo-21548: Fix pydoc.synopsis() and pydoc.apropos() on modules with empty docstrings.

  • bpo-22885: Fixed arbitrary code execution vulnerability in the dbm.dumb module. Original patch by Claudiu Popa.

  • bpo-23239: ssl.match_hostname() now supports matching of IP addresses.

  • bpo-23146: Fix mishandling of absolute Windows paths with forward slashes in pathlib.

  • bpo-23096: Pickle representation of floats with protocol 0 now is the same for both Python and C implementations.

  • bpo-19105: pprint now more efficiently uses free space at the right.

  • bpo-14910: Add allow_abbrev parameter to argparse.ArgumentParser. Patch by Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson.

  • bpo-21717: tarfile.open() now supports „x“ (exclusive creation) mode.

  • bpo-23344: marshal.dumps() is now 20-25% faster on average.

  • bpo-20416: marshal.dumps() with protocols 3 and 4 is now 40-50% faster on average.

  • bpo-23421: Fixed compression in tarfile CLI. Patch by wdv4758h.

  • bpo-23367: Fix possible overflows in the unicodedata module.

  • bpo-23361: Fix possible overflow in Windows subprocess creation code.

  • logging.handlers.QueueListener now takes a respect_handler_level keyword argument which, if set to True, will pass messages to handlers taking handler levels into account.

  • bpo-19705: turtledemo now has a visual sorting algorithm demo. Original patch from Jason Yeo.

  • bpo-23801: Fix issue where cgi.FieldStorage did not always ignore the entire preamble to a multipart body.

Построить

  • bpo-23445: pydebug builds now use «gcc -Og» where possible, to make the resulting executable faster.

  • bpo-23686: Update OS X 10.5 installer build to use OpenSSL 1.0.2a.

C API

  • bpo-20204: Deprecation warning is now raised for builtin types without the __module__ attribute.

Windows

  • bpo-23465: Implement PEP 486 - Make the Python Launcher aware of virtual environments. Patch by Paul Moore.

  • bpo-23437: Make user scripts directory versioned on Windows. Patch by Paul Moore.

Python 3.5.0 alpha 1

Release date: 2015-02-08

Ядро и встроенные модули

  • bpo-23285: PEP 475 - EINTR handling.

  • bpo-22735: Fix many edge cases (including crashes) involving custom mro() implementations.

  • bpo-22896: Avoid using PyObject_AsCharBuffer(), PyObject_AsReadBuffer() and PyObject_AsWriteBuffer().

  • bpo-21295: Revert some changes (bpo-16795) to AST line numbers and column offsets that constituted a regression.

  • bpo-22986: Allow changing an object’s __class__ between a dynamic type and static type in some cases.

  • bpo-15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and PyUnicode_EncodeCodePage() now raise an exception if the object is not a Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case on platforms other than Windows. Patch written by Campbell Barton.

  • bpo-21408: The default __ne__() now returns NotImplemented if __eq__() returned NotImplemented. Original patch by Martin Panter.

  • bpo-23321: Fixed a crash in str.decode() when error handler returned replacement string longer than malformed input data.

  • bpo-22286: The «backslashreplace» error handlers now works with decoding and translating.

  • bpo-23253: Delay-load ShellExecute[AW] in os.startfile for reduced startup overhead on Windows.

  • bpo-22038: pyatomic.h now uses stdatomic.h or GCC built-in functions for atomic memory access if available. Patch written by Vitor de Lima and Gustavo Temple.

  • bpo-20284: %-interpolation (aka printf) formatting added for bytes and bytearray.

  • bpo-23048: Fix jumping out of an infinite while loop in the pdb.

  • bpo-20335: bytes constructor now raises TypeError when encoding or errors is specified with non-string argument. Based on patch by Renaud Blanch.

  • bpo-22834: If the current working directory ends up being set to a non-existent directory then import will no longer raise FileNotFoundError.

  • bpo-22869: Move the interpreter startup & shutdown code to a new dedicated pylifecycle.c module

  • bpo-22847: Improve method cache efficiency.

  • bpo-22335: Fix crash when trying to enlarge a bytearray to 0x7fffffff bytes on a 32-bit platform.

  • bpo-22653: Fix an assertion failure in debug mode when doing a reentrant dict insertion in debug mode.

  • bpo-22643: Fix integer overflow in Unicode case operations (upper, lower, title, swapcase, casefold).

  • bpo-17636: Circular imports involving relative imports are now supported.

  • bpo-22604: Fix assertion error in debug mode when dividing a complex number by (nan+0j).

  • bpo-21052: Do not raise ImportWarning when sys.path_hooks or sys.meta_path are set to None.

  • bpo-16518: Use „bytes-like object required“ in error messages that previously used the far more cryptic «„x“ does not support the buffer protocol.

  • bpo-22470: Fixed integer overflow issues in «backslashreplace», «xmlcharrefreplace», and «surrogatepass» error handlers.

  • bpo-22540: Разрешить параметры с именами PyObject_IsInstance и PyObject_IsSubclass с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-18711: Разрешить параметры с именами PyErr_FormatV и PyErr_Format с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-22520: Fix overflow checking when generating the repr of a unicode object.

  • bpo-22519: Fix overflow checking in PyBytes_Repr.

  • bpo-22518: Fix integer overflow issues in latin-1 encoding.

  • bpo-16324: _charset parameter of MIMEText now also accepts email.charset.Charset instances. Initial patch by Claude Paroz.

  • bpo-1764286: Fix inspect.getsource() to support decorated functions. Patch by Claudiu Popa.

  • bpo-18554: os.__all__ includes posix functions.

  • bpo-21391: Use os.path.abspath in the shutil module.

  • bpo-11471: avoid generating a JUMP_FORWARD instruction at the end of an if-block if there is no else-clause. Original patch by Eugene Toder.

  • bpo-22215: Now ValueError is raised instead of TypeError when str or bytes argument contains not permitted null character or byte.

  • bpo-22258: Разрешить параметры с именами ioctl(FIOCLEX) и fcntl() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21389: Displaying the __qualname__ of the underlying function in the repr of a bound method.

  • bpo-22206: Using pthread, PyThread_create_key() now sets errno to ENOMEM and returns -1 (error) on integer overflow.

  • bpo-20184: Argument Clinic based signature introspection added for 30 of the builtin functions.

  • bpo-22116: C functions and methods (of the „builtin_function_or_method“ type) can now be weakref’ed. Patch by Wei Wu.

  • bpo-22077: Improve index error messages for bytearrays, bytes, lists, and tuples by adding „or slices“. Added „, not <typename>“ for bytearrays. Original patch by Claudiu Popa.

  • bpo-20179: Apply Argument Clinic to bytes and bytearray. Patch by Tal Einat.

  • bpo-22082: Clear interned strings in slotdefs.

  • Upgrade Unicode database to Unicode 7.0.0.

  • bpo-21897: Fix a crash with the f_locals attribute with closure variables when frame.clear() has been called.

  • bpo-21205: Разрешить параметры с именами __qualname__ и repr(gen) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21669: With the aid of heuristics in SyntaxError.__init__, the parser now attempts to generate more meaningful (or at least more search engine friendly) error messages when «exec» and «print» are used as statements.

  • bpo-21642: Разрешить параметры с именами else и True if 42else False с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21523: Fix over-pessimistic computation of the stack effect of some opcodes in the compiler. This also fixes a quadratic compilation time issue noticeable when compiling code with a large number of «and» and «or» operators.

  • bpo-21418: Fix a crash in the builtin function super() when called without argument and without current frame (ex: embedded Python).

  • bpo-21425: Fix flushing of standard streams in the interactive interpreter.

  • bpo-21435: In rare cases, when running finalizers on objects in cyclic trash a bad pointer dereference could occur due to a subtle flaw in internal iteration logic.

  • bpo-21377: PyBytes_Concat() now tries to concatenate in-place when the first argument has a reference count of 1. Patch by Nikolaus Rath.

  • bpo-20355: -W command line options now have higher priority than the PYTHONWARNINGS environment variable. Patch by Arfrever.

  • bpo-21274: Define PATH_MAX for GNU/Hurd in Python/pythonrun.c.

  • bpo-20904: Support setting FPU precision on m68k.

  • bpo-21209: Fix sending tuples to custom generator objects with the yield from syntax.

  • bpo-21193: pow(a, b, c) now raises ValueError rather than TypeError when b is negative. Patch by Josh Rosenberg.

  • bpo-21176: PEP 465: Add the „@“ operator for matrix multiplication.

  • bpo-21134: Fix segfault when str is called on an uninitialized UnicodeEncodeError, UnicodeDecodeError, or UnicodeTranslateError object.

  • bpo-19537: Fix PyUnicode_DATA() alignment under m68k. Patch by Andreas Schwab.

  • bpo-20929: Add a type cast to avoid shifting a negative number.

  • bpo-20731: Properly position in source code files even if they are opened in text mode. Patch by Serhiy Storchaka.

  • bpo-20637: Key-sharing now also works for instance dictionaries of subclasses. Patch by Peter Ingebretson.

  • bpo-8297: Attributes missing from modules now include the module name in the error text. Original patch by ysj.ray.

  • bpo-19995: %c, %o, %x, and %X now raise TypeError on non-integer input.

  • bpo-19655: The ASDL parser - used by the build process to generate code for managing the Python AST in C - was rewritten. The new parser is self contained and does not require to carry long the spark.py parser-generator library; spark.py was removed from the source base.

  • bpo-12546: Allow \x00 to be used as a fill character when using str, int, float, and complex __format__ methods.

  • bpo-20480: Add ipaddress.reverse_pointer. Patch by Leon Weber.

  • bpo-13598: Modify string.Formatter to support auto-numbering of replacement fields. It now matches the behavior of str.format() in this regard. Patches by Phil Elson and Ramchandra Apte.

  • bpo-8931: Make alternate formatting („#“) for type „c“ raise an exception. In versions prior to 3.5, „#“ with „c“ had no effect. Now specifying it is an error. Patch by Torsten Landschoff.

  • bpo-23165: Perform overflow checks before allocating memory in the _Py_char2wchar function.

Библиотека

  • bpo-23399: pyvenv creates relative symlinks where possible.

  • bpo-20289: cgi.FieldStorage() now supports the context management protocol.

  • bpo-13128: Print response headers for CONNECT requests when debuglevel > 0. Patch by Demian Brecht.

  • bpo-15381: Optimized io.BytesIO to make less allocations and copyings.

  • bpo-22818: Splitting on a pattern that could match an empty string now raises a warning. Patterns that can only match empty strings are now rejected.

  • bpo-23099: Closing io.BytesIO with exported buffer is rejected now to prevent corrupting exported buffer.

  • bpo-23326: Removed __ne__ implementations. Since fixing default __ne__ implementation in bpo-21408 they are redundant.

  • bpo-23363: Fix possible overflow in itertools.permutations.

  • bpo-23364: Fix possible overflow in itertools.product.

  • bpo-23366: Fixed possible integer overflow in itertools.combinations.

  • bpo-23369: Fixed possible integer overflow in _json.encode_basestring_ascii.

  • bpo-23353: Fix the exception handling of generators in PyEval_EvalFrameEx(). At entry, save or swap the exception state even if PyEval_EvalFrameEx() is called with throwflag=0. At exit, the exception state is now always restored or swapped, not only if why is WHY_YIELD or WHY_RETURN. Patch co-written with Antoine Pitrou.

  • bpo-14099: Restored support of writing ZIP files to tellable but non-seekable streams.

  • bpo-14099: Writing to ZipFile and reading multiple ZipExtFiles is threadsafe now.

  • bpo-19361: JSON decoder now raises JSONDecodeError instead of ValueError.

  • bpo-18518: timeit now rejects statements which can’t be compiled outside a function or a loop (e.g. «return» or «break»).

  • bpo-23094: Fixed readline with frames in Python implementation of pickle.

  • bpo-23268: Fixed bugs in the comparison of ipaddress classes.

  • bpo-21408: Removed incorrect implementations of __ne__() which didn’t returned NotImplemented if __eq__() returned NotImplemented. The default __ne__() now works correctly.

  • bpo-19996: email.feedparser.FeedParser now handles (malformed) headers with no key rather than assuming the body has started.

  • bpo-20188: Support Application-Layer Protocol Negotiation (ALPN) in the ssl module.

  • bpo-23133: Pickling of ipaddress objects now produces more compact and portable representation.

  • bpo-23248: Update ssl error codes from latest OpenSSL git master.

  • bpo-23266: Much faster implementation of ipaddress.collapse_addresses() when there are many non-consecutive addresses.

  • bpo-23098: 64-bit dev_t is now supported in the os module.

  • bpo-21817: When an exception is raised in a task submitted to a ProcessPoolExecutor, the remote traceback is now displayed in the parent process. Patch by Claudiu Popa.

  • bpo-15955: Add an option to limit output size when decompressing LZMA data. Patch by Nikolaus Rath and Martin Panter.

  • bpo-23250: In the http.cookies module, capitalize «HttpOnly» and «Secure» as they are written in the standard.

  • bpo-23063: In the distutils“ check command, fix parsing of reST with code or code-block directives.

  • bpo-23209: selectors.BaseSelector.get_key() now raises a RuntimeError if the selector is closed. And selectors.BaseSelector.close() now clears its internal reference to the selector mapping to break a reference cycle. Initial patch written by Martin Richard. (See also: bpo-23225)

  • bpo-17911: Provide a way to seed the linecache for a PEP-302 module without actually loading the code.

  • bpo-17911: Provide a new object API for traceback, including the ability to not lookup lines at all until the traceback is actually rendered, without any trace of the original objects being kept alive.

  • bpo-19777: Provide a home() classmethod on Path objects. Contributed by Victor Salgado and Mayank Tripathi.

  • bpo-23206: Разрешить параметры с именами json.dumps(..., ensure_ascii=False) и ensure_ascii=True с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-23185: Add math.inf and math.nan constants.

  • bpo-23186: Add ssl.SSLObject.shared_ciphers() and ssl.SSLSocket.shared_ciphers() to fetch the client’s list ciphers sent at handshake.

  • bpo-23143: Remove compatibility with OpenSSLs older than 0.9.8.

  • bpo-23132: Improve performance and introspection support of comparison methods created by functool.total_ordering.

  • bpo-19776: Add an expanduser() method on Path objects.

  • bpo-23112: Fix SimpleHTTPServer to correctly carry the query string and fragment when it redirects to add a trailing slash.

  • bpo-21793: Added http.HTTPStatus enums (i.e. HTTPStatus.OK, HTTPStatus.NOT_FOUND). Patch by Demian Brecht.

  • bpo-23093: In the io, module allow more operations to work on detached streams.

  • bpo-23111: In the ftplib, make ssl.PROTOCOL_SSLv23 the default protocol version.

  • bpo-22585: On OpenBSD 5.6 and newer, os.urandom() now calls getentropy(), instead of reading /dev/urandom, to get pseudo-random bytes.

  • bpo-19104: pprint now produces evaluable output for wrapped strings.

  • bpo-23071: Added missing names to codecs.__all__. Patch by Martin Panter.

  • bpo-22783: Pickling now uses the NEWOBJ opcode instead of the NEWOBJ_EX opcode if possible.

  • bpo-15513: Added a __sizeof__ implementation for pickle classes.

  • bpo-19858: pickletools.optimize() now aware of the MEMOIZE opcode, can produce more compact result and no longer produces invalid output if input data contains MEMOIZE opcodes together with PUT or BINPUT opcodes.

  • bpo-22095: Fixed HTTPConnection.set_tunnel with default port. The port value in the host header was set to «None». Patch by Demian Brecht.

  • bpo-23016: A warning no longer produces an AttributeError when the program is run with pythonw.exe.

  • bpo-21775: shutil.copytree(): fix crash when copying to VFAT. An exception handler assumed that OSError objects always have a „winerror“ attribute. That is not the case, so the exception handler itself raised AttributeError when run on Linux (and, presumably, any other non-Windows OS). Patch by Greg Ward.

  • bpo-1218234: Fix inspect.getsource() to load updated source of reloaded module. Initial patch by Berker Peksag.

  • bpo-21740: Support wrapped callables in doctest. Patch by Claudiu Popa.

  • bpo-23009: Make sure selectors.EpollSelector.select() works when no FD is registered.

  • bpo-22959: In the constructor of http.client.HTTPSConnection, prefer the context’s check_hostname attribute over the check_hostname parameter.

  • bpo-22696: Add function sys.is_finalizing() to know about interpreter shutdown.

  • bpo-16043: Add a default limit for the amount of data xmlrpclib.gzip_decode will return. This resolves CVE-2013-1753.

  • bpo-14099: ZipFile.open() no longer reopen the underlying file. Objects returned by ZipFile.open() can now operate independently of the ZipFile even if the ZipFile was created by passing in a file-like object as the first argument to the constructor.

  • bpo-22966: Fix __pycache__ pyc file name clobber when pyc_compile is asked to compile a source file containing multiple dots in the source file name.

  • bpo-21971: Update turtledemo doc and add module to the index.

  • bpo-21032: Fixed socket leak if HTTPConnection.getresponse() fails. Original patch by Martin Panter.

  • bpo-22407: Deprecated the use of re.LOCALE flag with str patterns or re.ASCII. It was newer worked.

  • bpo-22902: The «ip» command is now used on Linux to determine MAC address in uuid.getnode(). Patch by Bruno Cauet.

  • bpo-22960: Add a context argument to xmlrpclib.ServerProxy constructor.

  • bpo-22389: Add contextlib.redirect_stderr().

  • bpo-21356: Make ssl.RAND_egd() optional to support LibreSSL. The availability of the function is checked during the compilation. Patch written by Bernard Spil.

  • bpo-22915: SAX parser now supports files opened with file descriptor or bytes path.

  • bpo-22609: Constructors and update methods of mapping classes in the collections module now accept the self keyword argument.

  • bpo-22940: Add readline.append_history_file.

  • bpo-19676: Added the «namereplace» error handler.

  • bpo-22788: Add context parameter to logging.handlers.HTTPHandler.

  • bpo-22921: Allow SSLContext to take the hostname parameter even if OpenSSL doesn’t support SNI.

  • bpo-22894: TestCase.subTest() would cause the test suite to be stopped when in failfast mode, even in the absence of failures.

  • bpo-22796: HTTP cookie parsing is now stricter, in order to protect against potential injection attacks.

  • bpo-22370: Windows detection in pathlib is now more robust.

  • bpo-22841: Reject coroutines in asyncio add_signal_handler(). Patch by Ludovic.Gasc.

  • bpo-19494: Added urllib.request.HTTPBasicPriorAuthHandler. Patch by Matej Cepl.

  • bpo-22578: Added attributes to the re.error class.

  • bpo-22849: Fix possible double free in the io.TextIOWrapper constructor.

  • bpo-12728: Different Unicode characters having the same uppercase but different lowercase are now matched in case-insensitive regular expressions.

  • bpo-22821: Fixed fcntl() with integer argument on 64-bit big-endian platforms.

  • bpo-21650: Разрешить параметры с именами --sort-keys и json.tool с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-22824: Updated reprlib output format for sets to use set literals. Patch contributed by Berker Peksag.

  • bpo-22824: Updated reprlib output format for arrays to display empty arrays without an unnecessary empty list. Suggested by Serhiy Storchaka.

  • bpo-22406: Fixed the uu_codec codec incorrectly ported to 3.x. Based on patch by Martin Panter.

  • bpo-17293: uuid.getnode() now determines MAC address on AIX using netstat. Based on patch by Aivars Kalvāns.

  • bpo-22769: Fixed ttk.Treeview.tag_has() when called without arguments.

  • bpo-22417: Verify certificates by default in httplib (PEP 476).

  • bpo-22775: Fixed unpickling of http.cookies.SimpleCookie with protocol 2 and above. Patch by Tim Graham.

  • bpo-22776: Brought excluded code into the scope of a try block in SysLogHandler.emit().

  • bpo-22665: Add missing get_terminal_size and SameFileError to shutil.__all__.

  • bpo-6623: Remove deprecated Netrc class in the ftplib module. Patch by Matt Chaput.

  • bpo-17381: Fixed handling of case-insensitive ranges in regular expressions.

  • bpo-22410: Module level functions in the re module now cache compiled locale-dependent regular expressions taking into account the locale.

  • bpo-22759: Query methods on pathlib.Path() (exists(), is_dir(), etc.) now return False when the underlying stat call raises NotADirectoryError.

  • bpo-8876: distutils now falls back to copying files when hard linking doesn’t work. This allows use with special filesystems such as VirtualBox shared folders.

  • bpo-22217: Implemented reprs of classes in the zipfile module.

  • bpo-22457: Honour load_tests in the start_dir of discovery.

  • bpo-18216: gettext now raises an error when a .mo file has an unsupported major version number. Patch by Aaron Hill.

  • bpo-13918: Provide a locale.delocalize() function which can remove locale-specific number formatting from a string representing a number, without then converting it to a specific type. Patch by Cédric Krier.

  • bpo-22676: Make the pickling of global objects which don’t have a __module__ attribute less slow.

  • bpo-18853: Fixed ResourceWarning in shlex.__nain__.

  • bpo-9351: Defaults set with set_defaults on an argparse subparser are no longer ignored when also set on the parent parser.

  • bpo-7559: unittest test loading ImportErrors are reported as import errors with their import exception rather than as attribute errors after the import has already failed.

  • bpo-19746: Разрешить параметры с именами errors и TestLoader с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21991: Make email.headerregistry’s header „params“ attributes be read-only (MappingProxyType). Previously the dictionary was modifiable but a new one was created on each access of the attribute.

  • bpo-22638: SSLv3 is now disabled throughout the standard library. It can still be enabled by instantiating a SSLContext manually.

  • bpo-22641: In asyncio, the default SSL context for client connections is now created using ssl.create_default_context(), for stronger security.

  • bpo-17401: Include closefd in io.FileIO repr.

  • bpo-21338: Add silent mode for compileall. quiet parameters of compile_{dir, file, path} functions now have a multilevel value. Also, -q option of the CLI now have a multilevel value. Patch by Thomas Kluyver.

  • bpo-20152: Convert the array and cmath modules to Argument Clinic.

  • bpo-18643: Add socket.socketpair() on Windows.

  • bpo-22435: Fix a file descriptor leak when socketserver bind fails.

  • bpo-13096: Fixed segfault in CTypes POINTER handling of large values.

  • bpo-11694: Raise ConversionError in xdrlib as documented. Patch by Filip Gruszczyński and Claudiu Popa.

  • bpo-19380: Optimized parsing of regular expressions.

  • bpo-1519638: Now unmatched groups are replaced with empty strings in re.sub() and re.subn().

  • bpo-18615: sndhdr.what/whathdr now return a namedtuple.

  • bpo-22462: Fix pyexpat’s creation of a dummy frame to make it appear in exception tracebacks.

  • bpo-21965: Add support for in-memory SSL to the ssl module. Patch by Geert Jansen.

  • bpo-21173: Fix len() on a WeakKeyDictionary when .clear() was called with an iterator alive.

  • bpo-11866: Eliminated race condition in the computation of names for new threads.

  • bpo-21905: Avoid RuntimeError in pickle.whichmodule() when sys.modules is mutated while iterating. Patch by Olivier Grisel.

  • bpo-11271: concurrent.futures.Executor.map() now takes a chunksize argument to allow batching of tasks in child processes and improve performance of ProcessPoolExecutor. Patch by Dan O’Reilly.

  • bpo-21883: os.path.join() and os.path.relpath() now raise a TypeError with more helpful error message for unsupported or mismatched types of arguments.

  • bpo-22219: The zipfile module CLI now adds entries for directories (including empty directories) in ZIP file.

  • bpo-22449: In the ssl.SSLContext.load_default_certs, consult the environmental variables SSL_CERT_DIR and SSL_CERT_FILE on Windows.

  • bpo-22508: The email.__version__ variable has been removed; the email code is no longer shipped separately from the stdlib, and __version__ hasn’t been updated in several releases.

  • bpo-20076: Added non derived UTF-8 aliases to locale aliases table.

  • bpo-20079: Added locales supported in glibc 2.18 to locale alias table.

  • bpo-20218: Added convenience methods read_text/write_text and read_bytes/ write_bytes to pathlib.Path objects.

  • bpo-22396: On 32-bit AIX platform, don’t expose os.posix_fadvise() nor os.posix_fallocate() because their prototypes in system headers are wrong.

  • bpo-22517: When an io.BufferedRWPair object is deallocated, clear its weakrefs.

  • bpo-22437: Number of capturing groups in regular expression is no longer limited by 100.

  • bpo-17442: InteractiveInterpreter now displays the full chained traceback in its showtraceback method, to match the built in interactive interpreter.

  • bpo-23392: Added tests for marshal C API that works with FILE*.

  • bpo-10510: distutils register and upload methods now use HTML standards compliant CRLF line endings.

  • bpo-9850: Fixed macpath.join() for empty first component. Patch by Oleg Oshmyan.

  • bpo-5309: distutils“ build and build_ext commands now accept a -j option to enable parallel building of extension modules.

  • bpo-22448: Improve canceled timer handles cleanup to prevent unbound memory usage. Patch by Joshua Moore-Oliva.

  • bpo-22427: TemporaryDirectory no longer attempts to clean up twice when used in the with statement in generator.

  • bpo-22362: Forbidden ambiguous octal escapes out of range 0-0o377 in regular expressions.

  • bpo-20912: Now directories added to ZIP file have correct Unix and MS-DOS directory attributes.

  • bpo-21866: ZipFile.close() no longer writes ZIP64 central directory records if allowZip64 is false.

  • bpo-22278: Fix urljoin problem with relative urls, a regression observed after changes to issue22118 were submitted.

  • bpo-22415: Fixed debugging output of the GROUPREF_EXISTS opcode in the re module. Removed trailing spaces in debugging output.

  • bpo-22423: Unhandled exception in thread no longer causes unhandled AttributeError when sys.stderr is None.

  • bpo-21332: Ensure that bufsize=1 in subprocess.Popen() selects line buffering, rather than block buffering. Patch by Akira Li.

  • bpo-21091: Fix API bug: email.message.EmailMessage.is_attachment is now a method.

  • bpo-21079: Fix email.message.EmailMessage.is_attachment to return the correct result when the header has parameters as well as a value.

  • bpo-22247: Add NNTPError to nntplib.__all__.

  • bpo-22366: urllib.request.urlopen will accept a context object (SSLContext) as an argument which will then be used for HTTPS connection. Patch by Alex Gaynor.

  • bpo-4180: The warnings registries are now reset when the filters are modified.

  • bpo-22419: Limit the length of incoming HTTP request in wsgiref server to 65536 bytes and send a 414 error code for higher lengths. Patch contributed by Devin Cook.

  • Lax cookie parsing in http.cookies could be a security issue when combined with non-standard cookie handling in some web browsers. Reported by Sergey Bobrov.

  • bpo-20537: logging methods now accept an exception instance as well as a Boolean value or exception tuple. Thanks to Yury Selivanov for the patch.

  • bpo-22384: An exception in Tkinter callback no longer crashes the program when it is run with pythonw.exe.

  • bpo-22168: Prevent turtle AttributeError with non-default Canvas on OS X.

  • bpo-21147: sqlite3 now raises an exception if the request contains a null character instead of truncating it. Based on patch by Victor Stinner.

  • bpo-13968: The glob module now supports recursive search in subdirectories using the ** pattern.

  • bpo-21951: Fixed a crash in Tkinter on AIX when called Tcl command with empty string or tuple argument.

  • bpo-21951: Tkinter now most likely raises MemoryError instead of crash if the memory allocation fails.

  • bpo-22338: Fix a crash in the json module on memory allocation failure.

  • bpo-12410: imaplib.IMAP4 now supports the context management protocol. Original patch by Tarek Ziadé.

  • bpo-21270: We now override tuple methods in mock.call objects so that they can be used as normal call attributes.

  • bpo-16662: Разрешить параметры с именами load_tests() и __init__.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-22226: First letter no longer is stripped from the «status» key in the result of Treeview.heading().

  • bpo-19524: Fixed resource leak in the HTTP connection when an invalid response is received. Patch by Martin Panter.

  • bpo-20421: Add a .version() method to SSL sockets exposing the actual protocol version in use.

  • bpo-19546: configparser exceptions no longer expose implementation details. Chained KeyErrors are removed, which leads to cleaner tracebacks. Patch by Claudiu Popa.

  • bpo-22051: turtledemo no longer reloads examples to re-run them. Initialization of variables and gui setup should be done in main(), which is called each time a demo is run, but not on import.

  • bpo-21933: Turtledemo users can change the code font size with a menu selection or control(command) „-“ or „+“ or control-mousewheel. Original patch by Lita Cho.

  • bpo-21597: The separator between the turtledemo text pane and the drawing canvas can now be grabbed and dragged with a mouse. The code text pane can be widened to easily view or copy the full width of the text. The canvas can be widened on small screens. Original patches by Jan Kanis and Lita Cho.

  • bpo-18132: Turtledemo buttons no longer disappear when the window is shrunk. Original patches by Jan Kanis and Lita Cho.

  • bpo-22043: Разрешить параметры с именами threading.Lock.acquire() и threading.RLock.acquire() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21527: Add a default number of workers to ThreadPoolExecutor equal to 5 times the number of CPUs. Patch by Claudiu Popa.

  • bpo-22216: smtplib now resets its state more completely after a quit. The most obvious consequence of the previous behavior was a STARTTLS failure during a connect/starttls/quit/connect/starttls sequence.

  • bpo-22098: ctypes“ BigEndianStructure and LittleEndianStructure now define an empty __slots__ so that subclasses don’t always get an instance dict. Patch by Claudiu Popa.

  • bpo-22185: Fix an occasional RuntimeError in threading.Condition.wait() caused by mutation of the waiters queue without holding the lock. Patch by Doug Zongker.

  • bpo-22287: On UNIX, _PyTime_gettimeofday() now uses clock_gettime(CLOCK_REALTIME) if available. As a side effect, Python now depends on the librt library on Solaris and on Linux (only with glibc older than 2.17).

  • bpo-22182: Use e.args to unpack exceptions correctly in distutils.file_util.move_file. Patch by Claudiu Popa.

  • The webbrowser module now uses subprocess’s start_new_session=True rather than a potentially risky preexec_fn=os.setsid call.

  • bpo-22042: signal.set_wakeup_fd(fd) now raises an exception if the file descriptor is in blocking mode.

  • bpo-16808: inspect.stack() now returns a named tuple instead of a tuple. Patch by Daniel Shahaf.

  • bpo-22236: Fixed Tkinter images copying operations in NoDefaultRoot mode.

  • bpo-2527: Add a globals argument to timeit functions, in order to override the globals namespace in which the timed code is executed. Patch by Ben Roberts.

  • bpo-22118: Switch urllib.parse to use RFC 3986 semantics for the resolution of relative URLs, rather than RFCs 1808 and 2396. Patch by Demian Brecht.

  • bpo-21549: Added the «members» parameter to TarFile.list().

  • bpo-19628: Allow compileall recursion depth to be specified with a -r option.

  • bpo-15696: Add a __sizeof__ implementation for mmap objects on Windows.

  • bpo-22068: Avoided reference loops with Variables and Fonts in Tkinter.

  • bpo-22165: SimpleHTTPRequestHandler now supports undecodable file names.

  • bpo-15381: Optimized line reading in io.BytesIO.

  • bpo-8797: Raise HTTPError on failed Basic Authentication immediately. Initial patch by Sam Bull.

  • bpo-20729: Restored the use of lazy iterkeys()/itervalues()/iteritems() in the mailbox module.

  • bpo-21448: Changed FeedParser feed() to avoid O(n2) behavior when parsing long line. Original patch by Raymond Hettinger.

  • bpo-22184: The functools LRU Cache decorator factory now gives an earlier and clearer error message when the user forgets the required parameters.

  • bpo-17923: glob() patterns ending with a slash no longer match non-dirs on AIX. Based on patch by Delhallt.

  • bpo-21725: Added support for RFC 6531 (SMTPUTF8) in smtpd.

  • bpo-22176: Update the ctypes module’s libffi to v3.1. This release adds support for the Linux AArch64 and POWERPC ELF ABIv2 little endian architectures.

  • bpo-5411: Added support for the «xztar» format in the shutil module.

  • bpo-21121: Don’t force 3rd party C extensions to be built with -Werror=declaration-after-statement.

  • bpo-21975: Fixed crash when using uninitialized sqlite3.Row (in particular when unpickling pickled sqlite3.Row). sqlite3.Row is now initialized in the __new__() method.

  • bpo-20170: Convert posixmodule to use Argument Clinic.

  • bpo-21539: Разрешить параметры с именами Pathlib.mkdir() и mkdir -p с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-22127: Bypass IDNA for pure-ASCII host names in the socket module (in particular for numeric IPs).

  • bpo-21047: set the default value for the convert_charrefs argument of HTMLParser to True. Patch by Berker Peksag.

  • Add an __all__ to html.entities.

  • bpo-15114: the strict mode and argument of HTMLParser, HTMLParser.error, and the HTMLParserError exception have been removed.

  • bpo-22085: Dropped support of Tk 8.3 in Tkinter.

  • bpo-21580: Now Tkinter correctly handles bytes arguments passed to Tk. In particular this allows initializing images from binary data.

  • bpo-22003: When initialized from a bytes object, io.BytesIO() now defers making a copy until it is mutated, improving performance and memory use on some use cases. Patch by David Wilson.

  • bpo-22018: On Windows, signal.set_wakeup_fd() now also supports sockets. A side effect is that Python depends to the WinSock library.

  • bpo-22054: Add os.get_blocking() and os.set_blocking() functions to get and set the blocking mode of a file descriptor (False if the O_NONBLOCK flag is set, True otherwise). These functions are not available on Windows.

  • bpo-17172: Make turtledemo start as active on OS X even when run with subprocess. Patch by Lita Cho.

  • bpo-21704: Fix build error for _multiprocessing when semaphores are not available. Patch by Arfrever Frehtes Taifersar Arahesis.

  • bpo-20173: Convert sha1, sha256, sha512 and md5 to ArgumentClinic. Patch by Vajrasky Kok.

  • Fix repr(_socket.socket) on Windows 64-bit: don’t fail with OverflowError on closed socket. repr(socket.socket) already works fine.

  • bpo-22033: Reprs of most Python implemented classes now contain actual class name instead of hardcoded one.

  • bpo-21947: The dis module can now disassemble generator-iterator objects based on their gi_code attribute. Patch by Clement Rouault.

  • bpo-16133: The asynchat.async_chat.handle_read() method now ignores BlockingIOError exceptions.

  • bpo-22044: Fixed premature DECREF in call_tzinfo_method. Patch by Tom Flanagan.

  • bpo-19884: readline: Disable the meta modifier key if stdout is not a terminal to not write the ANSI sequence "\033[1034h" into stdout. This sequence is used on some terminal (ex: TERM=xterm-256color») to enable support of 8 bit characters.

  • bpo-4350: Removed a number of out-of-dated and non-working for a long time Tkinter methods.

  • bpo-6167: Scrollbar.activate() now returns the name of active element if the argument is not specified. Scrollbar.set() now always accepts only 2 arguments.

  • bpo-15275: Clean up and speed up the ntpath module.

  • bpo-21888: plistlib’s load() and loads() now work if the fmt parameter is specified.

  • bpo-22032: __qualname__ instead of __name__ is now always used to format fully qualified class names of Python implemented classes.

  • bpo-22031: Reprs now always use hexadecimal format with the «0x» prefix when contain an id in form « at 0x…».

  • bpo-22018: signal.set_wakeup_fd() now raises an OSError instead of a ValueError on fstat() failure.

  • bpo-21044: tarfile.open() now handles fileobj with an integer „name“ attribute. Based on patch by Antoine Pietri.

  • bpo-21966: Respect -q command-line option when code module is ran.

  • bpo-19076: Don’t pass the redundant „file“ argument to self.error().

  • bpo-16382: Improve exception message of warnings.warn() for bad category. Initial patch by Phil Elson.

  • bpo-21932: Разрешить параметры с именами Py_ssize_t() и int с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21942: Fixed source file viewing in pydoc’s server mode on Windows.

  • bpo-11259: asynchat.async_chat().set_terminator() now raises a ValueError if the number of received bytes is negative.

  • bpo-12523: asynchat.async_chat.push() now raises a TypeError if it doesn’t get a bytes string

  • bpo-21707: Add missing kwonlyargcount argument to ModuleFinder.replace_paths_in_code().

  • bpo-20639: calling Path.with_suffix(„“) allows removing the suffix again. Patch by July Tikhonov.

  • bpo-21714: Disallow the construction of invalid paths using Path.with_name(). Original patch by Antony Lee.

  • bpo-15014: Added „auth“ method to smtplib to make implementing auth mechanisms simpler, and used it internally in the login method.

  • bpo-21151: Разрешить параметры с именами None и REG_BINARY с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21090: io.FileIO.readall() does not ignore I/O errors anymore. Before, it ignored I/O errors if at least the first C call read() succeed.

  • bpo-5800: headers parameter of wsgiref.headers.Headers is now optional. Initial patch by Pablo Torres Navarrete and SilentGhost.

  • bpo-21781: ssl.RAND_add() now supports strings longer than 2 GB.

  • bpo-21679: Prevent extraneous fstat() calls during open(). Patch by Bohuslav Kabrda.

  • bpo-21863: cProfile now displays the module name of C extension functions, in addition to their own name.

  • bpo-11453: asyncore: emit a ResourceWarning when an unclosed file_wrapper object is destroyed. The destructor now closes the file if needed. The close() method can now be called twice: the second call does nothing.

  • bpo-21858: Better handling of Python exceptions in the sqlite3 module.

  • bpo-21476: Make sure the email.parser.BytesParser TextIOWrapper is discarded after parsing, so the input file isn’t unexpectedly closed.

  • bpo-20295: imghdr now recognizes OpenEXR format images.

  • bpo-21729: Used the «with» statement in the dbm.dumb module to ensure files closing. Patch by Claudiu Popa.

  • bpo-21491: socketserver: Fix a race condition in child processes reaping.

  • bpo-21719: Added the st_file_attributes field to os.stat_result on Windows.

  • bpo-21832: Require named tuple inputs to be exact strings.

  • bpo-21722: The distutils «upload» command now exits with a non-zero return code when uploading fails. Patch by Martin Dengler.

  • bpo-21723: asyncio.Queue: support any type of number (ex: float) for the maximum size. Patch written by Vajrasky Kok.

  • bpo-21711: support for «site-python» directories has now been removed from the site module (it was deprecated in 3.4).

  • bpo-17552: new socket.sendfile() method allowing a file to be sent over a socket by using high-performance os.sendfile() on UNIX. Patch by Giampaolo Rodola“.

  • bpo-18039: dbm.dump.open() now always creates a new database when the flag has the value „n“. Patch by Claudiu Popa.

  • bpo-21326: Add a new is_closed() method to asyncio.BaseEventLoop. run_forever() and run_until_complete() methods of asyncio.BaseEventLoop now raise an exception if the event loop was closed.

  • bpo-21766: Prevent a security hole in CGIHTTPServer by URL unquoting paths before checking for a CGI script at that path.

  • bpo-21310: Fixed possible resource leak in failed open().

  • bpo-21256: Printout of keyword args should be in deterministic order in a mock function call. This will help to write better doctests.

  • bpo-21677: Fixed chaining nonnormalized exceptions in io close() methods.

  • bpo-11709: Fix the pydoc.help function to not fail when sys.stdin is not a valid file.

  • bpo-21515: tempfile.TemporaryFile now uses os.O_TMPFILE flag is available.

  • bpo-13223: Fix pydoc.writedoc so that the HTML documentation for methods that use „self“ in the example code is generated correctly.

  • bpo-21463: In urllib.request, fix pruning of the FTP cache.

  • bpo-21618: The subprocess module could fail to close open fds that were inherited by the calling process and already higher than POSIX resource limits would otherwise allow. On systems with a functioning /proc/self/fd or /dev/fd interface the max is now ignored and all fds are closed.

  • bpo-20383: Introduce importlib.util.module_from_spec() as the preferred way to create a new module.

  • bpo-21552: Fixed possible integer overflow of too long string lengths in the tkinter module on 64-bit platforms.

  • bpo-14315: The zipfile module now ignores extra fields in the central directory that are too short to be parsed instead of letting a struct.unpack error bubble up as this «bad data» appears in many real world zip files in the wild and is ignored by other zip tools.

  • bpo-13742: Added «key» and «reverse» parameters to heapq.merge(). (First draft of patch contributed by Simon Sapin.)

  • bpo-21402: tkinter.ttk now works when default root window is not set.

  • bpo-3015: _tkinter.create() now creates tkapp object with wantobject=1 by default.

  • bpo-10203: sqlite3.Row now truly supports sequence protocol. In particular it supports reverse() and negative indices. Original patch by Claudiu Popa.

  • bpo-18807: If copying (no symlinks) specified for a venv, then the python interpreter aliases (python, python3) are now created by copying rather than symlinking.

  • bpo-20197: Added support for the WebP image type in the imghdr module. Patch by Fabrice Aneche and Claudiu Popa.

  • bpo-21513: Speedup some properties of IP addresses (IPv4Address, IPv6Address) such as .is_private or .is_multicast.

  • bpo-21137: Improve the repr for threading.Lock() and its variants by showing the «locked» or «unlocked» status. Patch by Berker Peksag.

  • bpo-21538: The plistlib module now supports loading of binary plist files when reference or offset size is not a power of two.

  • bpo-21455: Add a default backlog to socket.listen().

  • bpo-21525: Most Tkinter methods which accepted tuples now accept lists too.

  • bpo-22166: With the assistance of a new internal _codecs._forget_codec helping function, test_codecs now clears the encoding caches to avoid the appearance of a reference leak

  • bpo-22236: Tkinter tests now don’t reuse default root window. New root window is created for every test class.

  • bpo-10744: Fix PEP 3118 format strings on ctypes objects with a nontrivial shape.

  • bpo-20826: Optimize ipaddress.collapse_addresses().

  • bpo-21487: Optimize ipaddress.summarize_address_range() and ipaddress.{IPv4Network,IPv6Network}.subnets().

  • bpo-21486: Optimize parsing of netmasks in ipaddress.IPv4Network and ipaddress.IPv6Network.

  • bpo-13916: Disallowed the surrogatepass error handler for non UTF-* encodings.

  • bpo-20998: Fixed re.fullmatch() of repeated single character pattern with ignore case. Original patch by Matthew Barnett.

  • bpo-21075: fileinput.FileInput now reads bytes from standard stream if binary mode is specified. Patch by Sam Kimbrel.

  • bpo-19775: Add a samefile() method to pathlib Path objects. Initial patch by Vajrasky Kok.

  • bpo-21226: Set up modules properly in PyImport_ExecCodeModuleObject (and friends).

  • bpo-21398: Fix a unicode error in the pydoc pager when the documentation contains characters not encodable to the stdout encoding.

  • bpo-16531: ipaddress.IPv4Network and ipaddress.IPv6Network now accept an (address, netmask) tuple argument, so as to easily construct network objects from existing addresses.

  • bpo-21156: importlib.abc.InspectLoader.source_to_code() is now a staticmethod.

  • bpo-21424: Simplified and optimized heaqp.nlargest() and nmsmallest() to make fewer tuple comparisons.

  • bpo-21396: Fix TextIOWrapper(…, write_through=True) to not force a flush() on the underlying binary stream. Patch by akira.

  • bpo-18314: Unlink now removes junctions on Windows. Patch by Kim Gräsman

  • bpo-21088: Bugfix for curses.window.addch() regression in 3.4.0. In porting to Argument Clinic, the first two arguments were reversed.

  • bpo-21407: _decimal: The module now supports function signatures.

  • bpo-10650: Remove the non-standard „watchexp“ parameter from the Decimal.quantize() method in the Python version. It had never been present in the C version.

  • bpo-21469: Reduced the risk of false positives in robotparser by checking to make sure that robots.txt has been read or does not exist prior to returning True in can_fetch().

  • bpo-19414: Have the OrderedDict mark deleted links as unusable. This gives an early failure if the link is deleted during iteration.

  • bpo-21421: Add __slots__ to the MappingViews ABC. Patch by Josh Rosenberg.

  • bpo-21101: Eliminate double hashing in the C speed-up code for collections.Counter().

  • bpo-21321: itertools.islice() now releases the reference to the source iterator when the slice is exhausted. Patch by Anton Afanasyev.

  • bpo-21057: TextIOWrapper now allows the underlying binary stream’s read() or read1() method to return an arbitrary bytes-like object (such as a memoryview). Patch by Nikolaus Rath.

  • bpo-20951: SSLSocket.send() now raises either SSLWantReadError or SSLWantWriteError on a non-blocking socket if the operation would block. Previously, it would return 0. Patch by Nikolaus Rath.

  • bpo-13248: removed previously deprecated asyncore.dispatcher __getattr__ cheap inheritance hack.

  • bpo-9815: assertRaises now tries to clear references to local variables in the exception’s traceback.

  • bpo-19940: ssl.cert_time_to_seconds() now interprets the given time string in the UTC timezone (as specified in RFC 5280), not the local timezone.

  • bpo-13204: Calling sys.flags.__new__ would crash the interpreter, now it raises a TypeError.

  • bpo-19385: Make operations on a closed dbm.dumb database always raise the same exception.

  • bpo-21207: Detect when the os.urandom cached fd has been closed or replaced, and open it anew.

  • bpo-21291: subprocess’s Popen.wait() is now thread safe so that multiple threads may be calling wait() or poll() on a Popen instance at the same time without losing the Popen.returncode value.

  • bpo-21127: Path objects can now be instantiated from str subclass instances (such as numpy.str_).

  • bpo-15002: urllib.response object to use _TemporaryFileWrapper (and _TemporaryFileCloser) facility. Provides a better way to handle file descriptor close. Patch contributed by Christian Theune.

  • bpo-12220: mindom now raises a custom ValueError indicating it doesn’t support spaces in URIs instead of letting a „split“ ValueError bubble up.

  • bpo-21068: The ssl.PROTOCOL* constants are now enum members.

  • bpo-21276: posixmodule: Don’t define USE_XATTRS on KFreeBSD and the Hurd.

  • bpo-21262: New method assert_not_called for Mock. It raises AssertionError if the mock has been called.

  • bpo-21238: Разрешить параметры с именами unsafe и AttributeError с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20896: ssl.get_server_certificate() now uses PROTOCOL_SSLv23, not PROTOCOL_SSLv3, for maximum compatibility.

  • bpo-21239: patch.stopall() didn’t work deterministically when the same name was patched more than once.

  • bpo-21203: Updated fileConfig and dictConfig to remove inconsistencies. Thanks to Jure Koren for the patch.

  • bpo-21222: Passing name keyword argument to mock.create_autospec now works.

  • bpo-21197: Add lib64 -> lib symlink in venvs on 64-bit non-OS X POSIX.

  • bpo-17498: Some SMTP servers disconnect after certain errors, violating strict RFC conformance. Instead of losing the error code when we issue the subsequent RSET, smtplib now returns the error code and defers raising the SMTPServerDisconnected error until the next command is issued.

  • bpo-17826: setting an iterable side_effect on a mock function created by create_autospec now works. Patch by Kushal Das.

  • bpo-7776: Fix Host: header and reconnection when using http.client.HTTPConnection.set_tunnel(). Patch by Nikolaus Rath.

  • bpo-20968: unittest.mock.MagicMock now supports division. Patch by Johannes Baiter.

  • bpo-21529: Fix arbitrary memory access in JSONDecoder.raw_decode with a negative second parameter. Bug reported by Guido Vranken. (See also: CVE-2014-4616)

  • bpo-21169: getpass now handles non-ascii characters that the input stream encoding cannot encode by re-encoding using the replace error handler.

  • bpo-21171: Fixed undocumented filter API of the rot13 codec. Patch by Berker Peksag.

  • bpo-20539: Improved math.factorial error message for large positive inputs and changed exception type (OverflowError -> ValueError) for large negative inputs.

  • bpo-21172: isinstance check relaxed from dict to collections.Mapping.

  • bpo-21155: asyncio.EventLoop.create_unix_server() now raises a ValueError if path and sock are specified at the same time.

  • bpo-21136: Avoid unnecessary normalization of Fractions resulting from power and other operations. Patch by Raymond Hettinger.

  • bpo-17621: Introduce importlib.util.LazyLoader.

  • bpo-21076: signal module constants were turned into enums. Patch by Giampaolo Rodola“.

  • bpo-20636: Improved the repr of Tkinter widgets.

  • bpo-19505: The items, keys, and values views of OrderedDict now support reverse iteration using reversed().

  • bpo-21149: Improved thread-safety in logging cleanup during interpreter shutdown. Thanks to Devin Jeanpierre for the patch.

  • bpo-21058: Разрешить параметры с именами tempfile.NamedTemporaryFile() и io.open() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21200: Return None from pkgutil.get_loader() when __spec__ is missing.

  • bpo-21013: Enhance ssl.create_default_context() when used for server side sockets to provide better security by default.

  • bpo-20145: Разрешить параметры с именами assertRaisesRegex и assertWarnsRegex с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20633: Replace relative import by absolute import.

  • bpo-20980: Stop wrapping exception when using ThreadPool.

  • bpo-21082: In os.makedirs, do not set the process-wide umask. Note this changes behavior of makedirs when exist_ok=True.

  • bpo-20990: Fix issues found by pyflakes for multiprocessing.

  • bpo-21015: SSL contexts will now automatically select an elliptic curve for ECDH key exchange on OpenSSL 1.0.2 and later, and otherwise default to «prime256v1».

  • bpo-21000: Improve the command-line interface of json.tool.

  • bpo-20995: Enhance default ciphers used by the ssl module to enable better security and prioritize perfect forward secrecy.

  • bpo-20884: Don’t assume that __file__ is defined on importlib.__init__.

  • bpo-21499: Ignore __builtins__ in several test_importlib.test_api tests.

  • bpo-20627: xmlrpc.client.ServerProxy is now a context manager.

  • bpo-19165: The formatter module now raises DeprecationWarning instead of PendingDeprecationWarning.

  • bpo-13936: Remove the ability of datetime.time instances to be considered false in boolean contexts.

  • bpo-18931: selectors module now supports /dev/poll on Solaris. Patch by Giampaolo Rodola“.

  • bpo-19977: Разрешить параметры с именами LC_TYPE и C с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20574: Implement incremental decoder for cp65001 code (Windows code page 65001, Microsoft UTF-8).

  • bpo-20879: Delay the initialization of encoding and decoding tables for base32, ascii85 and base85 codecs in the base64 module, and delay the initialization of the unquote_to_bytes() table of the urllib.parse module, to not waste memory if these modules are not used.

  • bpo-19157: Include the broadcast address in the usable hosts for IPv6 in ipaddress.

  • bpo-11599: When an external command (e.g. compiler) fails, distutils now prints out the whole command line (instead of just the command name) if the environment variable DISTUTILS_DEBUG is set.

  • bpo-4931: distutils should not produce unhelpful «error: None» messages anymore. distutils.util.grok_environment_error is kept but doc-deprecated.

  • bpo-20875: Prevent possible gzip «„read“ is not defined» NameError. Patch by Claudiu Popa.

  • bpo-11558: Разрешить параметры с именами email.message.Message.attach и attach с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20283: RE pattern methods now accept the string keyword parameters as documented. The pattern and source keyword parameters are left as deprecated aliases.

  • bpo-20778: Fix modulefinder to work with bytecode-only modules.

  • bpo-20791: copy.copy() now doesn’t make a copy when the input is a bytes object. Initial patch by Peter Otten.

  • bpo-19748: On AIX, time.mktime() now raises an OverflowError for year outsize range [1902; 2037].

  • bpo-19573: inspect.signature: Use enum for parameter kind constants.

  • bpo-20726: inspect.signature: Make Signature and Parameter picklable.

  • bpo-17373: Add inspect.Signature.from_callable method.

  • bpo-20378: Improve repr of inspect.Signature and inspect.Parameter.

  • bpo-20816: Fix inspect.getcallargs() to raise correct TypeError for missing keyword-only arguments. Patch by Jeremiah Lowin.

  • bpo-20817: Fix inspect.getcallargs() to fail correctly if more than 3 arguments are missing. Patch by Jeremiah Lowin.

  • bpo-6676: Ensure a meaningful exception is raised when attempting to parse more than one XML document per pyexpat xmlparser instance. (Original patches by Hirokazu Yamamoto and Amaury Forgeot d’Arc, with suggested wording by David Gutteridge)

  • bpo-21117: Fix inspect.signature to better support functools.partial. Due to the specifics of functools.partial implementation, positional-or-keyword arguments passed as keyword arguments become keyword-only.

  • bpo-20334: inspect.Signature and inspect.Parameter are now hashable. Thanks to Antony Lee for bug reports and suggestions.

  • bpo-15916: doctest.DocTestSuite returns an empty unittest.TestSuite instead of raising ValueError if it finds no tests

  • bpo-21209: Fix asyncio.tasks.CoroWrapper to workaround a bug in yield-from implementation in CPythons prior to 3.4.1.

  • asyncio: Add gi_{frame,running,code} properties to CoroWrapper (upstream bpo-163).

  • bpo-21311: Avoid exception in _osx_support with non-standard compiler configurations. Patch by John Szakmeister.

  • bpo-11571: Ensure that the turtle window becomes the topmost window when launched on OS X.

  • bpo-21801: Validate that __signature__ is None or an instance of Signature.

  • bpo-21923: Prevent AttributeError in distutils.sysconfig.customize_compiler due to possible uninitialized _config_vars.

  • bpo-21323: Fix http.server to again handle scripts in CGI subdirectories, broken by the fix for security bpo-19435. Patch by Zach Byrne.

  • bpo-22733: Fix ffi_prep_args not zero-extending argument values correctly on 64-bit Windows.

  • bpo-23302: Default to TCP_NODELAY=1 upon establishing an HTTPConnection. Removed use of hard-coded MSS as it’s an optimization that’s no longer needed with Nagle disabled.

IDLE

  • bpo-20577: Configuration of the max line length for the FormatParagraph extension has been moved from the General tab of the Idle preferences dialog to the FormatParagraph tab of the Config Extensions dialog. Patch by Tal Einat.

  • bpo-16893: Update Idle doc chapter to match current Idle and add new information.

  • bpo-3068: Add Idle extension configuration dialog to Options menu. Changes are written to HOME/.idlerc/config-extensions.cfg. Original patch by Tal Einat.

  • bpo-16233: A module browser (File : Class Browser, Alt+C) requires an editor window with a filename. When Class Browser is requested otherwise, from a shell, output window, or „Untitled“ editor, Idle no longer displays an error box. It now pops up an Open Module box (Alt+M). If a valid name is entered and a module is opened, a corresponding browser is also opened.

  • bpo-4832: Save As to type Python files automatically adds .py to the name you enter (even if your system does not display it). Some systems automatically add .txt when type is Text files.

  • bpo-21986: Code objects are not normally pickled by the pickle module. To match this, they are no longer pickled when running under Idle.

  • bpo-17390: Adjust Editor window title; remove „Python“, move version to end.

  • bpo-14105: Idle debugger breakpoints no longer disappear when inserting or deleting lines.

  • bpo-17172: Turtledemo can now be run from Idle. Currently, the entry is on the Help menu, but it may move to Run. Patch by Ramchandra Apt and Lita Cho.

  • bpo-21765: Add support for non-ascii identifiers to HyperParser.

  • bpo-21940: Add unittest for WidgetRedirector. Initial patch by Saimadhav Heblikar.

  • bpo-18592: Add unittest for SearchDialogBase. Patch by Phil Webster.

  • bpo-21694: Add unittest for ParenMatch. Patch by Saimadhav Heblikar.

  • bpo-21686: add unittest for HyperParser. Original patch by Saimadhav Heblikar.

  • bpo-12387: Add missing upper(lower)case versions of default Windows key bindings for Idle so Caps Lock does not disable them. Patch by Roger Serwy.

  • bpo-21695: Closing a Find-in-files output window while the search is still in progress no longer closes Idle.

  • bpo-18910: Add unittest for textView. Patch by Phil Webster.

  • bpo-18292: Add unittest for AutoExpand. Patch by Saihadhav Heblikar.

  • bpo-18409: Add unittest for AutoComplete. Patch by Phil Webster.

  • bpo-21477: htest.py - Improve framework, complete set of tests. Patches by Saimadhav Heblikar

  • bpo-18104: Add idlelib/idle_test/htest.py with a few sample tests to begin consolidating and improving human-validated tests of Idle. Change other files as needed to work with htest. Running the module as __main__ runs all tests.

  • bpo-21139: Change default paragraph width to 72, the PEP 8 recommendation.

  • bpo-21284: Paragraph reformat test passes after user changes reformat width.

  • bpo-17654: Ensure IDLE menus are customized properly on OS X for non-framework builds and for all variants of Tk.

  • bpo-23180: Rename IDLE «Windows» menu item to «Window». Patch by Al Sweigart.

Построить

  • bpo-15506: Use standard PKG_PROG_PKG_CONFIG autoconf macro in the configure script.

  • bpo-22935: Allow the ssl module to be compiled if openssl doesn’t support SSL 3.

  • bpo-22592: Drop support of the Borland C compiler to build Python. The distutils module still supports it to build extensions.

  • bpo-22591: Drop support of MS-DOS, especially of the DJGPP compiler (MS-DOS port of GCC).

  • bpo-16537: Check whether self.extensions is empty in setup.py. Patch by Jonathan Hosmer.

  • bpo-22359: Remove incorrect uses of recursive make. Patch by Jonas Wagner.

  • bpo-21958: Define HAVE_ROUND when building with Visual Studio 2013 and above. Patch by Zachary Turner.

  • bpo-18093: the programs that embed the CPython runtime are now in a separate «Programs» directory, rather than being kept in the Modules directory.

  • bpo-15759: «make suspicious», «make linkcheck» and «make doctest» in Doc/ now display special message when and only when there are failures.

  • bpo-21141: Разрешить параметры с именами PCbuild\build_ssl.py и PCbuild\prepare_ssl.py с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21037: Add a build option to enable AddressSanitizer support.

  • bpo-19962: The Windows build process now creates «python.bat» in the root of the source tree, which passes all arguments through to the most recently built interpreter.

  • bpo-21285: Refactor and fix curses configure check to always search in a ncursesw directory.

  • bpo-15234: For BerkeleyDB and Sqlite, only add the found library and include directories if they aren’t already being searched. This avoids an explicit runtime library dependency.

  • bpo-17861: Tools/scripts/generate_opcode_h.py automatically regenerates Include/opcode.h from Lib/opcode.py if the latter gets any change.

  • bpo-20644: OS X installer build support for documentation build changes in 3.4.1: assume externally supplied sphinx-build is available in /usr/bin.

  • bpo-20022: Eliminate use of deprecated bundlebuilder in OS X builds.

  • bpo-15968: Incorporated Tcl, Tk, and Tix builds into the Windows build solution.

  • bpo-17095: Fix Modules/Setup shared support.

  • bpo-21811: Anticipated fixes to support OS X versions > 10.9.

  • bpo-21166: Prevent possible segfaults and other random failures of python –generate-posix-vars in pybuilddir.txt build target.

  • bpo-18096: Fix library order returned by python-config.

  • bpo-17219: Add library build dir for Python extension cross-builds.

  • bpo-22919: Windows build updated to support VC 14.0 (Visual Studio 2015), which will be used for the official release.

  • bpo-21236: Build _msi.pyd with cabinet.lib instead of fci.lib

  • bpo-17128: Use private version of OpenSSL for OS X 10.5+ installer.

C API

  • bpo-14203: Remove obsolete support for view==NULL in PyBuffer_FillInfo(), bytearray_getbuffer(), bytesiobuf_getbuffer() and array_buffer_getbuf(). All functions now raise BufferError in that case.

  • bpo-22445: PyBuffer_IsContiguous() now implements precise contiguity tests, compatible with NumPy’s NPY_RELAXED_STRIDES_CHECKING compilation flag. Previously the function reported false negatives for corner cases.

  • bpo-22079: PyType_Ready() now checks that statically allocated type has no dynamically allocated bases.

  • bpo-22453: Removed non-documented macro PyObject_REPR().

  • bpo-18395: Разрешить параметры с именами _Py_char2wchar() и Py_DecodeLocale() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21233: Разрешить параметры с именами calloc() и malloc() с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-20942: PyImport_ImportFrozenModuleObject() no longer sets __file__ to match what importlib does; this affects _frozen_importlib as well as any module loaded using imp.init_frozen().

Документация

  • bpo-19548: Update the codecs module documentation to better cover the distinction between text encodings and other codecs, together with other clarifications. Patch by Martin Panter.

  • bpo-22394: Разрешить параметры с именами make venv PYTHON=../python и make html PYTHON=venv/bin/python3 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21514: The documentation of the json module now refers to new JSON RFC 7159 instead of obsoleted RFC 4627.

  • bpo-21777: The binary sequence methods on bytes and bytearray are now documented explicitly, rather than assuming users will be able to derive the expected behaviour from the behaviour of the corresponding str methods.

  • bpo-6916: undocument deprecated asynchat.fifo class.

  • bpo-17386: Разрешить параметры с именами Doc/make.bat и Doc/Makefile с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-21312: Update the thread_foobar.h template file to include newer threading APIs. Patch by Jack McCracken.

  • bpo-21043: Remove the recommendation for specific CA organizations and to mention the ability to load the OS certificates.

  • bpo-20765: Add missing documentation for PurePath.with_name() and PurePath.with_suffix().

  • bpo-19407: New package installation and distribution guides based on the Python Packaging Authority tools. Existing guides have been retained as legacy links from the distutils docs, as they still contain some required reference material for tool developers that isn’t recorded anywhere else.

  • bpo-19697: Document cases where __main__.__spec__ is None.

Тесты

  • bpo-18982: Add tests for CLI of the calendar module.

  • bpo-19548: Added some additional checks to test_codecs to ensure that statements in the updated documentation remain accurate. Patch by Martin Panter.

  • bpo-22838: All test_re tests now work with unittest test discovery.

  • bpo-22173: Update lib2to3 tests to use unittest test discovery.

  • bpo-16000: Convert test_curses to use unittest.

  • bpo-21456: Skip two tests in test_urllib2net.py if _ssl module not present. Patch by Remi Pointel.

  • bpo-20746: Fix test_pdb to run in refleak mode (-R). Patch by Xavier de Gaye.

  • bpo-22060: test_ctypes has been somewhat cleaned up and simplified; it now uses unittest test discovery to find its tests.

  • bpo-22104: regrtest.py no longer holds a reference to the suite of tests loaded from test modules that don’t define test_main().

  • bpo-22111: Assorted cleanups in test_imaplib. Patch by Milan Oberkirch.

  • bpo-22002: Added load_package_tests function to test.support and used it to implement/augment test discovery in test_asyncio, test_email, test_importlib, test_json, and test_tools.

  • bpo-21976: Fix test_ssl to accept LibreSSL version strings. Thanks to William Orr.

  • bpo-21918: Converted test_tools from a module to a package containing separate test files for each tested script.

  • bpo-9554: Use modern unittest features in test_argparse. Initial patch by Denver Coneybeare and Radu Voicilas.

  • bpo-20155: Changed HTTP method names in failing tests in test_httpservers so that packet filtering software (specifically Windows Base Filtering Engine) does not interfere with the transaction semantics expected by the tests.

  • bpo-19493: Refactored the ctypes test package to skip tests explicitly rather than silently.

  • bpo-18492: All resources are now allowed when tests are not run by regrtest.py.

  • bpo-21634: Fix pystone micro-benchmark: use floor division instead of true division to benchmark integers instead of floating point numbers. Set pystone version to 1.2. Patch written by Lennart Regebro.

  • bpo-21605: Added tests for Tkinter images.

  • bpo-21493: Added test for ntpath.expanduser(). Original patch by Claudiu Popa.

  • bpo-19925: Added tests for the spwd module. Original patch by Vajrasky Kok.

  • bpo-21522: Added Tkinter tests for Listbox.itemconfigure(), PanedWindow.paneconfigure(), and Menu.entryconfigure().

  • bpo-17756: Fix test_code test when run from the installed location.

  • bpo-17752: Fix distutils tests when run from the installed location.

  • bpo-18604: Consolidated checks for GUI availability. All platforms now at least check whether Tk can be instantiated when the GUI resource is requested.

  • bpo-21275: Fix a socket test on KFreeBSD.

  • bpo-21223: Pass test_site/test_startup_imports when some of the extensions are built as builtins.

  • bpo-20635: Added tests for Tk geometry managers.

  • Add test case for freeze.

  • bpo-20743: Fix a reference leak in test_tcl.

  • bpo-21097: Move test_namespace_pkgs into test_importlib.

  • bpo-21503: Use test_both() consistently in test_importlib.

  • bpo-20939: Avoid various network test failures due to new redirect of http://www.python.org/ to https://www.python.org: use http://www.example.com instead.

  • bpo-20668: asyncio tests no longer rely on tests.txt file. (Patch by Vajrasky Kok)

  • bpo-21093: Prevent failures of ctypes test_macholib on OS X if a copy of libz exists in $HOME/lib or /usr/local/lib.

  • bpo-22770: Prevent some Tk segfaults on OS X when running gui tests.

  • bpo-23211: Workaround test_logging failure on some OS X 10.6 systems.

  • bpo-23345: Prevent test_ssl failures with large OpenSSL patch level values (like 0.9.8zc).

Инструменты/демоверсии

  • bpo-22314: pydoc now works when the LINES environment variable is set.

  • bpo-22615: Argument Clinic now supports the «type» argument for the int converter. This permits using the int converter with enums and typedefs.

  • bpo-20076: The makelocalealias.py script no longer ignores UTF-8 mapping.

  • bpo-20079: The makelocalealias.py script now can parse the SUPPORTED file from glibc sources and supports command line options for source paths.

  • bpo-22201: Command-line interface of the zipfile module now correctly extracts ZIP files with directory entries. Patch by Ryan Wilson.

  • bpo-22120: For functions using an unsigned integer return converter, Argument Clinic now generates a cast to that type for the comparison to -1 in the generated code. (This suppresses a compilation warning.)

  • bpo-18974: Tools/scripts/diff.py now uses argparse instead of optparse.

  • bpo-21906: Make Tools/scripts/md5sum.py work in Python 3. Patch by Zachary Ware.

  • bpo-21629: Fix Argument Clinic’s «–converters» feature.

  • Add support for yield from to 2to3.

  • Add support for the PEP 465 matrix multiplication operator to 2to3.

  • bpo-16047: Fix module exception list and __file__ handling in freeze. Patch by Meador Inge.

  • bpo-11824: Consider ABI tags in freeze. Patch by Meador Inge.

  • bpo-20535: PYTHONWARNING no longer affects the run_tests.py script. Patch by Arfrever Frehtes Taifersar Arahesis.

Windows

  • bpo-23260: Update Windows installer

  • The bundled version of Tcl/Tk has been updated to 8.6.3. The most visible result of this change is the addition of new native file dialogs when running on Windows Vista or newer. See Tcl/Tk’s TIP 432 for more information. Also, this version of Tcl/Tk includes support for Windows 10.

  • bpo-17896: Разрешить параметры с именами PCbuild\..\externals и PCbuild\..\.. с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда

  • bpo-17717: The Windows build scripts now use a copy of NASM pulled from svn.python.org to build OpenSSL.

  • bpo-21907: Improved the batch scripts provided for building Python.

  • bpo-22644: The bundled version of OpenSSL has been updated to 1.0.1j.

  • bpo-10747: Use versioned labels in the Windows start menu. Patch by Olive Kilburn.

  • bpo-22980: .pyd files with a version and platform tag (for example, «.cp35-win32.pyd») will now be loaded in preference to those without tags.

(For information about older versions, consult the HISTORY file.)