kortalk 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kortalk-0.4.0/LICENSE +21 -0
- kortalk-0.4.0/PKG-INFO +158 -0
- kortalk-0.4.0/README.md +133 -0
- kortalk-0.4.0/pyproject.toml +49 -0
- kortalk-0.4.0/setup.cfg +4 -0
- kortalk-0.4.0/src/kortalk/__init__.py +7 -0
- kortalk-0.4.0/src/kortalk/__main__.py +4 -0
- kortalk-0.4.0/src/kortalk/app.py +436 -0
- kortalk-0.4.0/src/kortalk/config.py +265 -0
- kortalk-0.4.0/src/kortalk/hotkeys.py +288 -0
- kortalk-0.4.0/src/kortalk/i18n.py +136 -0
- kortalk-0.4.0/src/kortalk/providers.py +243 -0
- kortalk-0.4.0/src/kortalk/settings_dialog.py +487 -0
- kortalk-0.4.0/src/kortalk/theme.py +139 -0
- kortalk-0.4.0/src/kortalk/windows.py +336 -0
- kortalk-0.4.0/src/kortalk.egg-info/PKG-INFO +158 -0
- kortalk-0.4.0/src/kortalk.egg-info/SOURCES.txt +22 -0
- kortalk-0.4.0/src/kortalk.egg-info/dependency_links.txt +1 -0
- kortalk-0.4.0/src/kortalk.egg-info/entry_points.txt +2 -0
- kortalk-0.4.0/src/kortalk.egg-info/requires.txt +7 -0
- kortalk-0.4.0/src/kortalk.egg-info/top_level.txt +1 -0
- kortalk-0.4.0/tests/test_config.py +83 -0
- kortalk-0.4.0/tests/test_i18n.py +37 -0
- kortalk-0.4.0/tests/test_settings_dialog.py +124 -0
kortalk-0.4.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 kortalk contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
kortalk-0.4.0/PKG-INFO
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: kortalk
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: Korvus AI popup: выделенный текст → Claude, OpenAI, локальные модели. Трей, стриминг, два языка.
|
|
5
|
+
Author: kortalk contributors
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/r4ven-me/kortalk
|
|
8
|
+
Keywords: korvus,claude,openai,ollama,clipboard,popup,qt,tray
|
|
9
|
+
Classifier: Environment :: X11 Applications :: Qt
|
|
10
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Topic :: Desktop Environment
|
|
15
|
+
Requires-Python: >=3.9
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
License-File: LICENSE
|
|
18
|
+
Requires-Dist: PySide6>=6.5
|
|
19
|
+
Requires-Dist: anthropic>=0.40
|
|
20
|
+
Requires-Dist: PyYAML>=6.0
|
|
21
|
+
Provides-Extra: test
|
|
22
|
+
Requires-Dist: pytest>=7; extra == "test"
|
|
23
|
+
Requires-Dist: pytest-qt>=4; extra == "test"
|
|
24
|
+
Dynamic: license-file
|
|
25
|
+
|
|
26
|
+
# kortalk
|
|
27
|
+
|
|
28
|
+
**Korvus AI popup** — приложение семейства **korvus** (korserver, korctl, kortalk).
|
|
29
|
+
AI-popup для выделенного текста в духе [Crow Translate](https://crow-translate.github.io/):
|
|
30
|
+
выделили текст мышью → нажали хоткей → у курсора всплыло окошко с ответом ИИ.
|
|
31
|
+
Живёт в трее, стримит ответы, поддерживает несколько провайдеров.
|
|
32
|
+
|
|
33
|
+
## Возможности
|
|
34
|
+
|
|
35
|
+
- **Popup у курсора** — скруглённые углы, Markdown-рендер ответа с подсветкой
|
|
36
|
+
блоков кода, стриминг токенов в реальном времени, выделение/копирование
|
|
37
|
+
текста. Закрывается по клику за пределами окна или `Escape`.
|
|
38
|
+
- **Окно в два столбца** — редактируемый промпт+текст слева, ответ справа,
|
|
39
|
+
выбор провайдера на панели, `Ctrl+Enter` для отправки.
|
|
40
|
+
- **Трей** — приложение резидентно: монохромный ворон (Corvus — символ korvus), ЛКМ = popup
|
|
41
|
+
с выделением, меню с библиотекой промптов, окном, настройками и выходом.
|
|
42
|
+
- **Глобальные хоткеи внутри приложения** — назначаются в настройках
|
|
43
|
+
(по умолчанию `Ctrl+Alt+C` popup, `Ctrl+Alt+W` окно). X11 — прямой
|
|
44
|
+
перехват XGrabKey, Wayland — системный портал GlobalShortcuts.
|
|
45
|
+
Никаких внешних утилит и настройки DE не требуется.
|
|
46
|
+
- **Библиотека промптов** — несколько именованных промптов в настройках;
|
|
47
|
+
промпт по умолчанию для хоткея, любой другой — из подменю трея.
|
|
48
|
+
- **Провайдеры ИИ**:
|
|
49
|
+
- **Claude Code CLI** — через `claude -p`, без API-ключа (по умолчанию);
|
|
50
|
+
- **Anthropic API** — официальный SDK, стриминг (нужен API-ключ);
|
|
51
|
+
- **OpenAI-совместимые API** — OpenAI, **Ollama**, LM Studio, OpenRouter,
|
|
52
|
+
Groq, DeepSeek и любой другой сервис с `/chat/completions` (настраивается
|
|
53
|
+
`base URL` + модель + ключ, для локальных серверов ключ не нужен).
|
|
54
|
+
- **Графические настройки** — промпты, клавиши, тема, шрифт, размеры popup,
|
|
55
|
+
таймауты, менеджер провайдеров с ключами, автозапуск при входе.
|
|
56
|
+
Конфиг — человекочитаемый YAML (`~/.config/kortalk/config.yaml`).
|
|
57
|
+
- **Тема и шрифты** — по умолчанию следует теме окружения (Qt), опционально
|
|
58
|
+
Nord Dark / Nord Light.
|
|
59
|
+
- **Два языка интерфейса** — английский (по умолчанию) и русский:
|
|
60
|
+
Настройки → Общие → Language.
|
|
61
|
+
- **PRIMARY-выделение читается нативно** через Qt — xclip/xsel/wl-clipboard
|
|
62
|
+
больше не нужны. Работает на X11 и Wayland.
|
|
63
|
+
|
|
64
|
+
## Установка
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pipx install kortalk
|
|
68
|
+
kortalk --check # диагностика: провайдеры, трей, PRIMARY-выделение
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Никаких системных пакетов и флагов вроде `--system-site-packages` не
|
|
72
|
+
требуется — Qt (PySide6) ставится из PyPI. Единственная внешняя зависимость —
|
|
73
|
+
[Claude Code CLI](https://docs.claude.com), и только если используете
|
|
74
|
+
провайдер `claude-cli`.
|
|
75
|
+
|
|
76
|
+
> Конфиг хранится в `~/.config/kortalk/config.yaml` и редактируется через
|
|
77
|
+
> настройки (или руками). Конфиги прежних версий (toml/ini) не используются.
|
|
78
|
+
|
|
79
|
+
## Использование
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
kortalk # запустить демона (трей + хоткеи)
|
|
83
|
+
kortalk --popup # popup у курсора (для скриптов/сторонних хоткеев)
|
|
84
|
+
kortalk "Переведи на английский:" # popup с разовым промптом
|
|
85
|
+
kortalk --window # окно в два столбца (алиас: --split)
|
|
86
|
+
kortalk --provider ollama # разовый запрос через конкретный провайдер
|
|
87
|
+
kortalk --settings # настройки
|
|
88
|
+
kortalk --quit # завершить работающий экземпляр
|
|
89
|
+
kortalk --check # диагностика
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Основной сценарий: `kortalk` запускает демона, дальше всё делается из трея
|
|
93
|
+
и по глобальным хоткеям. CLI-флаги оставлены для скриптов — они мгновенно
|
|
94
|
+
доставляются работающему экземпляру через локальный сокет.
|
|
95
|
+
|
|
96
|
+
Текст берётся из **PRIMARY selection** — достаточно выделить его мышью,
|
|
97
|
+
Ctrl+C не нужен.
|
|
98
|
+
|
|
99
|
+
## Хоткеи
|
|
100
|
+
|
|
101
|
+
Назначаются в Настройки → Клавиши, работают глобально:
|
|
102
|
+
|
|
103
|
+
- **X11** — приложение перехватывает клавиши напрямую (XGrabKey),
|
|
104
|
+
работает в любом WM/DE без настройки.
|
|
105
|
+
- **Wayland** — используется XDG Desktop Portal (GlobalShortcuts);
|
|
106
|
+
GNOME/KDE покажут диалог подтверждения биндинга. Если портал недоступен
|
|
107
|
+
(минималистичные композиторы) — пользуйтесь треем или повесьте
|
|
108
|
+
`kortalk --popup` на хоткей средствами композитора.
|
|
109
|
+
|
|
110
|
+
## Настройка провайдеров
|
|
111
|
+
|
|
112
|
+
`kortalk --settings` → вкладка «Провайдеры». Примеры:
|
|
113
|
+
|
|
114
|
+
| Провайдер | Тип | Base URL | Модель |
|
|
115
|
+
|---|---|---|---|
|
|
116
|
+
| Claude Code CLI | claude-cli | — | *(пусто = дефолт CLI)* |
|
|
117
|
+
| Anthropic API | anthropic | — | `claude-opus-4-8` |
|
|
118
|
+
| OpenAI | openai | `https://api.openai.com/v1` | `gpt-4o` |
|
|
119
|
+
| Ollama | openai | `http://localhost:11434/v1` | `llama3`, `qwen3`, … |
|
|
120
|
+
| LM Studio | openai | `http://localhost:1234/v1` | имя загруженной модели |
|
|
121
|
+
| OpenRouter | openai | `https://openrouter.ai/api/v1` | любой из каталога |
|
|
122
|
+
|
|
123
|
+
«Активный провайдер» используется по умолчанию для popup; в окне провайдер
|
|
124
|
+
выбирается в выпадающем списке, разово — флагом `--provider <id>`.
|
|
125
|
+
|
|
126
|
+
## Автозапуск
|
|
127
|
+
|
|
128
|
+
Настройки → Общие → «Запускать при входе в систему» — создаёт
|
|
129
|
+
`~/.config/autostart/kortalk.desktop` с командой `kortalk`.
|
|
130
|
+
|
|
131
|
+
## Разработка
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
python3 -m venv .venv && .venv/bin/pip install -e .
|
|
135
|
+
QT_QPA_PLATFORM=offscreen .venv/bin/kortalk --check # headless-проверка
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Структура: [src/kortalk/](src/kortalk/) — `app.py` (CLI, трей, IPC),
|
|
139
|
+
`providers.py` (воркеры ИИ), `hotkeys.py` (XGrabKey / портал),
|
|
140
|
+
`windows.py` (popup и главное окно), `settings_dialog.py`, `config.py`,
|
|
141
|
+
`theme.py`.
|
|
142
|
+
|
|
143
|
+
## Лицензия
|
|
144
|
+
|
|
145
|
+
MIT, см. [LICENSE](LICENSE).
|
|
146
|
+
|
|
147
|
+
## Разработка
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
git clone https://github.com/r4ven-me/kortalk && cd kortalk
|
|
151
|
+
python -m venv .venv && . .venv/bin/activate
|
|
152
|
+
pip install -e '.[test]' ruff
|
|
153
|
+
ruff check . # линтер
|
|
154
|
+
QT_QPA_PLATFORM=offscreen pytest # тесты (headless)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Логи работающего приложения: `~/.local/state/kortalk/kortalk.log`
|
|
158
|
+
(подробный вывод — флаг `--debug`).
|
kortalk-0.4.0/README.md
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# kortalk
|
|
2
|
+
|
|
3
|
+
**Korvus AI popup** — приложение семейства **korvus** (korserver, korctl, kortalk).
|
|
4
|
+
AI-popup для выделенного текста в духе [Crow Translate](https://crow-translate.github.io/):
|
|
5
|
+
выделили текст мышью → нажали хоткей → у курсора всплыло окошко с ответом ИИ.
|
|
6
|
+
Живёт в трее, стримит ответы, поддерживает несколько провайдеров.
|
|
7
|
+
|
|
8
|
+
## Возможности
|
|
9
|
+
|
|
10
|
+
- **Popup у курсора** — скруглённые углы, Markdown-рендер ответа с подсветкой
|
|
11
|
+
блоков кода, стриминг токенов в реальном времени, выделение/копирование
|
|
12
|
+
текста. Закрывается по клику за пределами окна или `Escape`.
|
|
13
|
+
- **Окно в два столбца** — редактируемый промпт+текст слева, ответ справа,
|
|
14
|
+
выбор провайдера на панели, `Ctrl+Enter` для отправки.
|
|
15
|
+
- **Трей** — приложение резидентно: монохромный ворон (Corvus — символ korvus), ЛКМ = popup
|
|
16
|
+
с выделением, меню с библиотекой промптов, окном, настройками и выходом.
|
|
17
|
+
- **Глобальные хоткеи внутри приложения** — назначаются в настройках
|
|
18
|
+
(по умолчанию `Ctrl+Alt+C` popup, `Ctrl+Alt+W` окно). X11 — прямой
|
|
19
|
+
перехват XGrabKey, Wayland — системный портал GlobalShortcuts.
|
|
20
|
+
Никаких внешних утилит и настройки DE не требуется.
|
|
21
|
+
- **Библиотека промптов** — несколько именованных промптов в настройках;
|
|
22
|
+
промпт по умолчанию для хоткея, любой другой — из подменю трея.
|
|
23
|
+
- **Провайдеры ИИ**:
|
|
24
|
+
- **Claude Code CLI** — через `claude -p`, без API-ключа (по умолчанию);
|
|
25
|
+
- **Anthropic API** — официальный SDK, стриминг (нужен API-ключ);
|
|
26
|
+
- **OpenAI-совместимые API** — OpenAI, **Ollama**, LM Studio, OpenRouter,
|
|
27
|
+
Groq, DeepSeek и любой другой сервис с `/chat/completions` (настраивается
|
|
28
|
+
`base URL` + модель + ключ, для локальных серверов ключ не нужен).
|
|
29
|
+
- **Графические настройки** — промпты, клавиши, тема, шрифт, размеры popup,
|
|
30
|
+
таймауты, менеджер провайдеров с ключами, автозапуск при входе.
|
|
31
|
+
Конфиг — человекочитаемый YAML (`~/.config/kortalk/config.yaml`).
|
|
32
|
+
- **Тема и шрифты** — по умолчанию следует теме окружения (Qt), опционально
|
|
33
|
+
Nord Dark / Nord Light.
|
|
34
|
+
- **Два языка интерфейса** — английский (по умолчанию) и русский:
|
|
35
|
+
Настройки → Общие → Language.
|
|
36
|
+
- **PRIMARY-выделение читается нативно** через Qt — xclip/xsel/wl-clipboard
|
|
37
|
+
больше не нужны. Работает на X11 и Wayland.
|
|
38
|
+
|
|
39
|
+
## Установка
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
pipx install kortalk
|
|
43
|
+
kortalk --check # диагностика: провайдеры, трей, PRIMARY-выделение
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Никаких системных пакетов и флагов вроде `--system-site-packages` не
|
|
47
|
+
требуется — Qt (PySide6) ставится из PyPI. Единственная внешняя зависимость —
|
|
48
|
+
[Claude Code CLI](https://docs.claude.com), и только если используете
|
|
49
|
+
провайдер `claude-cli`.
|
|
50
|
+
|
|
51
|
+
> Конфиг хранится в `~/.config/kortalk/config.yaml` и редактируется через
|
|
52
|
+
> настройки (или руками). Конфиги прежних версий (toml/ini) не используются.
|
|
53
|
+
|
|
54
|
+
## Использование
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
kortalk # запустить демона (трей + хоткеи)
|
|
58
|
+
kortalk --popup # popup у курсора (для скриптов/сторонних хоткеев)
|
|
59
|
+
kortalk "Переведи на английский:" # popup с разовым промптом
|
|
60
|
+
kortalk --window # окно в два столбца (алиас: --split)
|
|
61
|
+
kortalk --provider ollama # разовый запрос через конкретный провайдер
|
|
62
|
+
kortalk --settings # настройки
|
|
63
|
+
kortalk --quit # завершить работающий экземпляр
|
|
64
|
+
kortalk --check # диагностика
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Основной сценарий: `kortalk` запускает демона, дальше всё делается из трея
|
|
68
|
+
и по глобальным хоткеям. CLI-флаги оставлены для скриптов — они мгновенно
|
|
69
|
+
доставляются работающему экземпляру через локальный сокет.
|
|
70
|
+
|
|
71
|
+
Текст берётся из **PRIMARY selection** — достаточно выделить его мышью,
|
|
72
|
+
Ctrl+C не нужен.
|
|
73
|
+
|
|
74
|
+
## Хоткеи
|
|
75
|
+
|
|
76
|
+
Назначаются в Настройки → Клавиши, работают глобально:
|
|
77
|
+
|
|
78
|
+
- **X11** — приложение перехватывает клавиши напрямую (XGrabKey),
|
|
79
|
+
работает в любом WM/DE без настройки.
|
|
80
|
+
- **Wayland** — используется XDG Desktop Portal (GlobalShortcuts);
|
|
81
|
+
GNOME/KDE покажут диалог подтверждения биндинга. Если портал недоступен
|
|
82
|
+
(минималистичные композиторы) — пользуйтесь треем или повесьте
|
|
83
|
+
`kortalk --popup` на хоткей средствами композитора.
|
|
84
|
+
|
|
85
|
+
## Настройка провайдеров
|
|
86
|
+
|
|
87
|
+
`kortalk --settings` → вкладка «Провайдеры». Примеры:
|
|
88
|
+
|
|
89
|
+
| Провайдер | Тип | Base URL | Модель |
|
|
90
|
+
|---|---|---|---|
|
|
91
|
+
| Claude Code CLI | claude-cli | — | *(пусто = дефолт CLI)* |
|
|
92
|
+
| Anthropic API | anthropic | — | `claude-opus-4-8` |
|
|
93
|
+
| OpenAI | openai | `https://api.openai.com/v1` | `gpt-4o` |
|
|
94
|
+
| Ollama | openai | `http://localhost:11434/v1` | `llama3`, `qwen3`, … |
|
|
95
|
+
| LM Studio | openai | `http://localhost:1234/v1` | имя загруженной модели |
|
|
96
|
+
| OpenRouter | openai | `https://openrouter.ai/api/v1` | любой из каталога |
|
|
97
|
+
|
|
98
|
+
«Активный провайдер» используется по умолчанию для popup; в окне провайдер
|
|
99
|
+
выбирается в выпадающем списке, разово — флагом `--provider <id>`.
|
|
100
|
+
|
|
101
|
+
## Автозапуск
|
|
102
|
+
|
|
103
|
+
Настройки → Общие → «Запускать при входе в систему» — создаёт
|
|
104
|
+
`~/.config/autostart/kortalk.desktop` с командой `kortalk`.
|
|
105
|
+
|
|
106
|
+
## Разработка
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
python3 -m venv .venv && .venv/bin/pip install -e .
|
|
110
|
+
QT_QPA_PLATFORM=offscreen .venv/bin/kortalk --check # headless-проверка
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Структура: [src/kortalk/](src/kortalk/) — `app.py` (CLI, трей, IPC),
|
|
114
|
+
`providers.py` (воркеры ИИ), `hotkeys.py` (XGrabKey / портал),
|
|
115
|
+
`windows.py` (popup и главное окно), `settings_dialog.py`, `config.py`,
|
|
116
|
+
`theme.py`.
|
|
117
|
+
|
|
118
|
+
## Лицензия
|
|
119
|
+
|
|
120
|
+
MIT, см. [LICENSE](LICENSE).
|
|
121
|
+
|
|
122
|
+
## Разработка
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
git clone https://github.com/r4ven-me/kortalk && cd kortalk
|
|
126
|
+
python -m venv .venv && . .venv/bin/activate
|
|
127
|
+
pip install -e '.[test]' ruff
|
|
128
|
+
ruff check . # линтер
|
|
129
|
+
QT_QPA_PLATFORM=offscreen pytest # тесты (headless)
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Логи работающего приложения: `~/.local/state/kortalk/kortalk.log`
|
|
133
|
+
(подробный вывод — флаг `--debug`).
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "kortalk"
|
|
7
|
+
version = "0.4.0"
|
|
8
|
+
description = "Korvus AI popup: выделенный текст → Claude, OpenAI, локальные модели. Трей, стриминг, два языка."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = { text = "MIT" }
|
|
11
|
+
requires-python = ">=3.9"
|
|
12
|
+
authors = [{ name = "kortalk contributors" }]
|
|
13
|
+
keywords = ["korvus", "claude", "openai", "ollama", "clipboard", "popup", "qt", "tray"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Environment :: X11 Applications :: Qt",
|
|
16
|
+
"Intended Audience :: End Users/Desktop",
|
|
17
|
+
"License :: OSI Approved :: MIT License",
|
|
18
|
+
"Operating System :: POSIX :: Linux",
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"Topic :: Desktop Environment",
|
|
21
|
+
]
|
|
22
|
+
dependencies = [
|
|
23
|
+
"PySide6>=6.5",
|
|
24
|
+
"anthropic>=0.40",
|
|
25
|
+
"PyYAML>=6.0",
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
[project.optional-dependencies]
|
|
29
|
+
test = ["pytest>=7", "pytest-qt>=4"]
|
|
30
|
+
|
|
31
|
+
[project.urls]
|
|
32
|
+
Homepage = "https://github.com/r4ven-me/kortalk"
|
|
33
|
+
|
|
34
|
+
[project.scripts]
|
|
35
|
+
kortalk = "kortalk.app:main"
|
|
36
|
+
|
|
37
|
+
[tool.setuptools.packages.find]
|
|
38
|
+
where = ["src"]
|
|
39
|
+
|
|
40
|
+
[tool.pytest.ini_options]
|
|
41
|
+
testpaths = ["tests"]
|
|
42
|
+
|
|
43
|
+
[tool.ruff]
|
|
44
|
+
line-length = 100
|
|
45
|
+
target-version = "py39"
|
|
46
|
+
src = ["src"]
|
|
47
|
+
|
|
48
|
+
[tool.ruff.lint]
|
|
49
|
+
select = ["E", "F", "W", "I", "B", "UP"]
|
kortalk-0.4.0/setup.cfg
ADDED