TGTGInsighttelegram intelligenceLIVE / telegram public index
Назад кон каналите
Python Заметки avatar

TGINSIGHT CHAT

Python Заметки

@pythonotes

Education

Интересные заметки и обучающие материалы по Python Контакт: @paulwinex ⚠️ Рекламу на канале не делаю!⚠️ Хештеги для поиска: #tricks #libs #pep #basic #regex #qt #django #2to3 #source #offtop

Претплатници2,220Тековни претплатници
Следени објави384Број на индексирани објави
Неодамнешен опфат27,750Збир на неодамнешни прегледи
Неодамнешни објави

Неодамнешни објави

Страница 6 од 32 · 384 објави

Објавено 25 мар.

Библиотека APScheduler для управления заданиями в Python. Может запускать планировщик и задания как отдельный поток (синхронный код) и как коркутины (асинхронный код), отложенные или через интервал. Что есть в APScheduler: ▫️гибкий функционал создания задачи ▫️удобное управление созданными заданиями (pause\resume, listing, modify, reschedule) ▫️кастомизация классов библиотеки ▫️различные хранилища заданий (Memory и различные БД) ▫️интеграции в фреймворки ▫️7 вариантов планировщика Три варианта тригеров для задач: ▫️по дате с помощью datetime ▫️через интервал с помощью datetime ▫️через интервал с помощью cron и другие полезности В данный момент готовится к релизу 4я версия PS. Всегда использую вместе с FastAPI, очень рекомендую к ознакомлению. #libs

2,610 views

Hashtags

Објавено 8 мар.

⭐️ Поздравляю!!! ⭐️ 🌺🌼🌹🧚‍♀️👠🍀🎉 + бонус в коментах 😊

2,410 views

Објавено 4 мар.

Библиотека psutil предоставляет весьма широкий инструментарий для взаимодействия с процессами. Одна из полезных функций - узнать какие файлы открыты в контексте процесса или узнать какой процесс занимает файл. Узнаём какие файлы использует процесс import psutil def list_file_handlers(process_name): for proc in psutil.process_iter(): if proc.name().lower().startswith(process_name): for file in proc.open_files(): print(file) list_file_handlers('python') Функция вернёт имя процесса который занял файл. Если файл не занят то вернёт None. def who_is_use(fpath): for proc in psutil.process_iter(): for item in proc.open_files(): if fpath == item.path: return proc.name() Для использования требуются админские права. #libs

2,440 views

Hashtags

Објавено 26 фев.

Когда пишешь асинхронный код нужно учитывать особенности такого подхода. Всегда требуется держать в уме, когда возвращается корутина а когда реальный результат. Между этими двумя сущностями должен быть вызов через await. Вот пример синхронного запроса в базу данных с помощь sqlalchemy. Query пишу инлайном для компактности. entities = session.execute(select(EntityModel)).scalars().all() Всё ясно и линейно. А вот он же асинхронный. result = await session.execute(select(EntityModel)) entities = result.scalars().all() Это значит что session.execute возвращает корутину, или awaitable объект. Сначала его нужно выполнить через await, тогда получишь объект с которым можно дальше работать. Не хочу сказать что это мастхэв практика, но простые асинхронные запросы тоже можно сократить до одной строки. Просто использовать скобки. entities = ( await session.execute(select(EntityModel)) ).scalars().all() На самом деле я использую такую конструкцию только в прототипах тестов или вспомогательных функциях тестов. В продакшн такое обычно не попадает. #tricks

2,120 views

Hashtags

Објавено 19 фев.

Новый пакеджинг для Python uv написанный на Rust от автора быстрого линтера Ruff Что нам обещают ▫️ Эпичная скорость ▫️ Легкий переход с pip и pip-tools ▫️ Отсутствие зависимостей и дистрибуция в виде одного автономного bin файла Следим, надеемся, тестируем... #libs

2,180 views

Hashtags

Објавено 12 фев.

rich Библиотека для нескучного принта! Добавляет в ваш терминал цвет и разные способы форматирования текста. https://github.com/willmcgugan/rich ➡️ Мой небольшой пример #libs

2,220 views

Hashtags

Објавено 5 фев.

PEP471 добавил в Python3.5 в модуль os новую функцию scandir() ▫️это генератор с соответствующими возможностями ▫️возвращает не просто строку а объект DirEntry ▫️работает в 4-10 раз быстрей чем os.listdir и os.walk Раньше это была отдельная библиотека, которая позже стала частью CPython, как и ряд других новых библиотек в Python 3. В настоящий момент метод Path.iterdir() всё еще использует os.listdir(). Обёртка, заставляющая обычную функцию работать как генератор def iterdir(self): for name in os.listdir(self): yield self._make_child_relpath(name) В тоже время Path.glob() и Path.rglob() уже используют os.scandir(), то есть полноценные генераторы. #libs

2,540 views

Hashtags

Објавено 1 јан.

Поздравляю всех с 2к24! ❄️⛄️🎁🎄🐲

2,520 views

Објавено 27 дек.

Библиотеки для рабты с коллекциями файлов (секвенциями) ▫️ Поиск коллекций в директории ▫️ Проверка целостности ▫️ Поиск пересечений ▫️ Форматирование И другие функции ➡️ CLIQUEhttps://clique.readthedocs.io/en/stable/ import clique files = [ '/tmp/file1_001.png', '/tmp/file1_002.png', '/tmp/file1_003.png', '/tmp/file1_005.png', ] collection = clique.assemble(files)[0][0] collection.head # '/tmp/file1_' collection.tail # '.png' collection.padding # 3 collection.indexes # <SortedSet "[1, 2, 3, 5]"> collection.holes() # <Collection "/tmp/file1_%03d.png [4]"> collection.separate() # [<Collection "/tmp/file1_%03d.png [1-3]">, # <Collection "/tmp/file1_%03d.png [5]">] ➡️PYSEQhttps://pyseq.rsgalloway.com/ import pyseq files = [ '/tmp/file1_001.png', '/tmp/file1_002.png', '/tmp/file1_003.png', '/tmp/file1_005.png', ] sequence = pyseq.Sequence(files) sequence.head() # 'file1_' sequence.tail() # '.png' sequence.path() # '/tmp/file1_1-5.png' sequence.frames() # [1, 2, 3, 5] sequence.format('%p') # '%03d' sequence.missing() # [4] У библиотек схожий функционал но в деталях различается. clique не умеет работать с pathlib.Path а pyseq не понимает генератор как источник. Но обе могут найти все коллекции в директории и выдать много информации о них. #libs

2,810 views

Hashtags

Објавено 14 дек.

На днях вышел Django 5. ▫️GeneratedField Поля, которые автоматически рассчитываются по экспрешену (Database generated model field). ▫️Фасетный фильтр для админки Показывает количество элементов для каждого фильтра. ▫️Async Добавлены асинхроные функции django.contrib.auth, ORM. Ряд декораторов теперь поддерживаются асинхронными вьюшками. ▫️ORM Новые возможносте полей, такие как поддержка словарей и функций в choices, дефолтные значения на стороне БД (Database-computed default values) с аргументом db_default и другие. ▫️Шаблоны Новые возможности шаблонов, позволяющие писать меньше кода в формах. #django

2,080 views

Hashtags

Објавено 11 дек.

Где хранить настройки мы уже выяснили. А как вы храните на хосте юзера чувствительные и секретные данные? Занимаетесь обфускацией паролей и токенов делая защиту от дурака? Да, я тоже когда-то этим занимался😆 Правильным способом будет хранение в специальных шифрованных хранилищах, которые предпоставляет ваша ОС. Сохранённую информацию можно получить только если залогиниться под юзером. То есть мы защищены паролем текущего юзера. В каждой ОС своё решение, и удобно будет исопльзовать просплатформенные библиотеки. Самая популярная это keyring. Использовать очень просто. Любой пароль или токен сессии нужно сохранить под каким-либо именем. Обычно это имя сервиса. Так же потребуется юзернейм. С этими же данными можем получить пароль обратно. >>> import keyring keyring.set_password('myapp', 'username', 'pswd!') print(keyring.get_password('myapp', 'username')) # pswd! Поддерживается основные бэкэнды из коробки и можно доставить сторонние или написать свой. Для генерации и проверки паролей не забываем про secrets. #libs

1,830 views

Hashtags

Објавено 4 дек.

Библиотека platformdirs для получения стандартных локальных путей на компьютере юзера для хранения данных приложения и конфигов. ▫️кросплатформенная (Linux, macOS, Windows, Android) ▫️изоляция разных версий приложения ▫️большой список стандартных директорий Альтернативная библиотека: appdirs #libs

1,990 views

Hashtags

12•••45678•••10•••20•••303132
ПретходнаСтраница 6 од 32Следна