А вот как обстоят дела с веб-фреймворками.
Что видно:
* FastAPI — самый прогрессивный. По очевидным причинам у него вообще нет пользователей на Python 2. Довольно много людей уже перешли на 3.9. Ветка 3.8 доминирует.
* Django тоже держится молодцом. Они всегда раньше всех отказываются от поддержки старых версий интерпретатора — например, у них в ветке
* У Flask и Tornado доминирует ветка 3.7.
#fastapi #flask
Что видно:
* FastAPI — самый прогрессивный. По очевидным причинам у него вообще нет пользователей на Python 2. Довольно много людей уже перешли на 3.9. Ветка 3.8 доминирует.
* Django тоже держится молодцом. Они всегда раньше всех отказываются от поддержки старых версий интерпретатора — например, у них в ветке
main
(это следующая мажорная версия фреймворка) уже поддерживаются только 3.8 и 3.9. Сообщество активно обновляется, поэтому тоже много установок с 3.8 и 3.9, но и более старые версии питона тоже все ещё много используются. На ветке 3.10 активнее всего тестируется именно Django (больше всего установок), так что к моменту релиза наверняка всё будет сразу же работать.* У Flask и Tornado доминирует ветка 3.7.
#fastapi #flask
А вот состояние основных библиотек научного стэка Python.
Здесь тоже явно доминирует 3.7, а в остальном — примерно как и везде, в среднем по больнице.
Здесь тоже явно доминирует 3.7, а в остальном — примерно как и везде, в среднем по больнице.
Издревле бытует мнение, что Windows — это чтобы играть в игры или запускать фотошоп или офис 2007, но для разработчика — это не самая подходящая ОС.
Я отчасти согласен, потому что для многих экосистем Windows не является первоклассным гражданином. Всё вроде бы и работает, но... То есть, например, сам Python отлично работает на Windows, но в документации ко многим проектам все команды написаны исключительно для
Но в последнее время всё, кажется, меняется в лучшую сторону. Microsoft почему-то сильно хочет сделать свою ОС привлекательной для разработчиков, они вливают в это очень много сил и денег, и это постепенно даёт плоды. В какой-то момент MacOS перестала быть занозой в заднице, потому что стала Unix-подобной ОС, и на ней внезапно стало комфортно жить разработчикам. Похоже, Windows при помощи WSL пытается сделать что-то подобное. Кроме того, другие части ОС тоже развиваются: попробуйте хотя бы Windows Terminal — это прям действительно удобный эмулятор терминала со вкладками, там даже хоткеи для копирования/вставки по-человечески работают и выделение текста не прямоугольником!
С другой стороны, экосистема тоже становится более дружелюбной к Windows. Например, во многих CI теперь есть возможность запускать свои тесты на машине с Windows. В стандартной библиотеке Python тоже появляются абстракции, помогающие всё меньше думать о разницах между ОС — например,
Нет, я отнюдь не являюсь фанатом Windows, но она с каждым годом воспринимается всё менее враждебно. Уже какое-то время я успешно существую в Windows, решая свои небольшие программистские задачки. Иногда случается какой-нибудь затык, и я снова на время перезагружаюсь в свою любимую Fedora Linux — там проще, но там тоже далеко не всё идеально.
К чему я это всё? Вот чувак написал пост, где делится своим опытом работы на Windows и всякими полезными советами. Может и реально стоит попробовать освоить этот дурацкий PowerShell? А вдруг он не дурацкий?
https://www.feoh.org/2021-the-year-windows-became-a-first-class-python-development-environment.html
#потоксознания
Я отчасти согласен, потому что для многих экосистем Windows не является первоклассным гражданином. Всё вроде бы и работает, но... То есть, например, сам Python отлично работает на Windows, но в документации ко многим проектам все команды написаны исключительно для
bash
, как будто других шеллов не существует, и тебе приходится адаптировать эти команды к винде, что в сто раз сложнее, чем просто скопипастить. Или разница в файловых системах и кодировках по умолчанию — если хочешь нормально поддерживать несколько операционных систем, то постоянно нужно держать в голове, что где-то в мире сидит тот самый юзер, у которого пути разделяются обратным слэшем, а файлы по умолчанию пишутся и читаются в KOI-8 или cp1251. Или что пути тоже где-то будут не в юникоде. Или что терминал может не поддерживать эмодзи и прочие экзотические символы, а цвета/шрифты в терминале делаются совсем иначе. Или эти чёртовы символы новой строки. Или что где-то может просто не быть файла /dev/null
. Кажется, что разработчики многих утилит и библиотек насколько намучались с виндой, что решили просто игнорировать её существование, что опять же ставит пользователей Windows в невыгодное положение.Но в последнее время всё, кажется, меняется в лучшую сторону. Microsoft почему-то сильно хочет сделать свою ОС привлекательной для разработчиков, они вливают в это очень много сил и денег, и это постепенно даёт плоды. В какой-то момент MacOS перестала быть занозой в заднице, потому что стала Unix-подобной ОС, и на ней внезапно стало комфортно жить разработчикам. Похоже, Windows при помощи WSL пытается сделать что-то подобное. Кроме того, другие части ОС тоже развиваются: попробуйте хотя бы Windows Terminal — это прям действительно удобный эмулятор терминала со вкладками, там даже хоткеи для копирования/вставки по-человечески работают и выделение текста не прямоугольником!
С другой стороны, экосистема тоже становится более дружелюбной к Windows. Например, во многих CI теперь есть возможность запускать свои тесты на машине с Windows. В стандартной библиотеке Python тоже появляются абстракции, помогающие всё меньше думать о разницах между ОС — например,
pathlib
. Все уважающие себя библиотеки с нативным кодом специально заранее компилируют себя и упаковываются в колёса, чтобы не пугать пользователей Windows ошибками в стиле "C++ compiler not found". Хотя даже для других ОС это делается далеко не всегда.Нет, я отнюдь не являюсь фанатом Windows, но она с каждым годом воспринимается всё менее враждебно. Уже какое-то время я успешно существую в Windows, решая свои небольшие программистские задачки. Иногда случается какой-нибудь затык, и я снова на время перезагружаюсь в свою любимую Fedora Linux — там проще, но там тоже далеко не всё идеально.
К чему я это всё? Вот чувак написал пост, где делится своим опытом работы на Windows и всякими полезными советами. Может и реально стоит попробовать освоить этот дурацкий PowerShell? А вдруг он не дурацкий?
https://www.feoh.org/2021-the-year-windows-became-a-first-class-python-development-environment.html
#потоксознания
www.feoh.org
2021 - The Year Windows Became a First Class Python Development Environment
Windows makes for a compelling choice for Python developers in 2021.
Хотел бы сегодня затронуть такую важную, но несправедливо игнорируемую тему, как ревьювер экспириенс (RX).
Наверняка у вас тоже иногда бывает такое, когда пулл-реквест разрастается на слишком много тысяч строк, и он затем тяжело проходит код-ревью, потому что смотреть на него доставляет физическую боль. Есть трюк, который поможет сократить дифф примерно вполовину, а в некоторых случаях даже сильнее.
Следите за простой арифметикой. Допустим, вы полностью переписываете какой-то метод из N строк. В диффе получится N удалений и N добавлений, итого — 2 * N.
Вывод: создавая пулл-ревест, подумайте о чувствах того, кто будет его читать. Идите ему навстречу, улучшайте его экспириенс, уменьшайте объем его работы, и он в итоге напишет вам меньше дискуссий, так что процесс пройдет проще для всех сторон.
Пользуйтесь этими лайфхаками на радость вашим коллегам! Желаю, чтобы ваши пулл-реквесты-многотысячники всегда быстро и без единого вопроса собирали нужные аппрувы! ✊
#секретымастерства
Наверняка у вас тоже иногда бывает такое, когда пулл-реквест разрастается на слишком много тысяч строк, и он затем тяжело проходит код-ревью, потому что смотреть на него доставляет физическую боль. Есть трюк, который поможет сократить дифф примерно вполовину, а в некоторых случаях даже сильнее.
Следите за простой арифметикой. Допустим, вы полностью переписываете какой-то метод из N строк. В диффе получится N удалений и N добавлений, итого — 2 * N.
class Example:
- def method(self, arg1):
- return 1
+ def method(self, arg2):
+ return 2
Это много. Это может спугнуть ревьювера, и он просто не откроет ваш пулл-реквест, поэтому лучше так не делать. Есть до безобразия гениальное решение — просто напишите новый код метода ниже, и он заменит собой старый! Код работает точно так же, тесты выдают красивую зеленую галочку, а дифф сократился в два раза, потому что больше нет удалений! class Example:
def method(self, arg1):
return 1
+ def method(self, arg2):
+ return 2
Аналогично можно поступать и с классами целиком, и даже с целыми файлами. Если же вам нужно избавиться от класса, метода или функции, то можно использовать волшебное слово del
, и тогда в диффе вообще окажется только одна строчка: class Example:
def method(self):
...
+ del method
Кроме того, я рекомендую ещё на этапе написания кода подумать о будущих правках, которые его непременно настигнут, и писать как можно более длинные строки. Лучше сразу же закладываться в хорошие практики и традиции. За счёт длины вы уменьшите количество строк, а значит и все диффы в будущем будут меньше. Код становится короче и выразительнее, а вам и вашим коллегам придётся меньше скроллить вверх-вниз. В Python для этого можно использовать множественные присваивания, точку с запятой и многие другие приёмы:import requests, psycopg2; session, number, connection, matrix = requests.Session(), 5, psycopg2.connect("postgresql://localhost/dbname"), [[1, 2], [3, 4]]Кстати, насчёт тестов. Лучше без большой необходимости их вообще не трогать. Но если уж вам пришлось, то лучше сделать один тест (новый), который проверяет все аспекты сразу — и позитивные, и негативные кейсы, и краевые случаи, и бенчмаркает скорость работы, и проверяет отсутствие утечек памяти. Чтобы он был и юнит, и интеграционный одновременно. Можно описать это всё через несколько слоёв параметризаций. Для простоты тестирования лучше сразу же замокать все внешние системы, а также проблемные части кода, иначе тест будет падать и его придётся каждый раз переписывать, когда что-то меняется, а это раздует диффы.
for _ in range(5): print("Hello!")
Вывод: создавая пулл-ревест, подумайте о чувствах того, кто будет его читать. Идите ему навстречу, улучшайте его экспириенс, уменьшайте объем его работы, и он в итоге напишет вам меньше дискуссий, так что процесс пройдет проще для всех сторон.
Пользуйтесь этими лайфхаками на радость вашим коллегам! Желаю, чтобы ваши пулл-реквесты-многотысячники всегда быстро и без единого вопроса собирали нужные аппрувы! ✊
#секретымастерства
Из предыдущего поста всерьёз нужно воспринять лишь часть про важность подготовки. Остальное всё фарс и сатира, конечно.
При подготовке вашего кода к ревью обязательно учитывайте, что читать его будут такие же отвлекающие и рассеянные кожаные мешки, как и вы. Обычно людям сложно читать длинные тексты, поэтому не перегружайте их изменениями. Особенно, если эти изменения не механического характера (например, массовая замена одного слова на другое в тексте), а требующие вдумчивого осмысления (например, как-то меняется иерархия классов).
А вообще зайти в пулл-реквест и начать его читать — это само по себе непростая задача. И чем больше изменений, тем сложнее будет победить внутренний голос, который кричит: «нет, пожалуйста, только не снова пулл-реквест на две тысячи строк, это ведь я до вечера читать буду».
Нет никакого универсального простого способа сделать код-ревью большого пулл-реквеста легче, кроме может быть разбиения его на более мелкие части.
При подготовке вашего кода к ревью обязательно учитывайте, что читать его будут такие же отвлекающие и рассеянные кожаные мешки, как и вы. Обычно людям сложно читать длинные тексты, поэтому не перегружайте их изменениями. Особенно, если эти изменения не механического характера (например, массовая замена одного слова на другое в тексте), а требующие вдумчивого осмысления (например, как-то меняется иерархия классов).
А вообще зайти в пулл-реквест и начать его читать — это само по себе непростая задача. И чем больше изменений, тем сложнее будет победить внутренний голос, который кричит: «нет, пожалуйста, только не снова пулл-реквест на две тысячи строк, это ведь я до вечера читать буду».
Нет никакого универсального простого способа сделать код-ревью большого пулл-реквеста легче, кроме может быть разбиения его на более мелкие части.
О, круть, калькулятор, который умеет запускать питон
https://education.ti.com/en/products/calculators/graphing-calculators/ti-84-plus-ce-python
https://education.ti.com/en/products/calculators/graphing-calculators/ti-84-plus-ce-python
Ti
TI-84 Plus CE Family Graphing Calculators | Texas Instruments
Go beyond math and science. TI-84 Plus CE family graphing calculators come with programming languages so students can code — anywhere, anytime.
Питонические атаки
Кстати, снова про спонсоров Python Software Foundation. Мне почему-то показалось, что только Microsoft недавно стал Visionary Sponsor, хотя на самом деле два других спонсора — Google и Bloomberg — тоже получили этот статус совсем недавно. Благодаря этому PSF…
А вот и стало известно, что одна из вакансий от PSF закрыта, и не абы кем. Теперь Łukasz Langa фулл-тайм работает над развитием CPython как Developer-in-Residence. Напомню, он ещё в качестве волонтера был менеджером нескольких последних релизов и написал несколько PEP, так что судя по всему он отлично подходит на эту роль. А ещё является автором автоформаттера
Круто работать над любимым проектом. Лучше может быть только когда тебе за это ещё и платят 😅
https://lukasz.langa.pl/a072a74b-19d7-41ff-a294-e6b1319fdb6e/
black
и пишет прикольную музыку.Круто работать над любимым проектом. Лучше может быть только когда тебе за это ещё и платят 😅
https://lukasz.langa.pl/a072a74b-19d7-41ff-a294-e6b1319fdb6e/
lukasz.langa.pl
I am the new CPython Developer in Residence - Łukasz Langa
This is some of the most amazing news in the past few years for me. Python needs full-time development to stay competitive, I’ve been talking about this for years, dreaming about it for even longer than that. Now it’s becoming a reality. Today is my first…
Рейтинг веб-фреймворков на Python, составленный с учётом множества параметров — количество скачиваний, звёзды на GitHub, вопросы на StackOverflow, и так далее. Автоматически обновляется.
https://github.com/tbicr/web-framework-rank#
https://github.com/tbicr/web-framework-rank#
GitHub
GitHub - tbicr/web-framework-rank: Wisdom of the crowd web framework rank
Wisdom of the crowd web framework rank. Contribute to tbicr/web-framework-rank development by creating an account on GitHub.
Питонические атаки
Неделю назад появился черновик PEP 657, который предлагает в трейсбеках показывать не только номер строки, где возникла ошибка, но и смещение (то есть номера символов в строке). Таким образом вместо вот такой расплывчатой ошибки: Traceback (most recent call…
Все, это теперь точно, в 3.11 будут красивые трейсбеки.
https://twitter.com/pyblogsal/status/1416034899639750659?s=20
https://twitter.com/pyblogsal/status/1416034899639750659?s=20
Twitter
Pablo Galindo
After a lot of work, we have finished the implementation of PEP 657 🚀🎉. In Python 3.11🐍, tracebacks will annotate where exactly the error is happening in your code 🤯. No more confusion having to guess what part of the expression is wrong. Learn more at p…
Там, кстати, PyCon Russia 2021 через полтора месяца собирается произойти. Если вдруг что, имейте ввиду. Событие оффлайновое, Московская область. Обещают, что состоится в любом случае.
В программе есть интересные доклады. Например, Никиту Соболева я бы послушал. Ну ничего, через пару-тройку лет как раз моя очередь просмотра выступлений доползёт до 2021 года, и посмотрю на ютубе 😅
https://pycon.ru/program
В программе есть интересные доклады. Например, Никиту Соболева я бы послушал. Ну ничего, через пару-тройку лет как раз моя очередь просмотра выступлений доползёт до 2021 года, и посмотрю на ютубе 😅
https://pycon.ru/program
pycon.ru
Программа PyCon Russia
Темы и спикеры конференции PyCon Russia - конференции для продвинутых python-разработчиков
Рантайм Python 2.7 теперь официально депрекейтнут в AWS Lambda. Что это значит?
* Больше нельзя создавать новые функции на питоне 2.7 (проверил в веб-интерфейсе — и правда, такого рантайма просто нет в списке).
* Больше не будет патчей и обновлений. Тех.поддержка будет вас игнорировать, если спрашивать про этот рантайм. Дальше каждый сам за себя.
* Обновлять код существующих функций можно будет еще до 30 сентября. После этого нельзя будет ни создавать, ни обновлять, но всё ещё можно будет запускать.
https://aws.amazon.com/blogs/compute/announcing-end-of-support-for-python-2-7-in-aws-lambda/
* Больше нельзя создавать новые функции на питоне 2.7 (проверил в веб-интерфейсе — и правда, такого рантайма просто нет в списке).
* Больше не будет патчей и обновлений. Тех.поддержка будет вас игнорировать, если спрашивать про этот рантайм. Дальше каждый сам за себя.
* Обновлять код существующих функций можно будет еще до 30 сентября. После этого нельзя будет ни создавать, ни обновлять, но всё ещё можно будет запускать.
https://aws.amazon.com/blogs/compute/announcing-end-of-support-for-python-2-7-in-aws-lambda/
Amazon
Announcing end of support for Python 2.7 in AWS Lambda | Amazon Web Services
On July 15, 2021, AWS Lambda will deprecate Python 2.7 as a supported runtime, formally ending our Python 2.7 support.