Первоначально предполагалось, что модуль типизации будет накапливать «типизированные версии» многих классов в стандартной библиотеке - например, такие типы, как тип Pattern
в typing.re
или тип BinaryIO
в typing.io
.
В этом случае имеет смысл попытаться поместить пространство имен этих «фантомных типов» в субмодульные вещи для организационных целей. Так, например, typing.re.Pattern
будет каноническим домом для типа Pattern
и будет реэкспортирован через typing.Pattern
для удобства.
На практике это видение так и не было полностью реализовано: я подозреваю, что это отчасти связано с тем, что возможности вывода типов в контролерах типов PEP 484 были достаточно сложными, чтобы избежать необходимости явно указывать подсказки типов во многих случаях, и частично потому что в итоге оказалось более удобным включать эти типы непосредственно в typing
или в заглушки, соответствующие соответствующему модулю стандартной библиотеки.
Итак, было принято (на самом деле совсем недавно) решение просто отказаться от этих двух модулей: см. https://github.com/python/typing/issues/589 и https://github.com/python/cpython/pull/10173. Короче говоря, документы были обновлены только на прошлой неделе, чтобы никогда упомяните typing.io
и typing.re
- новая рекомендация - импортировать соответствующие типы непосредственно из модуля typing
.
Вероятно, в будущих версиях Python модули будут полностью удалены, хотя, скорее всего, они будут немного задерживаться по причинам обратной совместимости.