Всем, кто пережил праздники и постепенно возвращается к жизни — с очередным наступившим!
В последнее время почти перестал читать новости и статьи, поэтому и тем для постов стало резко меньше. Зато я стал больше гулять и передвигаться на общественном транспорте. Или, например, в электричке на 6 часов без интернета. В таких условиях прям здорово залипнуть в окошко и слушать какой-нибудь легкий бубнёж. Короче, в качестве компенсации за отсутствие постов хочу порекомендовать подкаст, который мне давно уже рекомендовали, но я только недавно до него добрался.
Moscow Python Podcast — это удивительно годное шоу. Я прослушал уже выпусков десять, и мне прям нравится. Вроде всего лишь лёгкие разговоры под кофеёк, но оно пропитано какой-то непередаваемой мудростью. Ведущие классные — особенно Гриша Петров, который для меня уже стал легендой российского айти. Длина выпусков тоже оптимальная — хоть не страшно включать, а то некоторые подкасты и по 3 часа делают выпуски.
Вот тут вы найдёте все ссылки: https://podcast.python.ru/
Я слушаю на Яндекс.Музыке, поэтому скину отдельно: https://music.yandex.com/album/6892837
В последнее время почти перестал читать новости и статьи, поэтому и тем для постов стало резко меньше. Зато я стал больше гулять и передвигаться на общественном транспорте. Или, например, в электричке на 6 часов без интернета. В таких условиях прям здорово залипнуть в окошко и слушать какой-нибудь легкий бубнёж. Короче, в качестве компенсации за отсутствие постов хочу порекомендовать подкаст, который мне давно уже рекомендовали, но я только недавно до него добрался.
Moscow Python Podcast — это удивительно годное шоу. Я прослушал уже выпусков десять, и мне прям нравится. Вроде всего лишь лёгкие разговоры под кофеёк, но оно пропитано какой-то непередаваемой мудростью. Ведущие классные — особенно Гриша Петров, который для меня уже стал легендой российского айти. Длина выпусков тоже оптимальная — хоть не страшно включать, а то некоторые подкасты и по 3 часа делают выпуски.
Вот тут вы найдёте все ссылки: https://podcast.python.ru/
Я слушаю на Яндекс.Музыке, поэтому скину отдельно: https://music.yandex.com/album/6892837
Yandex Music
Moscow Python: подкаст о Python на русском
Подкаст о Python на русском от команды курсов LearnPython и организаторов сообщества MoscowPytho... • Podcast • 11,454 subscribers
👍5👎1
Forwarded from Code Mining
PyNose: a Test Smell Detector for Python
А ещё в прошлом году у JetBrains Research вышла определялка говнокода в python-тестах. Работает для
Виды 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. Единственное, она описывает предыдущую версию, которая в ветке
А ещё в прошлом году у 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
.GitHub
GitHub - JetBrains-Research/PyNose: A test smell detector for Python.
A test smell detector for Python. Contribute to JetBrains-Research/PyNose development by creating an account on GitHub.
👍10🎉1🤩1💋1
Forwarded from UfoStation
Григорий Петров - Почему Python медленный?
Не смотря на заявленное название в докладе рассматриваются и другие языки, в том числе Java, C#, JavaScript и другие. Рекомендую к ознакомлению всем интересующимся языками программирования.
Не смотря на заявленное название в докладе рассматриваются и другие языки, в том числе Java, C#, JavaScript и другие. Рекомендую к ознакомлению всем интересующимся языками программирования.
👍11
Forwarded from Senior Python Developer
Шуточный пакет pyjokes
Если в вашей крови течёт PEP, а дома вас ждёт домашняя змея в клетке, то и шутки вам нужны соответствующие. Вы всегда можете получить их с помощью модуля pyjokes. Устанавливается, как всегда, через pip.
Также есть отдельная категория с шутками Чака Норриса.
Если в вашей крови течёт 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
С методами классов, статическими методами и обычными функциями работает, как и ожидается.
https://rednafi.github.io/reflections/dont-wrap-instance-methods-with-functoolslru_cache-decorator-in-python.html
Forwarded from Life of Tau
Twitter
Tushar Sadhwani
🐍Python news: CPython's main branch now compiles to webassembly! Thanks to @ethanhs and @ChristianHeimes Meaning: You can natively download and run Python in the browser. It's about a 5MB package right now. There's plans to make it smaller. Try it here: repl.ethanhs.me
👍3😱1
В Windows 7 официально поддерживается только Python 3.8. Разработчики не хотят тратить ресурсы на поддержку мёртвых версий ОС. Более новые версии интерпретатора уже не устанавливаются. Но если сильно хочется, то есть форк cpython-win7, который поддерживает все современные версии языка (сейчас там есть 3.10.1) и при этом совместим с Windows 7.
Если же вместо абстрактных странных обоев вы предпочитаете классические зелёные луга, вместо спотифая вы включаете Winamp, а вместо Кортаны у вас ассистент Скрепыш, то для вас тоже есть форк. Windows XP официально поддерживается лишь в Python 3.4, но умельцы запускают версии вплоть до последних релизов из ветки 3.6. Придётся собирать из исходников, но разве это преграда для настоящего энтузиаста?
#windows #retro
Если же вместо абстрактных странных обоев вы предпочитаете классические зелёные луга, вместо спотифая вы включаете Winamp, а вместо Кортаны у вас ассистент Скрепыш, то для вас тоже есть форк. Windows XP официально поддерживается лишь в Python 3.4, но умельцы запускают версии вплоть до последних релизов из ветки 3.6. Придётся собирать из исходников, но разве это преграда для настоящего энтузиаста?
#windows #retro
GitHub
cpython/Win7.rst at 3.10.1-win7 · NulAsh/cpython
The Python programming language. Contribute to NulAsh/cpython development by creating an account on GitHub.
👍4
АААА! У форматтера
https://github.com/psf/black/releases/tag/22.1.0
#black
black
наконец-то вышла стабильная (не бета) версия! Неужели дожили. Я ждал этого тжри года!https://github.com/psf/black/releases/tag/22.1.0
#black
GitHub
Release 22.1.0 · psf/black
At long last, Black is no longer a beta product! This is the first non-beta release and the first release covered by our new stability policy.
Highlights
Remove Python 2 support (#2740)
Introduce ...
Highlights
Remove Python 2 support (#2740)
Introduce ...
❤8👍1
Питонические атаки
В Windows 7 официально поддерживается только Python 3.8. Разработчики не хотят тратить ресурсы на поддержку мёртвых версий ОС. Более новые версии интерпретатора уже не устанавливаются. Но если сильно хочется, то есть форк cpython-win7, который поддерживает…
Кстати да, в комментариях напомнили про PPA-репозиторий deadsnakes для Ubuntu. В репо есть версии питона от очень старых до очень новых, и всё легко устанавливается через обычный привычный
Запустил Ubuntu 18.04, установил на ней Python 2.3 (это самый старый из доступных для этой версии убунты). Это настолько древняя версия языка, что здесь даже нет контекст-менеджеров (да, они появились в 2.5). Сложно представить питон без контекст-менеджеров, ведь это настолько естественная часть языка, что кажется, что оно должно было быть в языке с самого начала.
#deadsnakes #ubuntu #linux #retro
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
И это крайне логичное действие — незачем в системе держать легаси, которое лишь создаёт проблемы и путаницу. Большинство пользователей получат более компактную ОС и меньше проблем с выбором правильного интерпретатора, а те, кому всё ещё нужен Python 2, поставят его явно вручную. Они ведь всё равно уже привыкли страдать.
Пожалуй, макось из ныне живущих операционных систем продержалась со вторым питоном дольше всех.
Стоит отметить, что это не хейт отдельно взятого языка программирования. Эппл взяла курс на удаление многих скриптовых рантаймов, которые издревле поставлялись вместе с ОС, включая и Ruby, и Perl, и Python. Теперь всё это, если нужно, придётся ставить отдельно.
#macos #python2
👍1
Forwarded from Блуждающий форвард
О паттерн матчинге в python.
В
Ну практически haskell, нет? Увы, нет, ведь в python значение — это не то же самое что и тип, поэтому и возможности заматчить по значению у нас в этом случае нет. Но, так или иначе,
А вот чего в python не завезли (по, в целом, понятным причинам) так это возможности запилить sync и async реализации функции под одним именем. И это печально.
В
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).
Неудобно было бы жить без
Короче, пожалуй, я согласен писать на Python 3.7, но не старше.
А есть ли какие-то фичи в более новых версиях, от которых вы не готовы отказаться?
https://snarky.ca/a-reverse-chronology-of-some-python-features/
Я бы точно ни в коем случае не хотел жить без f-строк и тайп-аннотаций для переменных (3.6).
Неудобно было бы жить без
breakpoint()
(3.7), которая очень выручает в разных странных ситуациях, позволяя вывалиться в дебаггер. Вот вы помните, какое заклинание там раньше нужно было использовать, вместо этой удобной функции?Короче, пожалуй, я согласен писать на Python 3.7, но не старше.
А есть ли какие-то фичи в более новых версиях, от которых вы не готовы отказаться?
https://snarky.ca/a-reverse-chronology-of-some-python-features/
Tall, Snarky Canadian
A reverse chronology of some Python features
I occasionally hear people lament that Python is "bloated", "too big", "going
enterprise", or some other phrasing to suggest there was once an "ideal" version
of Python that had less bloat and was closer to what the person wanted.
But then this lament is…
enterprise", or some other phrasing to suggest there was once an "ideal" version
of Python that had less bloat and was closer to what the person wanted.
But then this lament is…
🤯☺️☺️☺️☺️🤯☺️☺️☺️☺️🤯…
Это если попытаться визуализировать версии питона по изменениям.
3.0 была шоком и прорывом, просто потому что язык сильно поменялся.
3.5 принесла асинхронность и тайп-аннотации.
3.10 принесла паттерн-матчинг, который тоже вероятно сильно повлияет на язык.
Короче, раз в 5 версий происходит революция. А промежуточные версии просто добавляют разные приятности. Если так и дальше пойдёт, то интересно, что же нам готовит 3.15?
Это если попытаться визуализировать версии питона по изменениям.
3.0 была шоком и прорывом, просто потому что язык сильно поменялся.
3.5 принесла асинхронность и тайп-аннотации.
3.10 принесла паттерн-матчинг, который тоже вероятно сильно повлияет на язык.
Короче, раз в 5 версий происходит революция. А промежуточные версии просто добавляют разные приятности. Если так и дальше пойдёт, то интересно, что же нам готовит 3.15?
В Django совсем недавно приняли веру в единый стиль кода и автоматическое форматирование. Пулл-реквест получился царский — около двух тысяч изменённых файлов. Да, Django теперь использует Black!
Это хороший прецедент. Думаю, теперь все, кто не решался внедрить Black, должны серьезно посмотреть на него ещё раз. Не берусь предсказывать, но ожидаю волну внедрений этого инструмента в разные другие проекты.
https://github.com/django/django/pull/15387
#django #black
Это хороший прецедент. Думаю, теперь все, кто не решался внедрить Black, должны серьезно посмотреть на него ещё раз. Не берусь предсказывать, но ожидаю волну внедрений этого инструмента в разные другие проекты.
https://github.com/django/django/pull/15387
#django #black
GitHub
Refs #33476 -- Reformatted code with Black. by carltongibson · Pull Request #15387 · django/django
Mainly targeting coding-style.txt, but then spread to a few of the config files.
Not sure they're exactly how we want them?
Doesn't yet include the GitHub Action, which wouldn't pass u...
Not sure they're exactly how we want them?
Doesn't yet include the GitHub Action, which wouldn't pass u...
👍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
Просто удивляюсь, насколько же сильна любовь программистов к тёмным темам, что даже Блокнот прогнулся — программа, которая не менялась практически вообще никак лет 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 веке должны заниматься освоением космоса, решать энергетические и экологические проблемы, строить роботов меха, делать летающие автомобили, создавать искусственные органы, лечить рак в конце-то концов. А не вот такой вот дичью. Я ошеломлён, потому что на моём веку ещё не было такой жестокости в таких масштабах. Очень сложно концентрироваться на работе. Стал плохо спать, много злиться. Страшно за себя и семью, потому что фиг знает, что нас дальше ждёт. С другой стороны, я понимаю, что мне и жаловаться особо не на что — вокруг меня не падают бомбы и не ездят танки. Боюсь даже представить, что сейчас переживают люди, которым приходится прятаться в метро.
Короче, я думаю, что ради поддержания собственной кукухи в дееспособном состоянии, буду продолжать сюда писать посты про то, что мне нравится — технологии, программирование и сообщества вокруг этого. Попытаюсь создать здесь островок относительной нормальности. Думаю, кому-то, как и мне, это может пойти на пользу.
А экстренные новости вы и так найдёте где почитать. От них всё равно никуда уже не денешься.
Я стал чуточку скрытнее, но любопытный читатель, если ему нужно, всё равно найдёт как со мной связаться. Отключил комменты во избежание дискуссий, в которых мне категорически не хочется участвовать. Да и чего тут в целом обсуждать?
Берегите себя. Проводите время с близкими. Отключайтесь иногда от новостей.
Кажется, что февраль был не 10 дней назад, а уже какие-то долгие месяцы назад. Сначала вообще не верилось, что всё происходит на самом деле, но постепенно осознание доходит. Я разочарован, потому что я и подумать не мог, что в наше время так всё ещё бывает. По моим наивным представлениям люди в 21 веке должны заниматься освоением космоса, решать энергетические и экологические проблемы, строить роботов меха, делать летающие автомобили, создавать искусственные органы, лечить рак в конце-то концов. А не вот такой вот дичью. Я ошеломлён, потому что на моём веку ещё не было такой жестокости в таких масштабах. Очень сложно концентрироваться на работе. Стал плохо спать, много злиться. Страшно за себя и семью, потому что фиг знает, что нас дальше ждёт. С другой стороны, я понимаю, что мне и жаловаться особо не на что — вокруг меня не падают бомбы и не ездят танки. Боюсь даже представить, что сейчас переживают люди, которым приходится прятаться в метро.
Короче, я думаю, что ради поддержания собственной кукухи в дееспособном состоянии, буду продолжать сюда писать посты про то, что мне нравится — технологии, программирование и сообщества вокруг этого. Попытаюсь создать здесь островок относительной нормальности. Думаю, кому-то, как и мне, это может пойти на пользу.
А экстренные новости вы и так найдёте где почитать. От них всё равно никуда уже не денешься.
Я стал чуточку скрытнее, но любопытный читатель, если ему нужно, всё равно найдёт как со мной связаться. Отключил комменты во избежание дискуссий, в которых мне категорически не хочется участвовать. Да и чего тут в целом обсуждать?
Берегите себя. Проводите время с близкими. Отключайтесь иногда от новостей.
Але
5'nizza
Музыка под настроение.
После своего реюниона 5'nizza выпустили годный альбом. Жаль, что только один. Между нашими странами может и случится ещё когда-нибудь добрый реюнион. Но вряд ли скоро.
После своего реюниона 5'nizza выпустили годный альбом. Жаль, что только один. Между нашими странами может и случится ещё когда-нибудь добрый реюнион. Но вряд ли скоро.
Forwarded from DevBrain
Чтобы получить кратный прирост производительности вашего FastAPI приложения достаточно перевести его на PyPy. Как? Читайте в статье: https://tonybaloney.github.io/posts/pypy-in-production.html
У автора получилось увеличить производительность в 4 раза!
У автора получилось увеличить производительность в 4 раза!
tonybaloney.github.io
PyPy in Production
Deploying a real-world Python application with PyPy
CPython собирается мигрировать свой баг-трекер (bugs.python.org, BPO) на GitHub Issues.
Ожидается, что этот перенос данных сделает взаимодействие с проектом более удобным и простым, сделает порог входа в проект ниже для новичков. Все-таки к гитхабу уже все успели привыкнуть, и не нужно будет отдельно регистрироваться в странной старомодной системе и учиться с ней работать. Ещё одна причина здесь, конечно же, в том, что BPO застряло на форке от старой версии RoundUp ещё на Python 2, и поддерживать и развивать это сейчас уже довольно проблематично.
В старом баг-трекере уже накопилось около 50k тредов, а некоторые из них ещё и достаточно длинные. По предварительным оценкам, миграция всех этих данных займёт 4-7 дней. Сам процесс сложный и состоит из нескольких шагов, для некоторых придётся привлекать сотрудников GitHub. В итоге, новые ишью будут существовать только на гитхабе, а старый трекер останется существовать в режиме read-only.
Эту миграцию обсуждают и подготавливают уже минимум два года. Звучит как что-то настолько же эпичное, как и переименование главной ветки из
https://discuss.python.org/t/github-issues-migration-is-coming-soon/13791
Ожидается, что этот перенос данных сделает взаимодействие с проектом более удобным и простым, сделает порог входа в проект ниже для новичков. Все-таки к гитхабу уже все успели привыкнуть, и не нужно будет отдельно регистрироваться в странной старомодной системе и учиться с ней работать. Ещё одна причина здесь, конечно же, в том, что BPO застряло на форке от старой версии RoundUp ещё на Python 2, и поддерживать и развивать это сейчас уже довольно проблематично.
В старом баг-трекере уже накопилось около 50k тредов, а некоторые из них ещё и достаточно длинные. По предварительным оценкам, миграция всех этих данных займёт 4-7 дней. Сам процесс сложный и состоит из нескольких шагов, для некоторых придётся привлекать сотрудников GitHub. В итоге, новые ишью будут существовать только на гитхабе, а старый трекер останется существовать в режиме read-only.
Эту миграцию обсуждают и подготавливают уже минимум два года. Звучит как что-то настолько же эпичное, как и переименование главной ветки из
master
в main
. Да, на больших проектах любые манёвры всегда проходят непросто. Надеюсь, в этот раз гитхаб не сломается!https://discuss.python.org/t/github-issues-migration-is-coming-soon/13791
Discussions on Python.org
GitHub Issues Migration is coming soon
As you might know, the Steering Council is working on migrating the data that is currently residing in Roundup at https://bugs.python.org/ (BPO) into the GitHub issues of the CPython repository hosted there. The ultimate goal is to move user- and core developer…