-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
67 lines (56 loc) · 1.88 KB
/
Copy pathpyproject.toml
File metadata and controls
67 lines (56 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"
[project]
name = "nas_file_organizer"
version = "0.4.3"
description = "Content-aware file sorter with OCR for NAS"
authors = [{name = "Tamas Kiss", email = "thomas.kaen.freelance@gmail.com"}]
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
# --- Core app / web ---
"fastapi>=0.115",
"uvicorn>=0.30",
"jinja2>=3.1",
"python-multipart>=0.0.9",
"rich>=13.7",
# --- Rules / YAML ---
"ruyaml>=0.91",
# --- File parsing & OCR (optional at runtime unless you enable OCR) ---
"pymupdf>=1.24", # PDF text (fast + reliable)
"pytesseract>=0.3.10", # OCR bindings (requires Tesseract binary installed)
"Pillow>=10.0", # imaging for OCR
"python-docx>=1.1", # DOCX text
"openpyxl>=3.1", # XLSX text
"chardet>=5.2", # robust TXT decode
# --- ML (training & inference) ---
"scikit-learn>=1.4",
"numpy>=1.26",
"scipy>=1.10", # sklearn runtime dep; pin to avoid resolver pain
"joblib>=1.3", # sklearn model persistence
# --- Fuzzy / matching ---
"rapidfuzz>=3.9",
# --- Scheduling (auto weekly retrain) ---
"apscheduler>=3.10",
# --- Optional but useful ---
"python-dateutil>=2.9", # APScheduler & timestamp parsing niceties
"watchdog>=4.0", # (later) folder watcher
]
[project.optional-dependencies]
ml = ["scikit-learn>=1.4", "numpy>=1.26", "scipy>=1.10", "joblib>=1.3"]
ocr = ["pymupdf>=1.24", "pytesseract>=0.3.10", "Pillow>=10.0"]
docs = ["rich>=13.7"]
watch = ["watchdog>=4.0"]
dev = [
"pytest",
"ruff",
"mypy",
]
[tool.setuptools]
packages = ["nas_file_organizer"]
[project.scripts]
nas-organize = "nas_file_organizer.adapters.cli:main"
nas-watch = "nas_file_organizer.adapters.watch:main"
nas-web = "nas_file_organizer.adapters.web:main"
nas-train = "nas_file_organizer.adapters.train_cli:main"