Skip to main content

Транспилятор русского Python: пишите код на русском, получайте стандартный Python!

Project description

PyPI Build Coverage Lint

Русский Python (ruspy-transpiler)

Транспилятор, позволяющий писать Python-код с русскими ключевыми словами, функциями и идентификаторами.


Установка

  1. Склонируйте репозиторий или скачайте исходный код.
  2. Перейдите в папку проекта и установите пакет локально:
    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

  1. Откройте папку проекта в VS Code.
  2. В каталоге .vscode уже есть tasks.json для задачи "Ruspy Transpile".
  3. Для запуска транспиляции нажмите Ctrl+Shift+B или выберите задачу "Ruspy Transpile" в палитре команд.
  4. Для автоматической транспиляции при сохранении установите расширение "Run on Save" и добавьте в settings.json:
    "runOnSave.commands": [
        {
       	 "match": "\\.py$",
       	 "command": "workbench.action.tasks.runTask",
       	 "args": "Ruspy Transpile"
        }
    ]
    

PyCharm

  1. Откройте File → Settings → Tools → File Watchers.
  2. Нажмите "+" → Custom.
  3. Заполните:
    • Name: Ruspy Transpile
    • File type: Python
    • Program: путь до ruspy.exe (например, venv\Scripts\ruspy.exe)
    • Arguments: $FileName$ -o $FileNameWithoutExtension$_out.py
    • Working directory: $ProjectFileDir$
  4. Включите "Auto-save edited files to trigger the watcher".
  5. Сохраните настройки.

Теперь транспиляция будет запускаться автоматически при сохранении .py-файла!


Автоматические тесты

В проекте есть папка tests/ с примерами тестов на pytest. Для запуска тестов:

pytest tests
# или
python -m pytest tests

Тесты проверяют корректность транспиляции и пакетной обработки файлов.


Расширение словарей

  • Для добавления новых переводов ключевых слов и функций — редактируйте ruspy_dict.py (официальный словарь, только ключевые слова, стандартные функции и технические термины).
  • Для пользовательских идентификаторов и сообщений — используйте ruspy_user_dict.py (сюда попадают только ваши переменные, функции, сообщения и т.д.).

Автоматическое обновление пользовательского словаря

Чтобы добавить новые пользовательские идентификаторы автоматически:

  1. Просто напишите новые идентификаторы на русском в вашем .py-файле.
  2. Запустите:
    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

Публикация своего пакета

  1. Измените имя пакета в pyproject.toml.
  2. Соберите и опубликуйте пакет:
    python -m build
    twine upload dist/*
    

Лицензия

MIT License. См. файл LICENSE.


Контакты


Благодарности

Спасибо всем авторам идей, тестировщикам и вдохновителям! А особенно @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

ruspy_transpiler-0.2.3.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ruspy_transpiler-0.2.3-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

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

Hashes for ruspy_transpiler-0.2.3.tar.gz
Algorithm Hash digest
SHA256 4bb2cc80b9c5baccb1b3cc5a2de51c47d648cddd81b1165abe90c7b27aa5808f
MD5 3805aa10034585a734d293cea9d12c1f
BLAKE2b-256 8030b1a5829097da552ab107596933bba121e8e2b6312aeb1912a8b04ff9b864

See more details on using hashes here.

File details

Details for the file ruspy_transpiler-0.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for ruspy_transpiler-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0f257e8b0a145dea6dda065a39433a5f68d10b6fc9f1e6c46e5e15738024ff5b
MD5 cc9a0deebf86d0faf2687139efad2988
BLAKE2b-256 95fb770044e5da8e707a755477176cbb1622646f66742d5c27a333d65cc57a59

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page