Радостно видеть, что тайп-чекинг в питоне развивается каждый год, и решает всё больше различных проблем. Вот сейчас дошли и до безопасности.
В 3.11 добавят тип
Пока что это предложение поддерживается только в тайп-чекере
https://peps.python.org/pep-0675/
#pep #typing
В 3.11 добавят тип
LiteralString
, который может принимать любые строки, собранные из строковых литералов. Можно взять любые литералы, как угодно их скомпоновать друг с другом, и в итоге всё равно получится тип, совместимый с LiteralString
. Но если подмешать туда любую строку, которая не хранится в коде программы, а поступает извне, то это уже не может быть LiteralString
.hello = "Здравствуй"Зачем такой тип нужен? При помощи него можно запретить передавать в "опасные" функции, подверженные различного рода инъекциям, строки, включающие пользовательский ввод. Это просто будет ошибкой на уровне системы типов. Таким образом, написать уязвимый код с SQL, shell, XSS, SSTI или какими-либо ещё инъекциями станет немножко сложнее. Для этого всего лишь нужно, чтобы в библиотеках важные места были помечены этим типом, и, конечно же, чтобы пользователь время от времени запускал тайп-чекер. На выполнение программы это всё никак не влияет.
world = "прекрасная планета"
# совместимо со StringLiteral, потому что строчка составлена целиком из литералов в коде
s1 = f"{hello}, {world}!"
# не совместимо, потому что примешивается что-то извне, не литерал
name = input("name: ")
s2 = f"{hello}, {name}!"
Пока что это предложение поддерживается только в тайп-чекере
pyre
.https://peps.python.org/pep-0675/
#pep #typing
❤9🔥5👍2🥰1
Слышал, что ещё не все познали радость использования тайп хинтов в своих больших программах на питоне. Поэтому держите хороший вводный видос на эту тему от Łukasz Langa (Вукаш Ланга!).
Хотя этому выступлению уже 5 лет и типизация в питоне всё это время постоянно развивалась, информация всё ещё актуальная, потому что основные принципы не поменялись. Сейчас в основном только доуточняются разные краевые случаи.
И я наконец понял, почему
https://www.youtube.com/watch?v=Mn4AOttRmpI
#typing
Хотя этому выступлению уже 5 лет и типизация в питоне всё это время постоянно развивалась, информация всё ещё актуальная, потому что основные принципы не поменялись. Сейчас в основном только доуточняются разные краевые случаи.
И я наконец понял, почему
List[str]
несовместимо с List[Optional[str]]
.https://www.youtube.com/watch?v=Mn4AOttRmpI
#typing
YouTube
«Gradual Typing of Production Applications» Łukasz Langa, Facebook
Выступление на конференции PYCON RUSSIA 2017
❤12💩3👍1🥰1