Транспилятор русского Python: пишите код на русском, получайте стандартный Python!
Project description
Русский Python (ruspy-transpiler)
Транспилятор, позволяющий писать Python-код с русскими ключевыми словами, функциями и идентификаторами.
Установка
- Склонируйте репозиторий или скачайте исходный код.
- Перейдите в папку проекта и установите пакет локально:
pip install .
или для разработки:pip install -e .
Структура проекта
ruspy/— основной пакетtranspiler.py— логика транспиляцииruspy_dict.py— официальный словарь (ключевые слова, функции, технические термины)ruspy_user_dict.py— пользовательский словарь (ваши идентификаторы и сообщения)cli.py— CLI-интерфейс
setup.py— файл для установкиtest_ruspy.py— пример кода на русском синтаксисе
Использование
Через CLI
ruspy test_ruspy.py -o test_ruspy_out.py
или
python -m ruspy.cli test_ruspy.py -o test_ruspy_out.py
test_ruspy.py— ваш файл с русским синтаксисом.test_ruspy_out.py— результат на стандартном Python.
Как библиотека
from ruspy.transpiler import transpile_file
transpile_file('test_ruspy.py', 'test_ruspy_out.py')
Новые команды CLI
# Пакетная обработка всех .py файлов в папке
ruspy --batch batch_test batch_out
# Статистика замен по словарям для файла
ruspy --stats test_ruspy.py
# Проверка словарей на дубли и пустые значения
ruspy --check-dict
Интеграция с редакторами
VS Code
- Откройте папку проекта в VS Code.
- В каталоге .vscode уже есть tasks.json для задачи "Ruspy Transpile".
- Для запуска транспиляции нажмите Ctrl+Shift+B или выберите задачу "Ruspy Transpile" в палитре команд.
- Для автоматической транспиляции при сохранении установите расширение "Run on Save" и добавьте в settings.json:
"runOnSave.commands": [ { "match": "\\.py$", "command": "workbench.action.tasks.runTask", "args": "Ruspy Transpile" } ]
PyCharm
- Откройте File → Settings → Tools → File Watchers.
- Нажмите "+" → Custom.
- Заполните:
- Name: Ruspy Transpile
- File type: Python
- Program: путь до ruspy.exe (например, venv\Scripts\ruspy.exe)
- Arguments: $FileName$ -o $FileNameWithoutExtension$_out.py
- Working directory: $ProjectFileDir$
- Включите "Auto-save edited files to trigger the watcher".
- Сохраните настройки.
Теперь транспиляция будет запускаться автоматически при сохранении .py-файла!
Автоматические тесты
В проекте есть папка tests/ с примерами тестов на pytest. Для запуска тестов:
pytest tests
# или
python -m pytest tests
Тесты проверяют корректность транспиляции и пакетной обработки файлов.
Расширение словарей
- Для добавления новых переводов ключевых слов и функций — редактируйте
ruspy_dict.py(официальный словарь, только ключевые слова, стандартные функции и технические термины). - Для пользовательских идентификаторов и сообщений — используйте
ruspy_user_dict.py(сюда попадают только ваши переменные, функции, сообщения и т.д.).
Автоматическое обновление пользовательского словаря
Чтобы добавить новые пользовательские идентификаторы автоматически:
- Просто напишите новые идентификаторы на русском в вашем
.py-файле. - Запустите:
python ruspy/trans_user_dict.py ваш_файл.py
Новые слова будут автоматически найдены в коде, переведены и добавлены вruspy_user_dict.py. Уже существующие идентификаторы не будут затёрты, а новые просто добавятся.
Проверка полноты
Для проверки, все ли термины переведены, используйте скрипт:
python check_ruspy_dict.py
Список поддерживаемых ключевых слов и функций
Полный список — в файле ruspy_dict.py. Можно вывести через команду:
python -c "from ruspy.ruspy_dict import RUSPY_DICT; print(list(RUSPY_DICT.keys()))"
Примеры кода
Русский синтаксис (test_ruspy.py)
функция приветствие(имя):
печать('Привет,', имя)
если __имя__ == '__главный__':
имя = ввод('Введите имя: ')
приветствие(имя)
После транспиляции (test_ruspy_out.py)
def greeting(name):
print('Hello,', name)
if __name__ == '__main__':
name = input('Enter name: ')
greeting(name)
Документация и ресурсы
Быстрый запуск через Docker
docker build -t ruspy .
docker run --rm -v %cd%:/app ruspy ruspy test_ruspy.py -o test_ruspy_out.py
Публикация своего пакета
- Измените имя пакета в
pyproject.toml. - Соберите и опубликуйте пакет:
python -m build twine upload dist/*
Лицензия
MIT License. См. файл LICENSE.
Контакты
- GitHub Issues: https://github.com/c1cada3301-web/ruspy/issues
- Email: shtrnv@ya.ru
- Telegram: @cicada_web
Благодарности
Спасибо всем авторам идей, тестировщикам и вдохновителям! А особенно @mcodeg, его Tik-Tok: https://www.tiktok.com/@mcodeg_
FAQ
Q: Можно ли использовать свои словари?
A: Да, просто добавьте нужные пары в ruspy_user_dict.py или создайте свой файл и импортируйте его в транспилятор.
Официальный словарь (ruspy_dict.py) содержит только ключевые слова и стандартные функции, пользовательский (ruspy_user_dict.py) — только ваши идентификаторы.
Пользовательский словарь теперь можно автоматически обновлять из любого .py-файла с русским кодом командой:
python ruspy/trans_user_dict.py ваш_файл.py
Q: Как добавить поддержку нового языка?
A: Создайте отдельный словарь (например, ruspy_dict_ua.py) и добавьте опцию выбора словаря в CLI.
Q: Как проверить, что всё работает?
A: Запустите автоматические тесты или используйте команду ruspy --stats для анализа замен.
Q: Как интегрировать с редактором?
A: Смотрите раздел "Интеграция с редакторами" выше.
История изменений (Changelog)
- v0.2.3 — Автоматическое обновление пользовательского словаря из
.py-файла с русским кодом (теперь не нужен отдельный файл-список, всё ищется и переводится автоматически) - v0.1.2 — Расширенный CLI, интеграция с редакторами, автоматические тесты, Dockerfile, README.md
- v0.1.0 — Первый релиз
Проект в стадии разработки. Приветствуются идеи и pull request'ы!
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 ruspy_transpiler-0.2.3.tar.gz.
File metadata
- Download URL: ruspy_transpiler-0.2.3.tar.gz
- Upload date:
- Size: 19.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 |
4bb2cc80b9c5baccb1b3cc5a2de51c47d648cddd81b1165abe90c7b27aa5808f
|
|
| MD5 |
3805aa10034585a734d293cea9d12c1f
|
|
| BLAKE2b-256 |
8030b1a5829097da552ab107596933bba121e8e2b6312aeb1912a8b04ff9b864
|
File details
Details for the file ruspy_transpiler-0.2.3-py3-none-any.whl.
File metadata
- Download URL: ruspy_transpiler-0.2.3-py3-none-any.whl
- Upload date:
- Size: 18.6 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 |
0f257e8b0a145dea6dda065a39433a5f68d10b6fc9f1e6c46e5e15738024ff5b
|
|
| MD5 |
cc9a0deebf86d0faf2687139efad2988
|
|
| BLAKE2b-256 |
95fb770044e5da8e707a755477176cbb1622646f66742d5c27a333d65cc57a59
|