Metadata-Version: 2.4
Name: wilgelmzwerege
Version: 0.3.5
Summary: Personal EGE informatics templates by Wilgelmzwer
Author: Ivan Kulavsky
License-Expression: MIT
Keywords: ege,informatics,templates,education,python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Classifier: Topic :: Education
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: openpyxl>=3.1.0
Dynamic: license-file

# wilgelmzwerege

`wilgelmzwerege` — личная Python-библиотека шаблонов для решения задач ЕГЭ по информатике. Создана для экспериментов. По возникающим вопросам можно никуда не писать или ищите автора по названию библиотеки и пишите ему на почту.

Основная идея проекта: быстрые локальные шаблоны + личный AI-режим через приватный сервер Wege AI. Локальные шаблоны работают без интернета, без токена и без обращения к ИИ.

Актуальная версия этого архива: `0.3.5`.

## Возможности

- шаблоны решений ЕГЭ №1–27;
- запуск из Python и из консоли;
- поиск по шаблонам;
- сохранение шаблона в файл;
- AI-запрос по тексту;
- AI-запрос с локальным файлом данных;
- OCR/отладка распознавания условия по изображению;
- AI-запрос по изображению/скриншоту;
- AI-запрос по изображению и одному файлу данных;
- AI-запрос по изображению и нескольким файлам данных, например для ЕГЭ №27 с файлами A и B.

## Установка

```bash
pip install wilgelmzwerege
```

Обновление:

```bash
pip install --upgrade wilgelmzwerege
```

На Windows иногда удобнее запускать не командой `wege`, а через модуль:

```bash
python -m wilgelmzwerege list
python -m wilgelmzwerege ege13
```

## Локальные шаблоны

### Python

```python
from wilgelmzwerege import wege

wege("ege13")
wege("ege24")
wege("ege27")
```

Функция `wege()` печатает шаблон на экран. Поэтому обычно не нужно писать `print(wege("ege13"))`, иначе после шаблона дополнительно появится `None`.

### Консоль

```bash
python -m wilgelmzwerege list
python -m wilgelmzwerege ege13
python -m wilgelmzwerege show ege24
python -m wilgelmzwerege save ege24
python -m wilgelmzwerege search ip
python -m wilgelmzwerege info ege13
python -m wilgelmzwerege version
```

Если команда `wege` доступна в `PATH`, можно короче:

```bash
wege list
wege ege13
wege search ip
```

## AI-режим по тексту

AI-режим требует личный токен доступа к приватному серверу Wege AI.

### Python

```python
from wilgelmzwerege import wegeii

wegeii("ваш_токен", "Реши задачу ЕГЭ по информатике")
```

С явным типом задания:

```python
from wilgelmzwerege import wegeii

wegeii("ваш_токен", "ege24", "Реши задачу №24")
```

Получить ответ как строку:

```python
from wilgelmzwerege import wegeii

answer = wegeii(
    "ваш_токен",
    "Реши задачу ЕГЭ по информатике",
    print_answer=False,
)

print(answer)
```

### Консоль

```bash
python -m wilgelmzwerege ai ваш_токен "Реши задачу ЕГЭ по информатике"
python -m wilgelmzwerege ai ваш_токен --task ege24 "Реши задачу №24"
```

## AI-режим с локальным файлом данных

Подходит для задач, где есть `.txt`, `.csv`, `.xlsx` или другой файл данных.

### Python

```python
from wilgelmzwerege import wegeii

wegeii(
    "ваш_токен",
    "Реши задачу 24 по приложенному файлу",
    file_path="24.txt",
    task_type="ege24",
)
```

Старый короткий стиль тоже поддерживается:

```python
from wilgelmzwerege import wegeii

wegeii("ваш_токен", "ege24", "Реши задачу 24", file_path="24.txt")
```

### Консоль

```bash
python -m wilgelmzwerege ai-file ваш_токен 24.txt "Реши задачу 24 по файлу"
python -m wilgelmzwerege ai-file ваш_токен 24.txt --task ege24 "Реши задачу 24 по файлу"
```

## OCR: отладка распознавания изображения

Команда `debug-ocr` нужна, чтобы посмотреть, как сервер распознал текст условия.

```bash
python -m wilgelmzwerege debug-ocr ваш_токен task.png
```

Для скрина с таблицей можно включить табличную OCR-модель:

```bash
python -m wilgelmzwerege debug-ocr ваш_токен table.png --table
```

В Python:

```python
from wilgelmzwerege import wegeii_ocr

wegeii_ocr("ваш_токен", "task.png")
wegeii_ocr("ваш_токен", "table.png", ocr_model="table")
```

## AI по изображению/скриншоту

Подходит, если условие задачи на картинке или скриншоте.

### Python

```python
from wilgelmzwerege import wegeii_image

wegeii_image("ваш_токен", "task.png")
wegeii_image("ваш_токен", "ege26", "task.png")
wegeii_image("ваш_токен", "task.png", "Реши задачу, дай Python-код")
```

Можно явно указать тип задания и обойти кэш при тестировании:

```python
from wilgelmzwerege import wegeii_image

wegeii_image(
    "ваш_токен",
    "task.png",
    task_type="ege26",
    fresh=True,
)
```

### Консоль

```bash
python -m wilgelmzwerege ai-image ваш_токен task.png
python -m wilgelmzwerege ai-image ваш_токен task.png --task ege26
python -m wilgelmzwerege ai-image ваш_токен task.png "Реши задачу, дай код"
python -m wilgelmzwerege ai-image ваш_токен task.png --task ege26 --fresh
```

## AI по изображению и одному файлу

Подходит для задач №24, №26 и других, где условие на скрине, а данные в отдельном файле.

### Python

```python
from wilgelmzwerege import wegeii_image_file

wegeii_image_file("ваш_токен", "task.png", "26-174.txt")
wegeii_image_file("ваш_токен", "ege26", "task.png", "26-174.txt")
```

С параметрами:

```python
from wilgelmzwerege import wegeii_image_file

wegeii_image_file(
    "ваш_токен",
    "task.png",
    "26-174.txt",
    task_type="ege26",
    fresh=True,
)
```

### Консоль

```bash
python -m wilgelmzwerege ai-image-file ваш_токен task.png 26-174.txt
python -m wilgelmzwerege ai-image-file ваш_токен task.png 26-174.txt --task ege26
python -m wilgelmzwerege ai-image-file ваш_токен task.png 26-174.txt --task ege26 --fresh
```

## AI по изображению и нескольким файлам

Главный пример — ЕГЭ №27, где есть файл A и файл B.

### Python

```python
from wilgelmzwerege import wegeii_image_files

wegeii_image_files(
    "ваш_токен",
    "task27.png",
    ["27_A.txt", "27_B.txt"],
    task_type="ege27",
)
```

С новым стилем:

```python
from wilgelmzwerege import wegeii_image_files

wegeii_image_files(
    "ваш_токен",
    "ege27",
    "task27.png",
    ["27_A.txt", "27_B.txt"],
    fresh=True,
)
```

### Консоль

```bash
python -m wilgelmzwerege ai-image-files ваш_токен task27.png 27_A.txt 27_B.txt --task ege27
python -m wilgelmzwerege ai-image-files ваш_токен task27.png 27_A.txt 27_B.txt --task ege27 --fresh
```

Если нужен дополнительный запрос, его можно добавить после файлов:

```bash
python -m wilgelmzwerege ai-image-files ваш_токен task27.png 27_A.txt 27_B.txt --task ege27 --fresh "Реши строго, не выдумывай разделители"
```

## Флаги CLI

`--task ege24` — явно сообщает серверу тип задания. Поддерживаются `ege1`–`ege27`, а также `ege19`, `ege20`, `ege21`, которые приводятся к `ege192021`.

`--fresh` — добавляет уникальную метку в запрос, чтобы при тестировании не получить старый ответ из серверного кэша.

`--table` — использует табличную OCR-модель для скринов с таблицами.

`--page` — явно использует обычную OCR-модель страницы.

## Список шаблонов

Библиотека покрывает задания:

```text
ege1, ege2, ege3, ege4, ege5, ege6, ege7, ege8, ege9,
ege10, ege11, ege12, ege13, ege14, ege15, ege16, ege17,
ege18, ege192021, ege22, ege23, ege24, ege25, ege26, ege27
```

Для заданий 19–21 используется общий шаблон:

```bash
python -m wilgelmzwerege ege192021
```

Также доступны алиасы:

```bash
python -m wilgelmzwerege ege19
python -m wilgelmzwerege ege20
python -m wilgelmzwerege ege21
```

## Безопасность

YandexGPT API key и OCR key не хранятся внутри библиотеки. Клиентский пакет отправляет запрос на приватный сервер автора, а сервер уже обращается к YandexGPT/OCR.

Не публикуйте личные токены Wege AI в открытых репозиториях, скриншотах и логах.

## Проверка установки

```bash
python -m wilgelmzwerege version
python -m wilgelmzwerege help
python -m wilgelmzwerege list
python -m wilgelmzwerege ege13
```

Ожидаемо:

```text
wilgelmzwerege 0.3.5
```

## Для разработки

Проверка компиляции:

```bash
python -m compileall -q wilgelmzwerege
```

Сборка пакета:

```bash
python -m build
python -m twine check dist/*
```

Публикация на PyPI выполняется только после локальной проверки:

```bash
python -m twine upload dist/*
```
