ollama-classifier-gui 0.2.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.
- ollama_classifier_gui-0.2.0/.github/workflows/python-publish.yml +75 -0
- ollama_classifier_gui-0.2.0/.github/workflows/rtd-publish.yml +18 -0
- ollama_classifier_gui-0.2.0/.github/workflows/test.yml +29 -0
- ollama_classifier_gui-0.2.0/.gitignore +25 -0
- ollama_classifier_gui-0.2.0/.python-version +1 -0
- ollama_classifier_gui-0.2.0/.readthedocs.yaml +23 -0
- ollama_classifier_gui-0.2.0/PKG-INFO +158 -0
- ollama_classifier_gui-0.2.0/README.md +130 -0
- ollama_classifier_gui-0.2.0/pyproject.toml +69 -0
- ollama_classifier_gui-0.2.0/src/ollama_classifier_gui/__init__.py +6 -0
- ollama_classifier_gui-0.2.0/src/ollama_classifier_gui/main.py +1483 -0
- ollama_classifier_gui-0.2.0/src/ollama_classifier_gui/utils.py +195 -0
- ollama_classifier_gui-0.2.0/tests/__init__.py +0 -0
- ollama_classifier_gui-0.2.0/tests/test_smoke.py +104 -0
- ollama_classifier_gui-0.2.0/uv.lock +772 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# This workflow will upload a Python Package to PyPI when a release is created
|
|
2
|
+
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
|
|
3
|
+
|
|
4
|
+
# This workflow uses actions that are not certified by GitHub.
|
|
5
|
+
# They are provided by a third-party and are governed by
|
|
6
|
+
# separate terms of service, privacy policy, and support
|
|
7
|
+
# documentation.
|
|
8
|
+
|
|
9
|
+
name: Upload Python Package
|
|
10
|
+
|
|
11
|
+
on:
|
|
12
|
+
release:
|
|
13
|
+
types: [published]
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
release-build:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
|
|
25
|
+
- name: Install uv
|
|
26
|
+
uses: astral-sh/setup-uv@v7
|
|
27
|
+
|
|
28
|
+
- name: Set up Python
|
|
29
|
+
run: uv python install
|
|
30
|
+
|
|
31
|
+
- name: Install the project
|
|
32
|
+
run: uv sync --locked --all-extras --dev
|
|
33
|
+
|
|
34
|
+
- name: Run tests
|
|
35
|
+
run: uv run pytest tests
|
|
36
|
+
|
|
37
|
+
- name: Build
|
|
38
|
+
run: uv build
|
|
39
|
+
|
|
40
|
+
- name: Upload distributions
|
|
41
|
+
uses: actions/upload-artifact@v4
|
|
42
|
+
with:
|
|
43
|
+
name: release-dists
|
|
44
|
+
path: dist/
|
|
45
|
+
|
|
46
|
+
pypi-publish:
|
|
47
|
+
runs-on: ubuntu-latest
|
|
48
|
+
needs:
|
|
49
|
+
- release-build
|
|
50
|
+
permissions:
|
|
51
|
+
# IMPORTANT: this permission is mandatory for trusted publishing
|
|
52
|
+
id-token: write
|
|
53
|
+
|
|
54
|
+
# Dedicated environments with protections for publishing are strongly recommended.
|
|
55
|
+
# For more information, see: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules
|
|
56
|
+
environment:
|
|
57
|
+
name: pypi
|
|
58
|
+
# OPTIONAL: uncomment and update to include your PyPI project URL in the deployment status:
|
|
59
|
+
# url: https://pypi.org/p/YOURPROJECT
|
|
60
|
+
#
|
|
61
|
+
# ALTERNATIVE: if your GitHub Release name is the PyPI project version string
|
|
62
|
+
# ALTERNATIVE: exactly, uncomment the following line instead:
|
|
63
|
+
# url: https://pypi.org/project/YOURPROJECT/${{ github.event.release.name }}
|
|
64
|
+
|
|
65
|
+
steps:
|
|
66
|
+
- name: Retrieve release distributions
|
|
67
|
+
uses: actions/download-artifact@v4
|
|
68
|
+
with:
|
|
69
|
+
name: release-dists
|
|
70
|
+
path: dist/
|
|
71
|
+
|
|
72
|
+
- name: Publish release distributions to PyPI
|
|
73
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
74
|
+
with:
|
|
75
|
+
packages-dir: dist/
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: Publish to ReadTheDocs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
trigger-rtd-build:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
|
|
11
|
+
steps:
|
|
12
|
+
- name: Trigger ReadTheDocs build
|
|
13
|
+
run: |
|
|
14
|
+
VERSION=${{ github.event.release.tag_name }}
|
|
15
|
+
curl -X POST \
|
|
16
|
+
-H "Authorization: Token ${{ secrets.RTD_TOKEN }}" \
|
|
17
|
+
-H "Content-Type: application/json" \
|
|
18
|
+
https://readthedocs.org/api/v3/projects/ollama-classifier-gui/versions/$VERSION/builds/
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: Test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, master ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main, master ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
python-version: ["3.11", "3.12"]
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Install uv
|
|
20
|
+
uses: astral-sh/setup-uv@v7
|
|
21
|
+
|
|
22
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
23
|
+
run: uv python install ${{ matrix.python-version }}
|
|
24
|
+
|
|
25
|
+
- name: Install the project
|
|
26
|
+
run: uv sync --locked --all-extras --dev
|
|
27
|
+
|
|
28
|
+
- name: Run tests
|
|
29
|
+
run: uv run pytest tests
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
dist/
|
|
6
|
+
build/
|
|
7
|
+
|
|
8
|
+
# Virtual environments
|
|
9
|
+
.venv/
|
|
10
|
+
|
|
11
|
+
# IDE
|
|
12
|
+
.idea/
|
|
13
|
+
.vscode/
|
|
14
|
+
*.swp
|
|
15
|
+
*.swo
|
|
16
|
+
|
|
17
|
+
# OS
|
|
18
|
+
.DS_Store
|
|
19
|
+
Thumbs.db
|
|
20
|
+
|
|
21
|
+
# Environment
|
|
22
|
+
.env
|
|
23
|
+
PLAN.md
|
|
24
|
+
.claude/*
|
|
25
|
+
.kilo/*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.11
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Read the Docs configuration file
|
|
2
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
|
3
|
+
|
|
4
|
+
# Required
|
|
5
|
+
version: 2
|
|
6
|
+
|
|
7
|
+
# Set the OS, Python version, and other tools you might need
|
|
8
|
+
build:
|
|
9
|
+
os: ubuntu-24.04
|
|
10
|
+
tools:
|
|
11
|
+
python: "3.13"
|
|
12
|
+
|
|
13
|
+
# Build documentation with Mkdocs
|
|
14
|
+
mkdocs:
|
|
15
|
+
configuration: mkdocs.yml
|
|
16
|
+
|
|
17
|
+
# Optionally, but recommended,
|
|
18
|
+
# declare the Python requirements required to build your documentation
|
|
19
|
+
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
|
|
20
|
+
# python:
|
|
21
|
+
# install:
|
|
22
|
+
# - requirements: docs/requirements.txt
|
|
23
|
+
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ollama-classifier-gui
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: A desktop GUI application for text classification using LLMs (Ollama, vLLM, SGLang, llama.cpp)
|
|
5
|
+
Project-URL: Homepage, https://github.com/paluigi/ollama-classifier-gui
|
|
6
|
+
Project-URL: Repository, https://github.com/paluigi/ollama-classifier-gui
|
|
7
|
+
Project-URL: Issues, https://github.com/paluigi/ollama-classifier-gui/issues
|
|
8
|
+
Author: Luigi Palumbo, Mengting Yu
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
Keywords: classifier,flet,gui,llama-cpp,llm,ollama,sglang,text-classification,vllm
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
|
+
Classifier: Topic :: Text Processing :: Linguistic
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Requires-Dist: flet-secure-storage>=0.84.0
|
|
21
|
+
Requires-Dist: flet>=0.84.0
|
|
22
|
+
Requires-Dist: ollama-classifier[backends]>=0.3.0
|
|
23
|
+
Requires-Dist: openpyxl>=3.1.5
|
|
24
|
+
Requires-Dist: polars>=1.40.0
|
|
25
|
+
Requires-Dist: pyshortcuts>=1.9.7
|
|
26
|
+
Requires-Dist: xlsxwriter>=3.2.0
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
|
|
29
|
+
# LLM Classifier GUI
|
|
30
|
+
|
|
31
|
+
A desktop GUI application for text classification using LLMs. Supports **multiple inference backends**: Ollama, vLLM, SGLang, and llama.cpp.
|
|
32
|
+
|
|
33
|
+

|
|
34
|
+

|
|
35
|
+
|
|
36
|
+
Built with [Flet](https://flet.dev/) and powered by [ollama-classifier](https://github.com/paluigi/ollama-classifier).
|
|
37
|
+
|
|
38
|
+
## Features
|
|
39
|
+
|
|
40
|
+
- **Multiple backends**: Ollama, vLLM, SGLang, llama.cpp (local or remote)
|
|
41
|
+
- **Load data** from CSV or Excel files
|
|
42
|
+
- **Flexible classification schema**: define labels manually or load from a CSV/Excel file
|
|
43
|
+
- **Two classification methods**:
|
|
44
|
+
- *Classify*: single-call prediction with confidence score
|
|
45
|
+
- *Score*: multi-call evaluation with softmax probabilities for all labels
|
|
46
|
+
- **Output format options**:
|
|
47
|
+
- *Top label only*: prediction + confidence
|
|
48
|
+
- *All labels*: each label becomes a column with its probability
|
|
49
|
+
- **Batch size control**: process multiple texts concurrently for speed
|
|
50
|
+
- **Save results** to Excel (merged with original data)
|
|
51
|
+
- **Dark/Light mode** toggle
|
|
52
|
+
- **Secure storage** for API keys
|
|
53
|
+
|
|
54
|
+
## Prerequisites
|
|
55
|
+
|
|
56
|
+
1. **Python 3.11+**
|
|
57
|
+
2. At least one inference backend:
|
|
58
|
+
- [Ollama](https://ollama.com/download) (local)
|
|
59
|
+
- [vLLM](https://docs.vllm.ai/) server
|
|
60
|
+
- [SGLang](https://sglang.ai/) server
|
|
61
|
+
- [llama.cpp server](https://github.com/ggerganov/llama.cpp/tree/master/examples/server)
|
|
62
|
+
|
|
63
|
+
### Linux system dependencies
|
|
64
|
+
|
|
65
|
+
| Dependency | Purpose | Install (Debian/Ubuntu) |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| `zenity` | File picker dialogs | `sudo apt install zenity` |
|
|
68
|
+
| `libsecret-1-0` | Secure storage backend | `sudo apt install libsecret-1-0` |
|
|
69
|
+
| `gnome-keyring` or `kwalletmanager` or `secret-service` | Keyring service | `sudo apt install gnome-keyring` |
|
|
70
|
+
|
|
71
|
+
## Installation
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Via uvx (recommended — no installation needed)
|
|
75
|
+
uvx ollama-classifier-gui
|
|
76
|
+
|
|
77
|
+
# Or via pip
|
|
78
|
+
pip install ollama-classifier-gui
|
|
79
|
+
ollama-classifier-gui
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Run from source
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
uv sync
|
|
86
|
+
uv run python -m ollama_classifier_gui.main
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Usage
|
|
90
|
+
|
|
91
|
+
### 1. Settings tab
|
|
92
|
+
Configure your inference backend:
|
|
93
|
+
- Select the **backend type** (Ollama, vLLM, SGLang, llama.cpp)
|
|
94
|
+
- Set the **endpoint URL** (auto-fills with defaults)
|
|
95
|
+
- Enter the **model name** (or use "Test Connection" to auto-detect available models)
|
|
96
|
+
- Optionally set an **API key** for authenticated remote servers
|
|
97
|
+
- Toggle **dark/light mode**
|
|
98
|
+
- Click **Save Settings**
|
|
99
|
+
|
|
100
|
+
### 2. Data Input tab
|
|
101
|
+
- Click **Select File** to load a CSV or Excel file
|
|
102
|
+
- For Excel files, select the **sheet** from the dropdown
|
|
103
|
+
- Select the **text column** that contains the text to classify
|
|
104
|
+
|
|
105
|
+
### 3. Schema tab
|
|
106
|
+
Define your classification labels:
|
|
107
|
+
- **Manual Labels**: click "Add Label" to add labels with optional descriptions
|
|
108
|
+
- **Load from File**: select a CSV/Excel file containing labels (and optionally descriptions)
|
|
109
|
+
|
|
110
|
+
Then choose:
|
|
111
|
+
- **Classification Method**: Classify (fast) or Score (accurate probabilities)
|
|
112
|
+
- **Output Format**: Top label only or All labels (each as a column)
|
|
113
|
+
- Optionally override the **system prompt**
|
|
114
|
+
|
|
115
|
+
### 4. Results tab
|
|
116
|
+
- Click **Run Classification** to start
|
|
117
|
+
- Monitor progress in real-time
|
|
118
|
+
- Click **Save Results** to export to Excel (original data + classification columns)
|
|
119
|
+
|
|
120
|
+
### 5. Info tab
|
|
121
|
+
- Shows the **application version** and a link to the **GitHub repository** (both read from the package metadata defined in `pyproject.toml`)
|
|
122
|
+
- Click "Open in Browser" to open the repository in your default browser
|
|
123
|
+
|
|
124
|
+
## Configuration
|
|
125
|
+
|
|
126
|
+
Settings are stored in a JSON config file:
|
|
127
|
+
|
|
128
|
+
| OS | Path |
|
|
129
|
+
|---|---|
|
|
130
|
+
| Linux | `$XDG_CONFIG_HOME/ollama-classifier-gui/config.json` (fallback `~/.config`) |
|
|
131
|
+
| macOS | `~/Library/Application Support/ollama-classifier-gui/config.json` |
|
|
132
|
+
| Windows | `%APPDATA%\ollama-classifier-gui\config.json` |
|
|
133
|
+
|
|
134
|
+
API keys are stored separately using the OS native secure storage (Keychain, Credential Manager, libsecret).
|
|
135
|
+
|
|
136
|
+
## Default Endpoints
|
|
137
|
+
|
|
138
|
+
| Backend | Default URL |
|
|
139
|
+
|---|---|
|
|
140
|
+
| Ollama | `http://localhost:11434` |
|
|
141
|
+
| vLLM | `http://localhost:8000/v1` |
|
|
142
|
+
| SGLang | `http://localhost:30000/v1` |
|
|
143
|
+
| llama.cpp | `http://localhost:8080/v1` |
|
|
144
|
+
|
|
145
|
+
## License
|
|
146
|
+
|
|
147
|
+
MIT
|
|
148
|
+
|
|
149
|
+
## Change Log
|
|
150
|
+
|
|
151
|
+
- **0.2.1** — Fix launch & runtime bugs
|
|
152
|
+
- Fix the Schema tab "Classification Labels" card that failed to render (Tabs/TabBarView now have bounded height; tab switching wired via `on_change`)
|
|
153
|
+
- Fix "Save Results" Excel export: remove invalid `engine` argument and add `xlsxwriter` (the polars 1.40 writer backend)
|
|
154
|
+
- Rename entry module `app.py` → `main.py` (run directly with `python -m ollama_classifier_gui.main`)
|
|
155
|
+
- Resolve all Flet deprecation warnings (`ElevatedButton`→`Button`, `border.all`→`Border.all`, `margin.only`→`Margin.only`) to prepare for Flet 1.0
|
|
156
|
+
- Add `tests/` smoke tests; fix CI Python matrix (3.11/3.12)
|
|
157
|
+
- **0.2.2** — Add Info section
|
|
158
|
+
- New "Info" navigation tab showing the application version and GitHub repository link (sourced from `pyproject.toml` via `importlib.metadata`)
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# LLM Classifier GUI
|
|
2
|
+
|
|
3
|
+
A desktop GUI application for text classification using LLMs. Supports **multiple inference backends**: Ollama, vLLM, SGLang, and llama.cpp.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+
|
|
8
|
+
Built with [Flet](https://flet.dev/) and powered by [ollama-classifier](https://github.com/paluigi/ollama-classifier).
|
|
9
|
+
|
|
10
|
+
## Features
|
|
11
|
+
|
|
12
|
+
- **Multiple backends**: Ollama, vLLM, SGLang, llama.cpp (local or remote)
|
|
13
|
+
- **Load data** from CSV or Excel files
|
|
14
|
+
- **Flexible classification schema**: define labels manually or load from a CSV/Excel file
|
|
15
|
+
- **Two classification methods**:
|
|
16
|
+
- *Classify*: single-call prediction with confidence score
|
|
17
|
+
- *Score*: multi-call evaluation with softmax probabilities for all labels
|
|
18
|
+
- **Output format options**:
|
|
19
|
+
- *Top label only*: prediction + confidence
|
|
20
|
+
- *All labels*: each label becomes a column with its probability
|
|
21
|
+
- **Batch size control**: process multiple texts concurrently for speed
|
|
22
|
+
- **Save results** to Excel (merged with original data)
|
|
23
|
+
- **Dark/Light mode** toggle
|
|
24
|
+
- **Secure storage** for API keys
|
|
25
|
+
|
|
26
|
+
## Prerequisites
|
|
27
|
+
|
|
28
|
+
1. **Python 3.11+**
|
|
29
|
+
2. At least one inference backend:
|
|
30
|
+
- [Ollama](https://ollama.com/download) (local)
|
|
31
|
+
- [vLLM](https://docs.vllm.ai/) server
|
|
32
|
+
- [SGLang](https://sglang.ai/) server
|
|
33
|
+
- [llama.cpp server](https://github.com/ggerganov/llama.cpp/tree/master/examples/server)
|
|
34
|
+
|
|
35
|
+
### Linux system dependencies
|
|
36
|
+
|
|
37
|
+
| Dependency | Purpose | Install (Debian/Ubuntu) |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| `zenity` | File picker dialogs | `sudo apt install zenity` |
|
|
40
|
+
| `libsecret-1-0` | Secure storage backend | `sudo apt install libsecret-1-0` |
|
|
41
|
+
| `gnome-keyring` or `kwalletmanager` or `secret-service` | Keyring service | `sudo apt install gnome-keyring` |
|
|
42
|
+
|
|
43
|
+
## Installation
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Via uvx (recommended — no installation needed)
|
|
47
|
+
uvx ollama-classifier-gui
|
|
48
|
+
|
|
49
|
+
# Or via pip
|
|
50
|
+
pip install ollama-classifier-gui
|
|
51
|
+
ollama-classifier-gui
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Run from source
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
uv sync
|
|
58
|
+
uv run python -m ollama_classifier_gui.main
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Usage
|
|
62
|
+
|
|
63
|
+
### 1. Settings tab
|
|
64
|
+
Configure your inference backend:
|
|
65
|
+
- Select the **backend type** (Ollama, vLLM, SGLang, llama.cpp)
|
|
66
|
+
- Set the **endpoint URL** (auto-fills with defaults)
|
|
67
|
+
- Enter the **model name** (or use "Test Connection" to auto-detect available models)
|
|
68
|
+
- Optionally set an **API key** for authenticated remote servers
|
|
69
|
+
- Toggle **dark/light mode**
|
|
70
|
+
- Click **Save Settings**
|
|
71
|
+
|
|
72
|
+
### 2. Data Input tab
|
|
73
|
+
- Click **Select File** to load a CSV or Excel file
|
|
74
|
+
- For Excel files, select the **sheet** from the dropdown
|
|
75
|
+
- Select the **text column** that contains the text to classify
|
|
76
|
+
|
|
77
|
+
### 3. Schema tab
|
|
78
|
+
Define your classification labels:
|
|
79
|
+
- **Manual Labels**: click "Add Label" to add labels with optional descriptions
|
|
80
|
+
- **Load from File**: select a CSV/Excel file containing labels (and optionally descriptions)
|
|
81
|
+
|
|
82
|
+
Then choose:
|
|
83
|
+
- **Classification Method**: Classify (fast) or Score (accurate probabilities)
|
|
84
|
+
- **Output Format**: Top label only or All labels (each as a column)
|
|
85
|
+
- Optionally override the **system prompt**
|
|
86
|
+
|
|
87
|
+
### 4. Results tab
|
|
88
|
+
- Click **Run Classification** to start
|
|
89
|
+
- Monitor progress in real-time
|
|
90
|
+
- Click **Save Results** to export to Excel (original data + classification columns)
|
|
91
|
+
|
|
92
|
+
### 5. Info tab
|
|
93
|
+
- Shows the **application version** and a link to the **GitHub repository** (both read from the package metadata defined in `pyproject.toml`)
|
|
94
|
+
- Click "Open in Browser" to open the repository in your default browser
|
|
95
|
+
|
|
96
|
+
## Configuration
|
|
97
|
+
|
|
98
|
+
Settings are stored in a JSON config file:
|
|
99
|
+
|
|
100
|
+
| OS | Path |
|
|
101
|
+
|---|---|
|
|
102
|
+
| Linux | `$XDG_CONFIG_HOME/ollama-classifier-gui/config.json` (fallback `~/.config`) |
|
|
103
|
+
| macOS | `~/Library/Application Support/ollama-classifier-gui/config.json` |
|
|
104
|
+
| Windows | `%APPDATA%\ollama-classifier-gui\config.json` |
|
|
105
|
+
|
|
106
|
+
API keys are stored separately using the OS native secure storage (Keychain, Credential Manager, libsecret).
|
|
107
|
+
|
|
108
|
+
## Default Endpoints
|
|
109
|
+
|
|
110
|
+
| Backend | Default URL |
|
|
111
|
+
|---|---|
|
|
112
|
+
| Ollama | `http://localhost:11434` |
|
|
113
|
+
| vLLM | `http://localhost:8000/v1` |
|
|
114
|
+
| SGLang | `http://localhost:30000/v1` |
|
|
115
|
+
| llama.cpp | `http://localhost:8080/v1` |
|
|
116
|
+
|
|
117
|
+
## License
|
|
118
|
+
|
|
119
|
+
MIT
|
|
120
|
+
|
|
121
|
+
## Change Log
|
|
122
|
+
|
|
123
|
+
- **0.2.1** — Fix launch & runtime bugs
|
|
124
|
+
- Fix the Schema tab "Classification Labels" card that failed to render (Tabs/TabBarView now have bounded height; tab switching wired via `on_change`)
|
|
125
|
+
- Fix "Save Results" Excel export: remove invalid `engine` argument and add `xlsxwriter` (the polars 1.40 writer backend)
|
|
126
|
+
- Rename entry module `app.py` → `main.py` (run directly with `python -m ollama_classifier_gui.main`)
|
|
127
|
+
- Resolve all Flet deprecation warnings (`ElevatedButton`→`Button`, `border.all`→`Border.all`, `margin.only`→`Margin.only`) to prepare for Flet 1.0
|
|
128
|
+
- Add `tests/` smoke tests; fix CI Python matrix (3.11/3.12)
|
|
129
|
+
- **0.2.2** — Add Info section
|
|
130
|
+
- New "Info" navigation tab showing the application version and GitHub repository link (sourced from `pyproject.toml` via `importlib.metadata`)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "ollama-classifier-gui"
|
|
7
|
+
version = "0.2.0"
|
|
8
|
+
description = "A desktop GUI application for text classification using LLMs (Ollama, vLLM, SGLang, llama.cpp)"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
requires-python = ">=3.11"
|
|
12
|
+
authors = [
|
|
13
|
+
{ name = "Luigi Palumbo"},
|
|
14
|
+
{ name = "Mengting Yu"}
|
|
15
|
+
]
|
|
16
|
+
keywords = ["ollama", "classifier", "text-classification", "llm", "flet", "gui", "vllm", "sglang", "llama-cpp"]
|
|
17
|
+
classifiers = [
|
|
18
|
+
"Development Status :: 3 - Alpha",
|
|
19
|
+
"Intended Audience :: End Users/Desktop",
|
|
20
|
+
"License :: OSI Approved :: MIT License",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Programming Language :: Python :: 3.11",
|
|
23
|
+
"Programming Language :: Python :: 3.12",
|
|
24
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
25
|
+
"Topic :: Text Processing :: Linguistic",
|
|
26
|
+
]
|
|
27
|
+
dependencies = [
|
|
28
|
+
"flet>=0.84.0",
|
|
29
|
+
"flet-secure-storage>=0.84.0",
|
|
30
|
+
"ollama-classifier[backends]>=0.3.0",
|
|
31
|
+
"polars>=1.40.0",
|
|
32
|
+
"openpyxl>=3.1.5",
|
|
33
|
+
"xlsxwriter>=3.2.0",
|
|
34
|
+
"pyshortcuts>=1.9.7",
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
[project.scripts]
|
|
38
|
+
ollama-classifier-gui = "ollama_classifier_gui.main:main"
|
|
39
|
+
|
|
40
|
+
[project.urls]
|
|
41
|
+
Homepage = "https://github.com/paluigi/ollama-classifier-gui"
|
|
42
|
+
Repository = "https://github.com/paluigi/ollama-classifier-gui"
|
|
43
|
+
Issues = "https://github.com/paluigi/ollama-classifier-gui/issues"
|
|
44
|
+
|
|
45
|
+
[tool.hatch.build.targets.wheel]
|
|
46
|
+
packages = ["src/ollama_classifier_gui"]
|
|
47
|
+
|
|
48
|
+
[dependency-groups]
|
|
49
|
+
dev = [
|
|
50
|
+
"pytest>=8.0.0",
|
|
51
|
+
"ruff>=0.6.0",
|
|
52
|
+
"black>=24.0.0",
|
|
53
|
+
]
|
|
54
|
+
|
|
55
|
+
[tool.pytest.ini_options]
|
|
56
|
+
testpaths = ["tests"]
|
|
57
|
+
addopts = "-q"
|
|
58
|
+
|
|
59
|
+
[tool.black]
|
|
60
|
+
line-length = 88
|
|
61
|
+
target-version = ["py311"]
|
|
62
|
+
|
|
63
|
+
[tool.ruff]
|
|
64
|
+
line-length = 88
|
|
65
|
+
target-version = "py311"
|
|
66
|
+
|
|
67
|
+
[tool.ruff.lint]
|
|
68
|
+
select = ["E", "F", "I", "W", "UP"]
|
|
69
|
+
ignore = ["E501"]
|