Питонические атаки
1.19K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
Всем, кто пережил праздники и постепенно возвращается к жизни — с очередным наступившим!

В последнее время почти перестал читать новости и статьи, поэтому и тем для постов стало резко меньше. Зато я стал больше гулять и передвигаться на общественном транспорте. Или, например, в электричке на 6 часов без интернета. В таких условиях прям здорово залипнуть в окошко и слушать какой-нибудь легкий бубнёж. Короче, в качестве компенсации за отсутствие постов хочу порекомендовать подкаст, который мне давно уже рекомендовали, но я только недавно до него добрался.

Moscow Python Podcast — это удивительно годное шоу. Я прослушал уже выпусков десять, и мне прям нравится. Вроде всего лишь лёгкие разговоры под кофеёк, но оно пропитано какой-то непередаваемой мудростью. Ведущие классные — особенно Гриша Петров, который для меня уже стал легендой российского айти. Длина выпусков тоже оптимальная — хоть не страшно включать, а то некоторые подкасты и по 3 часа делают выпуски.

Вот тут вы найдёте все ссылки: https://podcast.python.ru/

Я слушаю на Яндекс.Музыке, поэтому скину отдельно: https://music.yandex.com/album/6892837
👍5👎1
Forwarded from Code Mining
PyNose: a Test Smell Detector for Python

А ещё в прошлом году у JetBrains Research вышла определялка говнокода в python-тестах. Работает для Unittest & Pytest. Версия 1.0.0 вышла в декабре'21.

Виды test smell, которые выделяют авторы:
- Assertion Roulette
- Conditional Test Logic
- Constructor Initialization
- Default Test
- Duplicate Assert
- Empty Test
- Exception Handling
- Lack of Cohesion of Test Cases
- Magic Number Test
- Obscure In-Line Setup
- Redundant Assertion
- Redundant Print
- Sleepy Test
- Suboptimal Assert
- Test Maverick

Использовать можно в виде плагина к Pycharm.

Код: https://github.com/jetbrains-research/pynose

Подробности в статье: https://arxiv.org/abs/2108.04639. Единственное, она описывает предыдущую версию, которая в ветке ASE2021.
👍10🎉1🤩1💋1
Forwarded from UfoStation
Григорий Петров - Почему Python медленный?

Не смотря на заявленное название в докладе рассматриваются и другие языки, в том числе Java, C#, JavaScript и другие. Рекомендую к ознакомлению всем интересующимся языками программирования.
👍11
Forwarded from Senior Python Developer
Шуточный пакет pyjokes

Если в вашей крови течёт PEP, а дома вас ждёт домашняя змея в клетке, то и шутки вам нужны соответствующие. Вы всегда можете получить их с помощью модуля pyjokes. Устанавливается, как всегда, через pip.

Также есть отдельная категория с шутками Чака Норриса. Don't worry about tests, Chuck Norris's test cases cover your code too.
Forwarded from Хитрый Питон
Интересная статья про то, почему декоратором @lru_cache нельзя обертывать методы классов. Если коротко - объект не будет удаляться garbage collector-ом что может привести к неожиданным утечкам памяти. Также @lru_cache не умеет игнорировать self в списке аргументов, поэтому кэш будет для каждого объекта свой и кеширование по факту не будет работать.

С методами классов, статическими методами и обычными функциями работает, как и ожидается.

https://rednafi.github.io/reflections/dont-wrap-instance-methods-with-functoolslru_cache-decorator-in-python.html
В Windows 7 официально поддерживается только Python 3.8. Разработчики не хотят тратить ресурсы на поддержку мёртвых версий ОС. Более новые версии интерпретатора уже не устанавливаются. Но если сильно хочется, то есть форк cpython-win7, который поддерживает все современные версии языка (сейчас там есть 3.10.1) и при этом совместим с Windows 7.

Если же вместо абстрактных странных обоев вы предпочитаете классические зелёные луга, вместо спотифая вы включаете Winamp, а вместо Кортаны у вас ассистент Скрепыш, то для вас тоже есть форк. Windows XP официально поддерживается лишь в Python 3.4, но умельцы запускают версии вплоть до последних релизов из ветки 3.6. Придётся собирать из исходников, но разве это преграда для настоящего энтузиаста?

#windows #retro
👍4
Питонические атаки
В Windows 7 официально поддерживается только Python 3.8. Разработчики не хотят тратить ресурсы на поддержку мёртвых версий ОС. Более новые версии интерпретатора уже не устанавливаются. Но если сильно хочется, то есть форк cpython-win7, который поддерживает…
Кстати да, в комментариях напомнили про PPA-репозиторий deadsnakes для Ubuntu. В репо есть версии питона от очень старых до очень новых, и всё легко устанавливается через обычный привычный apt, предсобранное, не требует установки компиляторов и всего остального, что нужно для сборки. Вопреки названию, этот репо зачастую используется для установки более новых версий интерпретатора, чем поставляется в дистрибутиве ОС.

Запустил Ubuntu 18.04, установил на ней Python 2.3 (это самый старый из доступных для этой версии убунты). Это настолько древняя версия языка, что здесь даже нет контекст-менеджеров (да, они появились в 2.5). Сложно представить питон без контекст-менеджеров, ведь это настолько естественная часть языка, что кажется, что оно должно было быть в языке с самого начала.

#deadsnakes #ubuntu #linux #retro
В следующем релизе macOS Monterey 12.3 🍎, которая сейчас находится в бета-тестировании, обещают наконец-то удалить из системы предустановленный Python 2. Начиная с какой-то из предыдущих версий уже и так выскакивало окошко с предупреждением, если вдруг пайчарм случайно потрогает Python 2, а теперь устаревшая версия языка изгоняется из системы окончательно.

И это крайне логичное действие — незачем в системе держать легаси, которое лишь создаёт проблемы и путаницу. Большинство пользователей получат более компактную ОС и меньше проблем с выбором правильного интерпретатора, а те, кому всё ещё нужен Python 2, поставят его явно вручную. Они ведь всё равно уже привыкли страдать.

Пожалуй, макось из ныне живущих операционных систем продержалась со вторым питоном дольше всех.

Стоит отметить, что это не хейт отдельно взятого языка программирования. Эппл взяла курс на удаление многих скриптовых рантаймов, которые издревле поставлялись вместе с ОС, включая и Ruby, и Perl, и Python. Теперь всё это, если нужно, придётся ставить отдельно.

#macos #python2
👍1
О паттерн матчинге в python.

В 3.10, помимо всего прочего, завезли паттерн матчинг. И вы об этом, конечно, слышали. А вы слышали про functools'овый singledispatch который доступен аж со времён 3.4 и реализует матчинг типов аргументов в функции? Выглядит это так:


Recipient = Email | SmsNumber

@singledispatch
def send_message(message: str, recipient: Recipient):
raise NotImplemented()

@send_message.register
def send_message_via_email(message: str, recipient: Email):
# Send message via email by somehow

@send_message.register
def send_message_via_sms(message: str, recipient: SmsNumber):
# Send message via sms by somehow

some_email = Email('some@email.com')
some_phone = SmsNumber('+123456789')

send_message('message', some_email)
send_message('message', some_phone)


Ну практически haskell, нет? Увы, нет, ведь в python значение — это не то же самое что и тип, поэтому и возможности заматчить по значению у нас в этом случае нет. Но, так или иначе, singledispatch, бывает, здорово помогает организовать код лаконично и читаемо.

А вот чего в python не завезли (по, в целом, понятным причинам) так это возможности запилить sync и async реализации функции под одним именем. И это печально.
👍6🔥1
До какой версии языка вы готовы откатиться?

Я бы точно ни в коем случае не хотел жить без f-строк и тайп-аннотаций для переменных (3.6).

Неудобно было бы жить без breakpoint() (3.7), которая очень выручает в разных странных ситуациях, позволяя вывалиться в дебаггер. Вот вы помните, какое заклинание там раньше нужно было использовать, вместо этой удобной функции?

Короче, пожалуй, я согласен писать на Python 3.7, но не старше.

А есть ли какие-то фичи в более новых версиях, от которых вы не готовы отказаться?

https://snarky.ca/a-reverse-chronology-of-some-python-features/
🤯☺️☺️☺️☺️🤯☺️☺️☺️☺️🤯

Это если попытаться визуализировать версии питона по изменениям.

3.0 была шоком и прорывом, просто потому что язык сильно поменялся.

3.5 принесла асинхронность и тайп-аннотации.

3.10 принесла паттерн-матчинг, который тоже вероятно сильно повлияет на язык.

Короче, раз в 5 версий происходит революция. А промежуточные версии просто добавляют разные приятности. Если так и дальше пойдёт, то интересно, что же нам готовит 3.15?
В Django совсем недавно приняли веру в единый стиль кода и автоматическое форматирование. Пулл-реквест получился царский — около двух тысяч изменённых файлов. Да, Django теперь использует Black!

Это хороший прецедент. Думаю, теперь все, кто не решался внедрить Black, должны серьезно посмотреть на него ещё раз. Не берусь предсказывать, но ожидаю волну внедрений этого инструмента в разные другие проекты.

https://github.com/django/django/pull/15387

#django #black
👍17💩5
В Блокнот Windows (да-да, в стандартное приложение) добавили тёмную тему. Уже доступно в предварительных сборках Windows 11. Ну всё, теперь можно программировать с комфортом 😅

Просто удивляюсь, насколько же сильна любовь программистов к тёмным темам, что даже Блокнот прогнулся — программа, которая не менялась практически вообще никак лет 20. И кто вообще настолько плотно пользуется Блокнотом, что ему важно, какого он цвета?

https://blogs.windows.com/windows-insider/2021/12/07/redesigned-notepad-for-windows-11-begins-rolling-out-to-windows-insiders/

#windows #offtopic
🤯4🔥2
Последнее время знатно охреневаю от всего происходящего вокруг.

Кажется, что февраль был не 10 дней назад, а уже какие-то долгие месяцы назад. Сначала вообще не верилось, что всё происходит на самом деле, но постепенно осознание доходит. Я разочарован, потому что я и подумать не мог, что в наше время так всё ещё бывает. По моим наивным представлениям люди в 21 веке должны заниматься освоением космоса, решать энергетические и экологические проблемы, строить роботов меха, делать летающие автомобили, создавать искусственные органы, лечить рак в конце-то концов. А не вот такой вот дичью. Я ошеломлён, потому что на моём веку ещё не было такой жестокости в таких масштабах. Очень сложно концентрироваться на работе. Стал плохо спать, много злиться. Страшно за себя и семью, потому что фиг знает, что нас дальше ждёт. С другой стороны, я понимаю, что мне и жаловаться особо не на что — вокруг меня не падают бомбы и не ездят танки. Боюсь даже представить, что сейчас переживают люди, которым приходится прятаться в метро.

Короче, я думаю, что ради поддержания собственной кукухи в дееспособном состоянии, буду продолжать сюда писать посты про то, что мне нравится — технологии, программирование и сообщества вокруг этого. Попытаюсь создать здесь островок относительной нормальности. Думаю, кому-то, как и мне, это может пойти на пользу.

А экстренные новости вы и так найдёте где почитать. От них всё равно никуда уже не денешься.

Я стал чуточку скрытнее, но любопытный читатель, если ему нужно, всё равно найдёт как со мной связаться. Отключил комменты во избежание дискуссий, в которых мне категорически не хочется участвовать. Да и чего тут в целом обсуждать?

Берегите себя. Проводите время с близкими. Отключайтесь иногда от новостей.
Але
5'nizza
Музыка под настроение.

После своего реюниона 5'nizza выпустили годный альбом. Жаль, что только один. Между нашими странами может и случится ещё когда-нибудь добрый реюнион. Но вряд ли скоро.
Forwarded from DevBrain
Чтобы получить кратный прирост производительности вашего FastAPI приложения достаточно перевести его на PyPy. Как? Читайте в статье: https://tonybaloney.github.io/posts/pypy-in-production.html
У автора получилось увеличить производительность в 4 раза!
CPython собирается мигрировать свой баг-трекер (bugs.python.org, BPO) на GitHub Issues.

Ожидается, что этот перенос данных сделает взаимодействие с проектом более удобным и простым, сделает порог входа в проект ниже для новичков. Все-таки к гитхабу уже все успели привыкнуть, и не нужно будет отдельно регистрироваться в странной старомодной системе и учиться с ней работать. Ещё одна причина здесь, конечно же, в том, что BPO застряло на форке от старой версии RoundUp ещё на Python 2, и поддерживать и развивать это сейчас уже довольно проблематично.

В старом баг-трекере уже накопилось около 50k тредов, а некоторые из них ещё и достаточно длинные. По предварительным оценкам, миграция всех этих данных займёт 4-7 дней. Сам процесс сложный и состоит из нескольких шагов, для некоторых придётся привлекать сотрудников GitHub. В итоге, новые ишью будут существовать только на гитхабе, а старый трекер останется существовать в режиме read-only.

Эту миграцию обсуждают и подготавливают уже минимум два года. Звучит как что-то настолько же эпичное, как и переименование главной ветки из master в main. Да, на больших проектах любые манёвры всегда проходят непросто. Надеюсь, в этот раз гитхаб не сломается!

https://discuss.python.org/t/github-issues-migration-is-coming-soon/13791