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.

Проверка полноты

Для проверки, все ли термины переведены, используйте скрипт:

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 или создайте свой файл и импортируйте его в транспилятор.

Q: Как добавить поддержку нового языка?
A: Создайте отдельный словарь (например, ruspy_dict_ua.py) и добавьте опцию выбора словаря в CLI.

Q: Как проверить, что всё работает?
A: Запустите автоматические тесты или используйте команду ruspy --stats для анализа замен.

Q: Как интегрировать с редактором?
A: Смотрите раздел "Интеграция с редакторами" выше.


История изменений (Changelog)

  • 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.0.tar.gz (18.0 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.0-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

Details for the file ruspy_transpiler-0.2.0.tar.gz.

File metadata

  • Download URL: ruspy_transpiler-0.2.0.tar.gz
  • Upload date:
  • Size: 18.0 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.0.tar.gz
Algorithm Hash digest
SHA256 8b0b18022cea84bd100eb56ba550e9f9984457ad8f7a53d840a25d668ddc1d2f
MD5 5214b2bd7ed5bdb5ff1162035cd4ae01
BLAKE2b-256 fa64964819b6a8f74301b41f13a0afe6adb664b00643d148c5b5dfa63b61f8db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruspy_transpiler-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 59fc8f750a4c266931c606fd751003b07497b39cbe0fe9c595edabde3204798b
MD5 2b7c4bd5a3b6fc2cadf3a0a93996efe9
BLAKE2b-256 3138493a514a93c0a58f16e59677d199d6513745d51150d44908209f0a654eaa

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