auto-analyser
Routes any file to the right analyser. Detects the file format, calls the appropriate tool, and returns the result — so you don't need to know which analyser handles which format.
Part of the analyser family.
Install
pip install auto-analyser
Requires Python 3.11+. The analysers it calls must be installed and reachable separately.
Usage
CLI
# Detect which analyser would handle a file
auto-analyser detect report.pdf # report.pdf -> document-analyser
auto-analyser detect interview.mp3 # interview.mp3 -> speech-analyser
auto-analyser detect data.xlsx # data.xlsx -> records-analyser
# Analyse a file — auto-detects format and routes
auto-analyser analyse report.pdf
auto-analyser analyse recording.mp3 --json
# Force a specific analyser
auto-analyser analyse interview.mp4 --analyser speech-analyser
# Check which analysers are reachable
auto-analyser status
Python
from auto_analyser import Router
router = Router()
result = router.route("report.pdf")
print(result["routed_to"]) # "document-analyser"
Configuration
auto-analyser ships with built-in defaults (document-analyser on localhost:8000, speech-analyser via CLI, etc.). Override with a YAML config file at ./auto-analyser.yaml or ~/.config/auto-analyser/config.yaml:
analysers:
document-analyser:
type: http
url: http://localhost:8000
extensions: [.pdf, .docx, .pptx, .txt, .md]
speech-analyser:
type: cli
command: speech-analyser
extensions: [.mp3, .wav, .m4a, .ogg, .flac, .mp4, .mov]
records-analyser:
type: http
url: http://localhost:8003
extensions: [.csv, .tsv, .xlsx, .parquet, .db, .sqlite]
How routing works
auto-analyser builds its routing table from each analyser's capability manifest
(GET /manifest for HTTP analysers, or <analyser> manifest for CLI ones), which
declares the extensions it handles and whether it is auto-routable. Analysers that
are explicit-only content interpretations — e.g. conversation-analyser — set
auto_routable: false and are never auto-routed; invoke them directly.
A built-in static map (detector._ROUTES) is kept as an offline fallback: when
an analyser can't be reached for its manifest, routing still resolves, so you get a
clear "is the service running? / is it installed?" message at dispatch instead of a
misleading "unknown format". See docs/adr/0001-manifest-driven-routing.md.
The analyser family
Low-level analysis tools. Each accepts files directly and returns structured JSON. Build your own UI or pipeline on top.
| Package | Handles |
|---|---|
| speech-analyser | audio and video files — transcript and speech metrics |
| video-analyser | video files — frames, scenes, and visual quality |
| document-analyser | PDF, DOCX, PPTX, TXT — text and readability |
| code-analyser | source code — style, complexity, and quality metrics |
| records-analyser | CSV, Excel, SQLite, Parquet, JSON — data profiling |
| image-analyser | images — metadata, quality, OCR, captions, barcodes |
| git-analyser | git repositories — commit history and churn signals |
| wordpress-analyser | WordPress PHP — hooks, API usage, quality signals |
| bundle-analyser | folders and zips — analyse a collection of files |
| conversation-analyser | human-AI conversations — engagement and critical-thinking |
| auto-analyser | any file — detects format and routes to the right tool |
Licence
MIT
Metadata
Release files for auto-analyser 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| auto_analyser-0.8.0.tar.gz | 85.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| auto_analyser-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 106.6 kB
Release files / auto_analyser-0.8.0.tar.gz
| Download URL | auto_analyser-0.8.0.tar.gz |
|---|---|
| Size | 85.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d64e5fc1dc8be8f63947ec97d27ff96b481885050fcce9422905dc578be6c846
|
|
BLAKE2b-256 checksum How to use checksums |
01a16ff5229716473fef7b11259bec220553232e7b303a2fab7581a6f00801ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / auto_analyser-0.8.0-py3-none-any.whl
| Download URL | auto_analyser-0.8.0-py3-none-any.whl |
|---|---|
| Size | 21.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
56eec538c6134ede2130bce2d9d7873218458447fcd9ec151a6eba696f091fbc
|
|
BLAKE2b-256 checksum How to use checksums |
dd59a68e1f79f6b46c6f458178c94440555de39d40f877d07c963ebb08fae79b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|