Какая на ваших проектах сейчас самая старая версия Python?
Anonymous Poll
13%
3.9
18%
3.8
21%
3.7
27%
3.6
7%
3.5
15%
2
А вот как обстоят дела с веб-фреймворками.
Что видно:
* 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…