PYPROGLIB Telegram 7080
🚀 Новое предложение для Python: TypedDict с закрытыми ключами и поддержкой extra_items

TypedDict давно используется для строгой типизации словарей, где известны ключи и их типы. Но до сих пор у него было два ограничения:
➡️ Нельзя было запретить лишние ключи (любая TypedDict допускала дополнительные поля).
➡️ Нельзя было явно указать тип для дополнительных ключей (например, разрешить только строки).

Новый PEP предлагает решить эти проблемы с помощью двух параметров:
➡️ closed=True — создаёт «закрытый» TypedDict, в котором не может быть лишних полей.
➡️ extra_items=... — позволяет указать общий тип для дополнительных ключей.

Как это решение поможет:
— Закрытые TypedDict’ы делают возможным более точный вывод типов для .items() и .values().
— Теперь становится безопасным использовать in для type narrowing.
— API-интерфейсы и legacy-код можно описывать гибко: часть ключей фиксированы, остальные — строго заданного типа.

Пример:
class Movie(TypedDict, closed=True):
name: str
director: str

m: Movie = {"name": "Blade Runner", "director": "Ridley Scott"}
m2: Movie = {"name": "Blade Runner", "year": 1982} Ошибка


А вот пример с extra items:
class MovieBase(TypedDict, extra_items=int):
name: str

movie: MovieBase = {"name": "Blade Runner", "year": 1982}


В итоге разработчики смогут балансировать между строгой типизацией и гибкостью — без костылей вроде --disable-error-code=typeddict-unknown-key.

🔗 Подробнее можно почитать в PEP

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5🔥2



tgoop.com/pyproglib/7080
Create:
Last Update:

🚀 Новое предложение для Python: TypedDict с закрытыми ключами и поддержкой extra_items

TypedDict давно используется для строгой типизации словарей, где известны ключи и их типы. Но до сих пор у него было два ограничения:
➡️ Нельзя было запретить лишние ключи (любая TypedDict допускала дополнительные поля).
➡️ Нельзя было явно указать тип для дополнительных ключей (например, разрешить только строки).

Новый PEP предлагает решить эти проблемы с помощью двух параметров:
➡️ closed=True — создаёт «закрытый» TypedDict, в котором не может быть лишних полей.
➡️ extra_items=... — позволяет указать общий тип для дополнительных ключей.

Как это решение поможет:
— Закрытые TypedDict’ы делают возможным более точный вывод типов для .items() и .values().
— Теперь становится безопасным использовать in для type narrowing.
— API-интерфейсы и legacy-код можно описывать гибко: часть ключей фиксированы, остальные — строго заданного типа.

Пример:

class Movie(TypedDict, closed=True):
name: str
director: str

m: Movie = {"name": "Blade Runner", "director": "Ridley Scott"}
m2: Movie = {"name": "Blade Runner", "year": 1982} Ошибка


А вот пример с extra items:
class MovieBase(TypedDict, extra_items=int):
name: str

movie: MovieBase = {"name": "Blade Runner", "year": 1982}


В итоге разработчики смогут балансировать между строгой типизацией и гибкостью — без костылей вроде --disable-error-code=typeddict-unknown-key.

🔗 Подробнее можно почитать в PEP

🐸 Библиотека питониста

#буст

BY Библиотека питониста | Python, Django, Flask




Share with your friend now:
tgoop.com/pyproglib/7080

View MORE
Open in Telegram


Telegram News

Date: |

Matt Hussey, editorial director of NEAR Protocol (and former editor-in-chief of Decrypt) responded to the news of the Telegram group with “#meIRL.” Telegram offers a powerful toolset that allows businesses to create and manage channels, groups, and bots to broadcast messages, engage in conversations, and offer reliable customer support via bots. Among the requests, the Brazilian electoral Court wanted to know if they could obtain data on the origins of malicious content posted on the platform. According to the TSE, this would enable the authorities to track false content and identify the user responsible for publishing it in the first place. Telegram channels fall into two types: To upload a logo, click the Menu icon and select “Manage Channel.” In a new window, hit the Camera icon.
from us


Telegram Библиотека питониста | Python, Django, Flask
FROM American