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

Uploaded Python 3

File details

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

File metadata

  • Download URL: ruspy_transpiler-0.2.1.tar.gz
  • Upload date:
  • Size: 18.1 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.1.tar.gz
Algorithm Hash digest
SHA256 5794ca2e92eac9e27330fc1a23115e90243861ffe27c7058adf893269fa7cf4a
MD5 cc458539cc2b65471a2e5e25b7f6d5f4
BLAKE2b-256 744725e8959d1e8018fe7cf7cc7c2d5cf3f0c271200cfd4117b80be9d012baee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruspy_transpiler-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5ef8e084cf5848bb79107035a5b4929dab863df59e4e8668428c1d707d2e1dfb
MD5 64adc64eae718ea020b3dddf81e7f7e1
BLAKE2b-256 83fd2ee7c1a6df7beaa2739fa305400fed90ab8d8170accee731c92158dee79d

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