ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

Python/ django

Python/ django

الذهاب إلى القناة على Telegram

📈 نظرة تحليلية على قناة تيليجرام Python/ django

تُعد قناة Python/ django (@pythonl) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 58 512 مشتركاً، محتلاً المرتبة 2 246 في فئة التكنولوجيات والتطبيقات والمرتبة 10 308 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 58 512 مشتركاً.

بحسب آخر البيانات بتاريخ 29 أكتوبر, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -174، وفي آخر 24 ساعة بمقدار -25، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 6.05‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 3.03‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 3 541 مشاهدة. وخلال اليوم الأول يجمع عادةً 1 771 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 21.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل github, claude, контекст, архитектура, api.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“по всем вопросам @workakkk @itchannels_telegram - 🔥 все ит каналы @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - 📚 @pythonlbooks РКН: clck.ru/3Fm...”

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 30 أكتوبر, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

58 512
المشتركون
-2524 ساعات
-1017 أيام
-17430 أيام
أرشيف المشاركات
🐍 Часть2: ещё 20 полезных Python-однострочников для тех, кто пишет в прод Первая часть зашла — вот ещё 20 трюков, которые реально экономят время и делают код лаконичнее и чище: 1. 📥 Считать все строки из файла, убрав перевод строки

lines = Path('file.txt').read_text().splitlines()
2. 🔐 Получить SHA256-хеш строки

hash = hashlib.sha256(b"your text").hexdigest()
3. 🧮 Конвертация списка чисел в строку

s = ','.join(map(str, numbers))
4. 🛑 Быстро остановить выполнение скрипта

raise SystemExit("Done")
5. 🧠 Распечатать размер объекта в памяти

print(sys.getsizeof(obj))
6. 🧬 Плоское разворачивание вложенных списков

flat = [i for sub in nested for i in sub]
7. 🔄 Инвертировать булеву маску NumPy

inv_mask = ~mask
8. 🧽 Удалить дубликаты из списка, сохранив порядок

seen = set(); uniq = [x for x in lst if not (x in seen or seen.add(x))]
9. 📦 Распаковка аргументов из словаря в функцию

result = func(**params)
10. 🔎 Получить словарь с топ-N частыми значениями

top_n = dict(Counter(lst).most_common(5))
11. 🪓 Ограничить длину строки с троеточием

s_trunc = s[:n] + '…' if len(s) > n else s
12. 🎛️ Массив из 0 и 1 случайной длины

binary = [random.randint(0, 1) for _ in range(n)]
13. 🗓️ Получить сегодняшнюю дату в формате ISO

today = date.today().isoformat()
14. 📁 Получить размер файла в мегабайтах

size_mb = os.path.getsize(path) / 1024**2
15. 🔀 Перемешать словарь (Python 3.7+ сохраняет порядок)

shuffled = dict(random.sample(d.items(), len(d)))
16. ⏳ Измерить время выполнения блока

with contextlib.redirect_stdout(io.StringIO()): exec('code')
17. 🧱 Разделить список на чанки по N

chunks = [lst[i:i+n] for i in range(0, len(lst), n)]
18. 🕵️ Проверить, работает ли хост (без ping)

ok = socket.create_connection((host, port), timeout=2)
19. 🛠️ Быстро заменить подстроку без re

s = s.replace('from', 'to', 1)
20. 🧪 Убедиться, что все элементы списка — числа

is_all_numbers = all(isinstance(x, (int, float)) for x in lst)
📌 Если нужна часть 3 — ставь лайк. @pythonl

⚙️ Подменяй любые импорты в Python “на лету” — без изменения кода Если ты хочешь протестировать модуль, подменить зависимость, замокать внешний сервис или обмануть импорт — не обязательно редактировать исходники. Python позволяет перехватывать импорты прямо во время выполнения, через sys.modules. Вот минимальный приём, который делает это прозрачно:

import sys
import types

# Создаём фейковый модуль
fake = types.SimpleNamespace()
fake.get_data = lambda: "подмена работает"

# Подменяем импорт
sys.modules['external_service'] = fake

# Теперь даже import будет работать
import external_service
print(external_service.get_data())  # → "подмена работает"
@pythonl

👩‍💻 Всем программистам посвящается! Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования
👩‍💻 Всем программистам посвящается! Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования: Выбирай своё направление: 👩‍💻 Python — t.me/python_ready 🤔 InfoSec & Хакинг — t.me/hacking_ready 🖥 SQL & Базы Данных — t.me/sql_ready 🤖 Нейросети — t.me/neuro_ready 👩‍💻 C/C++ — https://t.me/cpp_ready 👩‍💻 C# & Unity — t.me/csharp_ready 👩‍💻 Linux — t.me/linux_ready 📖 IT Книги — t.me/books_ready 👩‍💻 Frontend — t.me/frontend_ready 📱 JavaScript — t.me/javascript_ready 👩‍💻 Backend — t.me/backend_ready 📱 GitHub & Git — t.me/github_ready 👩‍💻 Java — t.me/java_ready 👩‍💻 Весь IT — t.me/it_ready 👩‍💻 Bash & Shell — t.me/bash_ready 🖼️ DevOps — t.me/devops_ready 🖥 Design — t.me/design_ready 📌 Гайды, шпаргалки, задачи, ресурсы и фишки для каждого языка программирования!

🧠 Ускоряй Python циклы без NumPy — через встроенный `array.array` Если ты используешь большие списки чисел в Python и работаешь с ними в цикле — знай: list медленный и неэффективный по памяти. Есть способ ускорить операции в 2–5 раз без внешних библиотек — просто используй array точка array. Попробуй и напиши в комментах результат, на сколько ускорились твои функции. from array import array data = array('f', [0.1] * 10_000_000) # вместо обычного list # быстрая арифметика for i in range(len(data)): data[i] *= 2.5 @python_job_interview

🌟 Odigos — распределенный трейсинг без модификации кода. Этот open-source проект меняет правила игры в observability-инструм
🌟 Odigos — распределенный трейсинг без модификации кода. Этот open-source проект меняет правила игры в observability-инструментах. Инструмент умеет автоматически генерировать распределенные трейсы для приложений на Java, Python, .NET, Node.js и Go без необходимости правки исходного кода. Под капотом используется eBPF для низкоуровневой инструментации, что особенно ценно для скомпилированных языков вроде Go. Трейсы сразу экспортируются в формате OpenTelemetry, что позволяет интегрироваться с любыми совместимыми системами мониторинга. 🤖 GitHub @pythonl

🐍 20 реально полезных однострочных функций на Python — для тех, кто пишет в прод Забудь про [::-1] и lambda x: x*2. Вот подборка, где однострочники реально ускоряют работу, убирают лишний код и улучают читаемость кода: 1. 📁 Получить все файлы с расширением .py рекурсивно

files = list(Path('.').rglob('*.py'))
2. 🧪 Быстрое тестирование скорости любого выражения

timeit(lambda: your_func(), number=1000)
3. 🔎 Показать все публичные методы объекта

[m for m in dir(obj) if not m.startswith('_')]
4. 🧼 Очистить DataFrame от строк с NaN

df_clean = df.dropna()
5. 🔄 Быстрое многопоточное выполнение функций

list(ThreadPoolExecutor().map(func, iterable))
6. 🗜️ Получить частоты значений в списке

dict(Counter(my_list))
7. 🔍 Найти дубликаты в списке

dups = [x for x, c in Counter(lst).items() if c > 1]
8. 📦 Сжать список без None

filtered = list(filter(None, data))
9. 🕵️‍♂️ Ловить и логировать все исключения в одном выражении

try: foo() except Exception as e: logging.exception(e)
10. 📊 Преобразовать список словарей в DataFrame

pd.DataFrame(list_of_dicts)
11. 🔄 Инвертировать словарь с проверкой на коллизии

inv = {v: k for k, v in d.items() if list(d.values()).count(v) == 1}
12. ⏳ Простой таймер

start = time(); result = fn(); print(f'{time() - start:.2f}s')
13. 🔢 Перемешать и взять подмножество

sample = random.sample(big_list, k=100)
14. 🧠 Получить максимальный элемент по ключу

max(data, key=lambda x: x.score)
15. 📐 Убрать отступ у многострочной строки

dedented = textwrap.dedent(multiline_string)
16. 🛠️ Простой retry без библиотек

[func() for _ in range(5) if not success()][-1]
17. 📚 Преобразовать JSON-файл в объект

data = json.loads(Path('file.json').read_text())
18. 🧮 Быстрая нормализация NumPy-вектора

v /= np.linalg.norm(v)
19. 🧾 Отобразить все переменные окружения, отсортированные по имени

print('\n'.join(f'{k}={v}' for k, v in sorted(os.environ.items())))
20. 🔄 Преобразовать словарь в query string

query = urlencode(params)
@pythonl

🧠 Как превратить любой Python-объект в читаемый словарь — даже если это класс с кучей вложенных полей Когда работаешь с API, логами или дебажишь сложные объекты — хочется увидеть весь объект как словарь, без .__dict__, без сериализации, без ручного разбора. Вот приём, который делает это рекурсивно, красиво и гибко — с помощью dataclasses и asdict, даже если объект не был dataclass изначально.
python 
from dataclasses import dataclass, asdict, is_dataclass
from types import SimpleNamespace

def deep_to_dict(obj):
    if isinstance(obj, dict):
        return {k: deep_to_dict(v) for k, v in obj.items()}
    elif isinstance(obj, list):
        return [deep_to_dict(i) for i in obj]
    elif is_dataclass(obj):
        return asdict(obj)
    elif isinstance(obj, SimpleNamespace):
        return deep_to_dict(vars(obj))
    elif hasattr(obj, '__dict__'):
        return deep_to_dict(vars(obj))
    else:
        return obj
🧠 Рекурсивный разбор любых Python-объектов 📌 Подходит для логирования, сериализации, отладки 📌 Работает с dataclass, обычными классами, объектами из types, JSON-like структурами 📌 Можно расширить: добавить фильтрацию полей, вывод в YAML или сохранение в файл Теперь любой “монстр из API” — превращается в читаемый словарь за одну строчку.

🔍Открытое собеседование на Python-бекендера с разработчиком из Avito и Яндекс во вторник 10 июля(уже в четверг!) в 19:00 по
🔍Открытое собеседование на Python-бекендера с разработчиком из Avito и Яндекс во вторник 10 июля(уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика. Как это будет: 📂 Савва Демиденко, ТехЛид с опытом в Яндексе и Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Савва будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Савве Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqwZX5NF

🪶 DotDotGoose — open-source инструмент для ручного подсчёта объектов на изображениях Нужен простой способ разметить объекты
🪶 DotDotGoose — open-source инструмент для ручного подсчёта объектов на изображениях Нужен простой способ разметить объекты на фото — вручную и без лишних настроек? DotDotGoose — идеальный выбор. Это десктоп‑приложение, написанное на Python, для учёта объектов путём простого "тыкания" точек. 🔧 Возможности: - Быстрое добавление точек и классов объектов - Зум, панорама, тёмная тема - Экспорт в CSV, JSON и изображения с разметкой - Поддержка пользовательских метаданных - Готовые билды под Windows и macOS Установка: git clone https://github.com/persts/DotDotGoose python3 -m venv ddg-env source ddg-env/bin/activate python -m pip install --upgrade pip python -m pip install -r ./DotDotGoose/requirements.txt 👨‍🔬 Для всех, кому нужен точный ручной подсчёт на изображениях. 🔗 GitHub: @pythonl

🧠 Ускорь import в Python-проектах с помощью lazy loading — без изменения логики Если у тебя проект с тяжёлыми модулями (`pandas`, torch, tensorflow`), но они не всегда нужны — не загружай их зря. Python позволяет **отложить импорт до первого использования**, через встроённый `importlib. Вот как это выглядит на практике:


import importlib

# Обёртка для ленивого импорта
def lazy_import(name):
    return importlib.util.LazyLoader(importlib.import_module(name))

# Использование
np = lazy_import('numpy')
# numpy ещё не загружен

# Теперь загрузится:
print(np.array([1, 2, 3]))
@pythonl

⚡ Ускорь Python без переписывания — скомпилируй код в .so через Cython Нужно ускорить медленные куски Python-кода (циклы, численные вычисления, парсинг)? Не обязательно лезть в C или переписывать всё под NumPy. Можно взять свой .py`-файл, добавить одну строчку и превратить его в бинарный .so`‑модуль через Cython — без изменения логики.


# 1. Устанавливаем Cython и компилятор
pip install cython
sudo apt install build-essential

# 2. Переименовываем файл
mv myscript.py myscript.pyx

# 3. Создаём setup.py
echo '
from setuptools import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("myscript.pyx"))
' > setup.py

# 4. Компилируем
python3 setup.py build_ext --inplace

# 5. Используем как обычный модуль
python3 -c 'import myscript; myscript.main()'
@pythonl

ML-инженеры, какая встреча! 19 июля в Москве снова пройдет Turbo ML Conf от группы Т-Технологий. В этом году — еще масштабнее
ML-инженеры, какая встреча! 19 июля в Москве снова пройдет Turbo ML Conf от группы Т-Технологий. В этом году — еще масштабнее! В программе 5 тематических потоков, продовые кейсы и технологии. Среди спикеров — эксперты Т-Банка, Сбера, Яндекса и других ведущих специалистов. Будет много нетворкинга, прикладные доклады, настольные игры, лимитированный мерч. Участие бесплатное. Успейте оставить заявку

👾 GREMLLM — теперь у ваших багов есть сознание GREMLLM — это необычный Python-класс, в котором все методы и свойства создают
👾 GREMLLM — теперь у ваших багов есть сознание GREMLLM — это необычный Python-класс, в котором все методы и свойства создаются динамически с помощью LLM. Вы описываете, *что за объект вы хотите*, и дальше GREMLLM сам решает, что должно происходить при вызове методов или обращении к полям. 📦 Установка:

pip install gremllm
🔧 Пример:


from gremllm import Gremllm

counter = Gremllm('counter')
counter.value = 5
counter.increment()
print(counter.value)               # → 6?
print(counter.to_roman_numerals())  # → VI?
🧩 Возможности: – Динамическое поведение: всё определяется "на лету" с помощью LLM – Поддержка OpenAI, Claude, Gemini, и локальных моделей – Wet Mode: можно строить цепочки вызовов (методы возвращают объекты) – Verbose Mode: выводит, какой код был сгенерирован – Умная обработка ошибок и настройка через наследование ⚠️ Это экспериментальный инструмент. Не для продакшена. Но очень интересен для изучения LLM-интеграций в Python-код. 🔗 Репозиторий: https://github.com/ur-whitelab/gremllm @pythonl

Repost from Machinelearning
📓🦙 NotebookLlama — open-source альтернатива NotebookLM! Практически полный функционал NotebookLM — в опенсорсе. ✔️ Собирает базу знаний из документов — с точным разбором через LlamaCloud ✔️ Автоматически пишет резюме и строит mind map-графы ✔️ Позволяет генерировать подкасты (работает на базе ElevenLabs) ✔️ Позволяет вести чат с агентом по документам ✔️ Метрики и аналитика через opentelemetry 🛠 Всё в открытом репо — можешь форкать, кастомизировать, заменять компоненты под себя. Установка:

git clone https://github.com/run-llama/notebookllama
▪GitHub: https://github.com/run-llama/notebookllama ▪Попробовать в LlamaCloud: https://cloud.llamaindex.ai @ai_machinelearning_big_data #AI #ML #LLM #opensource #NotebookLM

📊 Vizro — low-code инструмент для создания дашбордов на Python. Интересный проект для аналитиков и дата-инженеров, позволяющий собирать интерактивные дашборды буквально в несколько строк кода. Основан на связке Plotly + Dash + Pydantic, но скрывает сложность за простым декларативным синтаксисом в JSON/YAML/Python-словарях. Библиотека имеет встроенные best practices по визуализации данных и возможность кастомизировать всё через Python/JS, когда low-code возможностей недостаточно. Готовые дашборды выглядят профессионально и сразу готовы к продакшену. 🤖 GitHub @pythonl

⚡️ Почему лучшие разработчики всегда на шаг впереди? Потому что они знают, где брать настоящие инсайд! Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе. ИИ: t.me/ai_machinelearning_big_data Python: t.me/python_job_interview Linux: t.me/linuxacademiya Devops: t.me/DevOPSitsec Базы данных: t.me/sqlhub Мл собес t.me/machinelearning_interview C++ t.me/cpluspluc Docker: t.me/DevopsDocker Хакинг: t.me/linuxkalii МЛ: t.me/machinelearning_ru Data Science: t.me/data_analysis_ml Javascript: t.me/javascriptv C#: t.me/csharp_ci Java: t.me/java_library Python собеседования: t.me/python_job_interview Мобильная разработка: t.me/mobdevelop Golang: t.me/Golang_google React: t.me/react_tg Rust: t.me/rust_code ИИ: t.me/vistehno PHP: t.me/phpshka Android: t.me/android_its Frontend: t.me/front Big Data: t.me/bigdatai МАТЕМАТИКА: t.me/data_math Kubernets: t.me/kubernetc Разработка игр: https://t.me/gamedev Физика: t.me/fizmat SQL: t.me/databases_tg Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy 🎓954ГБ ОПЕНСОРС КУРСОВ: @courses 😆ИТ-Мемы: t.me/memes_prog 🇬🇧Английский: t.me/english_forprogrammers 🧠ИИ: t.me/vistehno 🖥 Chatgpt для кода в тг: @Chatgpturbobot - 📕Ит-книги: https://t.me/addlist/BkskQciUW_FhNjEy 💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi Подпишись, чтобы всегда знать, куда двигаться дальше!

🔥 CAI — ИИ для поиска багов от Alias Robotics Что это такое? CAI — лёгкий фреймворк для создания AI-агентов, которые помогаю
🔥 CAI — ИИ для поиска багов от Alias Robotics Что это такое? CAI — лёгкий фреймворк для создания AI-агентов, которые помогают автоматизировать поиск и проверку уязвимостей. Как это работает? - Загружаете YAML-конфиги Опишите сценарии поиска багов, тестов и отчётов в простых текстовых файлах. - LLM-агенты AI-модель эмулирует протоколы (SSH, HTTP, TCP и другие) и взаимодействует с целевыми системами как настоящий тестировщик. - Генерация и «разогрев» данных Создавайте синтетические запросы для обучения и быстро запускайте агента на своих данных. - Оффлайн-оценка Собирайте результаты тестов и анализируйте их без постоянного подключения к интернету. Зачем использовать CAI? - Ускоряет подготовку и запуск тестов безопасности - Позволяет гибко настраивать шаги проверки - Повышает прозрачность и повторяемость отчётов о найденных уязвимостях Установка и запуск:

git clone https://github.com/aliasrobotics/cai.git
cd cai
# отредактируйте config.yaml и запустите агента
📌 Github @pythonl

🧩 Задача для разминки Что выведет этот код? Попробуй догадаться без запуска.

class Sneaky:
    def __eq__(self, other):
        print("Comparing!")
        return True

a = Sneaky()
b = [a]

print(a in b)
print(a == b[0])
print(b.count(a))
🤔 Подумай: сколько раз вызовется eq? 🎯 Разбор: print(a in b) 🔍 Проверка a in b вызывает b.__contains__(a), который по умолчанию использует ==. 👉 Вызовется eq, будет True. print(a == b[0]) 🔍 Прямое сравнение — снова eq. print(b.count(a)) 🔍 list.count сравнивает каждый элемент с ==. В нашем списке один элемент — a. 👉 Опять вызывается eq. 💥 Вывод будет: Comparing! True Comparing! True Comparing! 1 📌 Вывод: __eq__ сработал 3 раза, и каждый раз напечатал "Comparing!". 🧠 Уловка: Python-списки используют ==, даже если это один и тот же объект! Да, a == a всё равно вызовет __eq__, если он определён. ⚠️ Фишка для интервью: Можно подменить поведение ==, но is (сравнение идентичности) всегда быстрее и не вызывает магии. @pythonl

⚡️ PyOpenCL — ускоряем Python вычисления на GPU. Этот проект даёт доступ к технологии OpenCL прямо из Python, позволяя задейс
⚡️ PyOpenCL — ускоряем Python вычисления на GPU. Этот проект даёт доступ к технологии OpenCL прямо из Python, позволяя задействовать не только видеокарты, но и любые параллельные вычислительные устройства. Он сочетает низкоуровневый контроль с автоматической обработкой ошибок и привязкой жизненного цикла объектов. Инструмент имеет обширную документацию с примерами: от простого поэлементного умножения массивов до сложных алгоритмов с использованием локальной памяти GPU. Проект работает с реализациями OpenCL от Apple, AMD и Nvidia, а установка через Conda занимает буквально пару команд. 🤖 GitHub @pythonl

Общий сбор питонистов на митапе ЮMoney ™️ Питоняшки — бесплатный митап ЮMoney для Python-разработчиков. ✅ 3 июля, в четверг,
Общий сбор питонистов на митапе ЮMoney ™️ Питоняшки — бесплатный митап ЮMoney для Python-разработчиков. ✅ 3 июля, в четверг, в 19:00 (мск) — приходите на митап в Санкт-Петербурге или подключайтесь онлайн. О чём будут доклады? 🟣 Это не те метрики, что вы ищете. Разберёмся, почему стандартного экспортёра может не хватать, и как написать свой на Python. 🟣 Кодогенерация: как компьютеры учатся писать код за нас. Поговорим про прошлое, настоящее и будущее кодогенерации в разных языках программирования. 🟣 Ruff: как не положить всё, переходя на новые правила? Поговорим про линтеры, форматтеры и подводные камни при переходе на Ruff. 🟣 Секреты успеха змеи в мире пауков. Обсудим, как мы применяли scrapy и playwright в ЮMoney, чтобы создать сервис модерации сайтов. Зарегистрируйтесь, чтобы принять участие. Все подробности — на сайте митапа Питоняшки 🔥