Конвертер Python ↔ Jupyter Notebook
Project description
Конвертер Python ↔ Jupyter Notebook
Этот инструмент автоматически конвертирует Python файлы в Jupyter ноутбуки и наоборот.
✨ Основные возможности
- 🔄 Двунаправленная конвертация: py ↔ ipynb
- 📝 Поддержка markdown: автоматическое распознавание комментариев как markdown ячеек
- 📊 Структурирование кода: функции и классы в отдельных ячейках
- 🔗 Многофайловое слияние: объединение нескольких файлов в один
- ⚡ Взаимообратимость: конвертация туда-обратно сохраняет исходную структуру
Логика конвертации
Python → Jupyter (.py → .ipynb)
- Заголовочные комментарии
""" # заголовок # """становятся markdown ячейками заголовков - Многострочные комментарии
r"""..."""и"""..."""становятся markdown ячейками - Функции и классы становятся отдельными code ячейками
- Остальной код группируется в code ячейки
- Docstring'и внутри функций/классов остаются частью кода
- Обычные Python комментарии
# текстостаются обычными комментариями
Jupyter → Python (.ipynb → .py)
- Markdown ячейки заголовки
# заголовок #→ заголовочные комментарии""" # заголовок # """ - Markdown ячейки с
\символами → комментарии с префиксомr"""...""" - Обычные markdown ячейки → многострочные комментарии
"""...""" - Code ячейки остаются как обычный Python код
- Каждая ячейка отделяется пустой строкой
- Outputs игнорируются
🚀 Использование
Справка
# Подробная справка с примерами
py2jupyter --help
py2jupyter -h
# Краткая справка
py2jupyter
Базовая конвертация
# Python → Jupyter (автоматическое имя выходного файла)
py2jupyter script.py
# Python → Jupyter (указанное имя)
py2jupyter script.py notebook.ipynb
# Python → Jupyter (автоматическое расширение)
py2jupyter script.py output # → создаст output.ipynb
# Jupyter → Python (автоматическое имя)
py2jupyter notebook.ipynb
# Jupyter → Python (автоматическое расширение)
py2jupyter notebook.ipynb output # → создаст output.py
Многофайловое слияние
# Объединение нескольких Python файлов в один Notebook
py2jupyter script1.py script2.py script3.py combined.ipynb
# Объединение нескольких Notebook в один Python файл
py2jupyter notebook1.ipynb notebook2.ipynb merged.py
Примечания:
- При многофайловом слиянии выходной файл обязательно должен быть указан
- Если расширение выходного файла не указано, оно определяется автоматически (.py → .ipynb, .ipynb → .py)
📋 Правила оформления
Для правильной конвертации Python файлов в Jupyter ноутбуки следуйте правилам оформления, описанным в файле PY_FORMAT_RULES.md или скажите своей LLM следовать им.
Гарантируется, что для файлов, оформленных согласно правилам оформления, конвертация будет обратимой, то есть конвертация туда-обратно не будет менять код.
📋 Примеры
Входной Python файл:
""" # Моделирование физической системы # """
"""
Этот скрипт демонстрирует расчет энергии.
Формула: $E = \frac{1}{2}mv^2 + \frac{1}{2}kx^2$
"""
#!pip install matplotlib
#%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
def calculate_energy(x, v, m=1.0, k=100.0):
"""Расчет полной энергии системы (это docstring)"""
kinetic = 0.5 * m * v**2
potential = 0.5 * k * x**2
return kinetic + potential
r"""
Раздел с анализом (содержит \ символы).
Интеграл: $\int_0^1 x^2 dx = \frac{1}{3}$
"""
""" # Параметры системы # """
# Обычный Python комментарий остается как есть
x0 = 0.1 # начальное смещение
v0 = 0.0 # начальная скорость
Результат конвертации в Jupyter:
- Cell 0 (markdown):
# Моделирование физической системы # - Cell 1 (markdown): Описание с LaTeX формулой
- Cell 2 (code):
import numpy as npиimport matplotlib.pyplot as plt - Cell 3 (code):
%matplotlib inline - Cell 4 (code):
! pip install seaborn - Cell 5 (code): Функция
calculate_energyс docstring - Cell 6 (markdown): Раздел с анализом и интегралом
- Cell 7 (markdown):
# Параметры системы # - Cell 8 (code): Комментарии и инициализация переменных
Результат обратной конвертации:
""" # Моделирование физической системы # """
"""
Этот скрипт демонстрирует расчет энергии.
Формула: $E = \frac{1}{2}mv^2 + \frac{1}{2}kx^2$
"""
# ... код функций ...
#%matplotlib inline
#!pip install seaborn
r"""
Раздел с анализом (содержит \ символы).
Интеграл: $\int_0^1 x^2 dx = \frac{1}{3}$
"""
""" # Параметры системы # """
Умное определение префиксов: ячейки с
\символами получают префиксr, остальные - нет
⚙️ Технические особенности
- ✅ UTF-8 кодировка: полная поддержка Unicode
- ✅ Сохранение структуры: функции и классы остаются читаемыми
- ✅ Умное распознавание: автоматическое определение типов ячеек
- ✅ Масштабируемость: работа с большими файлами (1000+ строк)
- ✅ Взаимообратимость: минимальные изменения при полном цикле конвертации
- ✅ Совместимость: поддержка Python 3.7+, адаптация под новые версии AST
- ✅ Автоматические расширения: умное определение .py/.ipynb при отсутствии расширения
- ✅ Заголовочные комментарии: специальный формат
""" # заголовок # """для четких заголовков - ✅ Умные префиксы: автоматическое определение
rна основе наличия\символов - ✅ Универсальные комментарии: поддержка как
r"""...""", так и обычных"""...""" - ✅ Очистка пустых строк: автоматическое удаление пустых строк в начале и конце code ячеек
- ✅ Разделение по пустым строкам: автоматическое разделение больших блоков кода на меньшие ячейки при наличии двух и более пустых строк подряд (только на уровне нулевого отступа)
- ✅ Поддержка magic команд: автоматическая конвертация между
#%commandв .py и magic ячейками в .ipynb - ✅ Поддержка shell команд: автоматическая конвертация между
#!commandв .py и shell ячейками в .ipynb - ✅ Встроенная справка: подробная документация через
--helpс примерами и форматами
🔧 Требования
- Python 3.7+
- Стандартные библиотеки:
ast,json,pathlib
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py2jupyter-0.2.0.tar.gz.
File metadata
- Download URL: py2jupyter-0.2.0.tar.gz
- Upload date:
- Size: 463.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc9ef1d4be14447bdd622efe31b7ec8770c3f766d36943844478ec7468329871
|
|
| MD5 |
1d136f63abbc1d82084d8eb273857384
|
|
| BLAKE2b-256 |
c1ef898e5e356c57f9eb1c03a83f66b1e9e8b796c950743db2f7dd93661c5d91
|
File details
Details for the file py2jupyter-0.2.0-py3-none-any.whl.
File metadata
- Download URL: py2jupyter-0.2.0-py3-none-any.whl
- Upload date:
- Size: 13.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e04ff8e6aee3ac904ca39a93a971f5d9ea8b9eb069bb88054088658a4ac4748b
|
|
| MD5 |
9e5df0f5e1ff9f2cd18fc2026ab10e34
|
|
| BLAKE2b-256 |
24043ab2ce459e4108ad23c27f3450fc5e28d8d7e6f7acf3939ddf0f6624a9ce
|