Python/ django
58.9K subscribers
2.07K photos
61 videos
47 files
2.79K links
по всем вопросам @haarrp

@itchannels_telegram - 🔥 все ит-каналы

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - 📚

@pythonlbooks

РКН: clck.ru/3FmxmM
加入频道
🖥 Question and Answer based on Anything:

QAnything (Question and Answer based on Anything) - это локальная система ответов на вопросы из базы знаний, разработанная для поддержки широкого спектра форматов файлов и баз данных, позволяющая устанавливать и использовать ее в автономном режиме.

С помощью QAnything вы можете просто бросить любой локально хранящийся файл любого формата и получить точные, быстрые и надежные ответы.

Github
Docs

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Diagrams

Встречайте — Python-библиотека Diagrams для создания диаграмм и схем.
Отлично подойдёт для объяснения идеи продукта заказчикам партнёрам, например

pip install diagrams

from diagrams import Cluster, Diagram
from diagrams.aws.compute import ECS
from diagrams.aws.database import ElastiCache, RDS
from diagrams.aws.network import ELB
from diagrams.aws.network import Route53

with Diagram("Clustered Web Services", show=False):
dns = Route53("dns")
lb = ELB("lb")

with Cluster("Services"):
svc_group = [ECS("web1"),
ECS("web2"),
ECS("web3")]

with Cluster("DB Cluster"):
db_primary = RDS("userdb")
db_primary - [RDS("userdb ro")]

memcached = ElastiCache("memcached")

dns >> lb >> svc_group
svc_group >> db_primary
svc_group >> memcached


Первое изображение получено с помощью этого кода, остальные — пример того, что можно сделать с помощью diagrams

➡️ Официальный сайт с примерами и объяснением

➡️ GitHub

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Нереально полезные встроенные библиотеки Python

🔜Tempfile
Создаёт временный файл как папка tmp в linux:
import tempfile
with tempfile.NamedTemporaryFile() as tmp:
print(tmp.name)
tmp.write(...)


🔜IO
Чтобы не использовать временные файлы, можно использовать временный буфер сразу в программе:
from io import BytesIO

imagefile = BytesIO()
animage.save(imagefile, format='PNG')
imagedata = imagefile.getvalue()


🔜Struct
Позволяет создавать бинарные структуры и парсить их. Может ускорить передачу между клиентом и сервером:
>> from struct import *
>> pack(">bhl", 1, 2, 3)
b'\x01\x00\x02\x00\x00\x00\x03'
>> unpack('>bhl', b'\x01\x00\x02\x00\x00\x00\x03')
(1, 2, 3)
>> calcsize('>bhl')
7


🔜CMD
С помощью этой библиотеки можно создать полноценный tui:
Welcome to the turtle shell.   Type help or ? to list commands.

(turtle) ?

Documented commands (type help <topic>):
========================================
bye color goto home playback record right
circle forward heading left position reset undo

(turtle) help forward
Move the turtle forward by the specified distance: FORWARD 10
(turtle) record spiral.cmd
(turtle) position
Current position is 0 0


Удивительно что такие полезные пакеты находятся в стандартной комплектации питона.
И не нужно скачивать кучу пакетов через pip.

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 A little word cloud generator in Python

Создание облака слов на основе файла 'cl.txt'

Особенно полезно для задач NLP или при анализе соцсетей

from wordcloud import WordCloud

import matplotlib.pyplot as plt

# Read text from a file
with open('cl.txt', 'r', encoding='utf-8') as file:
text = file.read()

# Generate word cloud
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text)

# Display the generated word cloud using matplotlib
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()


Облако слов — это визуальное представление списка категорий/тегов. Чем чаще слово встречается, тем больший размер оно принимает в облаке.

pip install wordcloud

Github

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Build a typing assistant with Mistral 7B and Ollama - Python Tutorial

Невероятно — локальный AI чат-бот на основе Ollama и Mistral 7B всего в сотню строк Python кода (!)

💻 Туториал

🖥 GitHub

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Latexify: Generates LaTeX math description from Python functions.

Крутая библиотека Python, которая позволяет отображать функции в формате LaTeX


pip install latexify

То есть вы просто определяете функцию как обычно, например так:
def quadratic(a,b,c):
return (-b + math.sqrt(b**2 - 4*a*c)) / (2*a)


Чтобы вывести формулу LaTeX, мы просто помещаем над определением функции декоратор @latexify.function и печатаем имя функции quadratic в ячейке Google Colab.
Получается так — и мы увидем формулу:
@latexify.function
def quadratic(a,b,c):
return (-b + math.sqrt(b**2 - 4*a*c)) / (2*a)

quadratic


Отлично подойдёт тем, кто занимается на стыке IT и физики/математики/других дисциплин;
здесь в Google Colab можно затестить, как это работает

🖥 GitHub

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ UV: An extremely fast Python package installer and resolver, written in Rust.

Новейший инструмент для работы с зависимостями в Python


Создатели позиционируют его как замену pip, pip-tools и virtualenv, инстурмент написан на Rust.

На картинке вы видите сравнение uv с другими инструментами в разрешении зависимостей (слева) и установке (справа) зависимостей Trio с использованием прогретого кеша.

О проекте
GitHub
Docs

@pythonl
🖥 You can use #Python and #Textual to create plots in your terminal? 🐍🔥

Знаете ли вы, что вы можете использовать
#Python и #Textual для создания графиков в вашем терминале? 🐍 🔥

Это супер просто! Пример на картинке.

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Довольно полезная либа для структурированных выводов для LLM - Instructor 🔥

⭐️Работает на API вызова функций OpenAI, разработанном для простоты и прозрачности

Метод instructor.patch() для класса OpenAI вводит несколько ключевых полезных вещей:
🟡Режим ответа: Укажите модель Pydantic, чтобы упростить извлечение выходных данных.

🟡Максимальное количество повторных попыток: Установите желаемое количество повторных попыток для запросов.

🟡Контекст валидации: Предоставьте объект контекста для расширенного доступа к валидатору.

🟡Используйте метод client.chat.completions.create для отправки запроса и извлечения данных в объект Pydantic. Параметр response_model указывает модель Pydantic, которую следует использовать для извлечения. Полезно аннотировать переменную типом модели ответа, что поможет вашей IDE обеспечить автозаполнение и проверку орфографии.

https://pypi.org/project/instructor/

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Как расширить возможности стандартного Enum

Иногда хочется, чтобы у констант были доп. параметры, хранящие прочие характеристики. Первое, что приходит на ум — это описать Enum, хранящий простые значения, и маппинг:
from dataclasses import dataclass
from enum import Enum

class Color(Enum):
BLACK = 'black'
WHITE = 'white'
PURPLE = 'purple'

@dataclass(frozen=True)
class RGB:
red: int
green: int
blue: int

COLOR_TO_RGB = {
Color.BLACK: RGB(0, 0, 0),
Color.WHITE: RGB(255, 255, 255),
Color.PURPLE: RGB(128, 0, 128),
}

Здесь получается, что константы и характеристики располагаются сами по себе, к тому же они могут находится в разных частях системы. Это может привести к тому что при появлении новой константы в Color, никто не обновит маппинг, т.к. нет жёсткой и явной связи.

Как же можно хранить всё необходимое в единой структуре?

▶️Вариант 1 на изображении.
Кажется, что выглядит неплохо, но в таком варианте есть ограничение по количеству дополнительных параметров. Давайте попробуем еще немного улучшить.

▶️Вариант 2
Раз в 1 варианте у нас получилось сделать с использованием tuple, то значит получится и с typing.NamedTuple. К тому же будут именованные параметры, что повысит читабельность.
В качестве члена перечисления будем хранить целиком объект typing.NamedTuple. Теперь чтобы у нас происходило корректное сравнение объектов нам нужно переопределить методы __hash__ и __eq__. Сравниваться объекты будут по одному полю — value.
Получился в принципе рабочий вариант. Конечно у него есть свои ограничения, плюс решение не универсальное.

▶️Вариант 3
Что если вместо typing.NamedTuple использовать dataclass? Вроде идея здравая. Появляется возможность наследования классов, хранящих доп. параметры. Плюс вспомогательные функции из dataclasses.
В качестве члена перечисления, как и в прошлый раз, будем хранить объект целиком, только теперь это dataclass.

Ну вот, теперь другое дело)

➡️ Полезная статья в тему

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 `__init_subclass__` runs when your class is subclassed.

Если вы хотите получать уведомление, когда класс Python 🐍 становится подклассом.

Используйте: `__init_subclass__`.

Он запускается, когда ваш класс становится подклассом. 🚀

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Получение мостов tor из GMail с помощью Python

Учите Python, он везде)
1 шаг — установка внешних библиотек
pip install python-decouple opencv-python pyzbar IMAPClient
decouple — для чтения данных из файла
opencv — для чтения изображения с QR-кодом
pyzbar — чтобы прочитать данные, закодированные в QR-коде
IMAPClient — с помощью неё будем работать с сообщениями на почтовом сервере

Так как мы будем использовать пароль приложений, а также логин от аккаунта Google, то в коде его желательно не использовать. Поэтому, необходимо создать файл «.env» с примерным содержимым:
login = "[email protected]"
pwd = "gffg sbbp jccj vhhi"


2 шаг — импорт библиотек

3 шаг — считывание данных из QR-кода

4 шаг — отправка письма

5 шаг — чтение почты

▶️ Полностью о каждом шаге можно прочитать тут

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🌷 Happy Women's day!

Выводим поздравление с 8 марта.

@pythonl