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
加入频道
🖥 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
🔥Подборка лучших обучающих каналов для программистов.

➡️ Делитесь с коллегами и cохраняйте себе, чтобы не потерять

🚀 Data Science

Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста
Data Jobs - ds вакансии
Аналитик данных
Data Science книги - актуальные бесплатные книги
Big data

#️⃣C#

С# академия
С# заметки — код, лучшие практики, заметки программиста c#
С# задачи и тесты
С# библиотека - актуальные бесплатные книги
C# вакансии - работа

Машинное обучение

Ml Собеседование - подготовка к собеседовению мл, алгоритмам, кодингу
Ml ru - актуальные статьи, новости, код и обучающие материалы
Ml Jobs - вакансии ML
ML Книги - актуальные бесплатные книги МО
ML чат
Machine Learning - полезные статьи новости гайды и разбор кода


⚡️ Frontend
Javascript академия - крупнейший js канал
React - лучшие гайды и советы по работе с react
Frontend - тутрориалы, уроки, гайды, код
PHP
Книги frontend
Задачи frontend

🏆 Golang
Golang - подробные гайды, разбор кода, лучшие практики, заметки
Golang собеседование
Golang вакансии
Golang книги
Golang задачи и тесты
Golang чат
Golang news - новости go



🐍 Python

Python/django
Python Собеседование - подготовка к собеседовению python и разбор алгоритмов
Pro python - статьи, новости, код и обучающие материалы
Python Jobs - вакансии Python
Python чат
Python книги

Java

Java академия
Java вакансии
Java чат
Java вопросы с собеседований
Java книги

🛢Базы данных
Sql базы данных
Библиотека баз данных
SQL чат

💻 C++

C++ академия
С++ книги
C++ задачи - подготовка к собеседовению мл, алгоритмам
C++ вакансии

💥 Хакинг Kali Linux

Kali linux
linux_kal - kali чат
Информационная безопасность

🐧 Linux

Linux academy

🦀 Rust
Rust программирование
Rust чат
Rust книги для программистов

📲 Мобильная разработка
Android разработка
Мобильный разработчик гайды и уроки

🇬🇧 Английский для программистов

🧠 Искусственный интеллект
ИИ и технологии
Neural - нейросети для работы и жизни
Книги ИИ
Artificial Intelligence

🔥 DevOPs
Devops для программистов
Книги Devops

🌟 Docker/Kubernets
Docker
Kubernets

📓 Книги
Библиотеки Книг для программситов

💼 Папка с вакансиями:
Папка Go разработчика:
Папка Python разработчика:
Папка Data Science
Папка Java разработчика
Папка C#
Папка Frontend
🖥 Hotpdf: a fast PDF parsing library to extract text and find text within PDF

hot pdf - это библиотека быстрого анализа PDF-файлов для извлечения текста и поиска текста в PDF-документах, созданная поверх pdfminer.six

pip install hotpdf

Github

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🔤Вопрос: как работает распаковка (*) в Python?
Что происходит, скажем, в случае такого генераторного выражения?
gen = (num for num in range(10))
print(*gen)



🔜Всё проще, чем кажется.
*args и **kwargs — это способы передачи переменного количества аргументов в функцию. Другими словами, они "распаковывают" значения из массива/словаря/множества и т.п. и передают эти значения в функцию.

🔜Пример использования *args:
def test(a, b): # Принимаем параметры a и b
print(a + b) # Выводим их сложение

array = [1, 2] # Создаём массив из двух чисел

test(*array) # Вывод: 3

При записи *array значения для функции были преобразованы в test(1, 2)

🔜Пример использования **kwargs:
def test(a,b): # Принимаем параметры a и b
print(a + b) # Выводим их сложение

dct = {'a':1, 'b':2} # Создаём словарь и записываем ключ-значение
test(**dct) # Вывод: 3

При записи **dct значения для функции были преобразованы в test(a=1, b=2)

🔜Таким же образом можно преобразовать данные в обратном направлении:
def test1(*var): # Принимаем параметры в виде множества
print(var)

test1(1, 2, 3) # Вывод: (1, 2, 3)

def test2(**var): # Принимаем параметры в виде словаря
print(var)

test2(a=1, b=2) # Вывод: {'a': 1, 'b': 2}


Такие вот дела 🖥

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Language Detection using Python

Определение языка с помощью Python.

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