Skip to content

About

Интерактивная платформа изучения Python и CPython internals: песочница запуска кода с таймаутом, Monaco Editor, pip venv, перехват графиков и автогрейдер.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

19 Commits

Folders and files

Repository files navigation

🐍 Python Deep Dive Lab

Интерактивная веб-платформа для глубокого изучения Python от базовых основ до экспертного уровня CPython internals с реальным выполнением кода, файловым менеджером, установкой pip-библиотек и многоуровневой системой подсказок.

GitHub FastAPI React Monaco Editor Tailwind CSS


✨ Ключевые возможности

1. ⚡ Реальное выполнение кода (Execution Engine)

  • Выполнение Python скриптов прямо в изолированном виртуальном окружении подпроцесса.
  • Захват stdout, stderr, кода возврата, времени выполнения (в миллисекундах).
  • Защита от бесконечных циклов: конфигурируемый асинхронный таймаут (15 сек).
  • Горячие клавиши в редакторе: Ctrl + Enter для запуска, Ctrl + S для сохранения.

2. 📁 Полноценный файловый менеджер (Multi-file Workspace)

  • Создание файлов (.py, .json, .txt, .md) и вложенных папок.
  • Вкладки в Monaco Editor для одновременной работы с несколькими файлами.
  • Поддержка взаимных импортов: создавайте свои модули (например, from math_utils import fibonacci) и используйте их в main.py!
  • Переименование, удаление и безопасная валидация путей (защита от directory traversal).
  • Быстрый сброс к начальным шаблонам при необходимости.

3. 📦 Менеджер пакетов Pip (Isolated Venv)

  • Встроенный графический менеджер пакетов pip install и pip uninstall.
  • Установка любых сторонних библиотек: numpy, pandas, matplotlib, rich, requests, pydantic, scipy, aiohttp, pytest и других.
  • Список установленных пакетов в виртуальном окружении с версиями.
  • Каталог рекомендованных библиотек с установкой в 1 клик и ссылками на официальную документацию.
  • Лог операций Pip в реальном времени.

4. 📊 Автоматический перехват графиков (Matplotlib Visualizer)

  • Автоматический перехват вызовов plt.show() или plt.savefig() без открытия GUI-окон.
  • Отображение построенных графиков и диаграмм прямо во вкладке Графика (Plots) с возможностью скачивания PNG.

5. 💡 Многоуровневая система подсказок (Progressive Hints)

Для каждого практического задания предусмотрена 3-уровневая система подсказок, которая открывается пошагово:

  1. Уровень 1 (Концептуальная наводка): направление мысли и архитектурный ориентир без спойлеров.
  2. Уровень 2 (Алгоритм и структура): псевдокод, рекомендуемые функции стандартной библиотеки и обработка краевых случаев.
  3. Уровень 3 (Точный код): сигнатуры функций, ключевые выражения и синтаксические конструкции.
  4. Эталонное решение (Verified Solution): защищенная модалка с подтверждением («Точно открыть?»), эталонный код с комментариями, анализом временной сложности $O(N)$ и кнопкой «Вставить в редактор».

6. 🧪 Автоматический грейдер (Test Runner)

  • Проверка кода учащегося по наборам автоматических unit-тестов с декоратором @pydeep_test.
  • Детальный отчет: статус прохождения каждого теста, время выполнения, сравнение ожидаемого и фактического результатов, трассировка ошибок.
  • Праздничный салют (confetti) при успешной сдаче всех тестов!
  • Сохранение прогресса решенных задач в локальном хранилище браузера.

7. 🧪 Свободная песочница (Sandbox Mode)

  • Мгновенное переключение между режимом структурированного обучения и свободной песочницей для любых исследовательских задач, экспериментов с данными или прототипирования.

📚 Программа курса (10 глубоких модулей)

  1. Модуль 1: Ядро Python и Модель Памяти
    • 1.1. Ссылочная модель: id(), is vs ==, изменяемость типов, ловушка дефолтных аргументов.
    • 1.2. Области видимости LEGB, ключевые слова global/nonlocal и анатомия замыканий (Closures).
  2. Модуль 2: Коллекции и Внутренности Хеш-таблиц
    • 2.1. Compact Dict в CPython, открытая адресация, контракт __hash__ и __eq__.
    • 2.2. Сложность операций: collections.deque vs list при скользящем окне за $O(1)$.
  3. Модуль 3: Глубокое ООП, Dunder-протоколы и MRO
    • 3.1. Линеаризация C3 MRO при множественном наследовании и кооперативный super().
    • 3.2. Внутреннее устройство __slots__: оптимизация памяти экземпляров и устранение __dict__.
  4. Модуль 4: Итераторы, Генераторы и Потоковая обработка
    • 4.1. Протокол итератора: __iter__, __next__, StopIteration и ленивый ChunkIterator.
    • 4.2. Конструкция yield from и корутины генераторов с двусторонней связью через .send().
  5. Модуль 5: Декораторы, Метаданные и Контекстные менеджеры
    • 5.1. Трехуровневые параметризованные декораторы с сохранением сигнатур через functools.wraps.
    • 5.2. Протокол контекстного менеджера __enter__/__exit__, авто-откат транзакций и подавление исключений.
  6. Модуль 6: Асинхронный Python (Asyncio)
    • 6.1. Событийный цикл (Event Loop), конкурентный запуск корутин через asyncio.gather.
    • 6.2. Ограничение конкурентности и троттлинг сетевых запросов через asyncio.Semaphore.
  7. Модуль 7: Метапрограммирование, Дескрипторы и Метаклассы
    • 7.1. Протокол дескрипторов (__get__, __set__, __set_name__), Data vs Non-Data дескрипторы.
    • 7.2. Декларативная авторегистрация плагинов через __init_subclass__ (PEP 487).
  8. Модуль 8: Внутренности CPython, Байткод и Управление Памятью
    • 8.1. Дизассемблирование байткода CPython: стек виртуальной машины и модуль dis.
    • 8.2. Подсчет ссылок (refcount), циклический сборщик мусора gc и слабые ссылки weakref.
  9. Модуль 9: Статическая Типизация, Protocol и Generics
    • 9.1. Структурная подтипизация: typing.Protocol и @runtime_checkable (статический duck-typing).
    • 9.2. Обобщенные типы Generic[T, E], TypeVar и паттерн безопасной обработки ошибок Result[T, E].
  10. Модуль 10: Продакшн Инженерия, GIL и Оптимизация
    • 10.1. Преодоление GIL: ThreadPoolExecutor vs ProcessPoolExecutor (I/O-bound vs CPU-bound).
    • 10.2. Алгоритмическая оптимизация и анализ сложности: переход от $O(N^2)$ к $O(N)$ с бенчмарками.

🚀 Быстрый запуск

Требования

  • Python 3.11+
  • Node.js и pnpm

1. Клонирование репозитория

git clone https://github.com/ArtemChik103/python-deep-dive-lab.git
cd python-deep-dive-lab

2. Запуск в 1 команду

  • На Windows (PowerShell):
    ./scripts/start.ps1
  • На Windows (CMD / Двойной клик):
    scripts\start.bat

Сервер автоматически соберет статику фронтенда и откроет доступ к веб-интерфейсу по адресу: 👉 http://localhost:8000

Режим разработки (Concurrent Dev)

Если вы хотите разрабатывать фронтенд с мгновенной перезагрузкой (Vite HMR):

  • В первом терминале (бэкенд):
    python backend/run.py
  • Во втором терминале (фронтенд):
    cd frontend
    pnpm dev

Фронтенд будет доступен на http://localhost:5173 с автоматическим проксированием запросов /api на бэкенд localhost:8000.


🧪 Запуск тестов

Для запуска набора автоматических тестов API, грейдера и файловой системы:

python -m pytest backend/tests/test_app.py -v

🏗 Архитектура проекта

python-deep-dive-lab/
├── backend/
│   ├── app/
│   │   ├── api/                # FastAPI маршруты (curriculum, execution, files, packages)
│   │   ├── core/               # Ядро исполнения: runner, grader, venv_manager, file_manager
│   │   ├── data/curriculum/    # 10 модулей с глубокими уроками, тестами, подсказками и решениями
│   │   ├── user_workspace/     # Рабочая директория пользователя для файлов и скриптов
│   │   ├── config.py           # Конфигурация и пути
│   │   └── main.py             # Точка входа FastAPI и раздача SPA
│   ├── tests/                  # Автоматические тесты pytest
│   ├── requirements.txt
│   └── run.py                  # Скрипт запуска uvicorn
├── frontend/
│   ├── src/
│   │   ├── components/
│   │   │   ├── Layout/         # Верхняя панель TopNavbar
│   │   │   ├── Sidebar/        # Дерево курса, проводник файлов, pip менеджер
│   │   │   ├── Editor/         # Редактор кода Monaco Editor с вкладками
│   │   │   ├── Lesson/         # Теория, пошаговые подсказки, модалка решений
│   │   │   └── Output/         # Терминал вывода, результаты тестов, графики, логи pip
│   │   ├── api/                # Типизированный HTTP-клиент
│   │   ├── types/              # Описания типов TypeScript
│   │   ├── App.tsx             # Корневой компонент приложения
│   │   └── index.css           # Tailwind стили и кастомный темный скроллбар
│   ├── dist/                   # Собранный бандл для раздачи через бэкенд
│   ├── package.json
│   └── vite.config.ts
├── scripts/
│   ├── start.ps1               # Запуск для PowerShell
│   └── start.bat               # Запуск для CMD
└── README.md

📄 Лицензия

MIT License.

About

Интерактивная платформа изучения Python и CPython internals: песочница запуска кода с таймаутом, Monaco Editor, pip venv, перехват графиков и автогрейдер.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages