Metadata-Version: 2.4
Name: srxy
Version: 1.3.2
Summary: Find files by what you mean — from the terminal or Python.
License-Expression: MIT
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cryptography>=44.0
Requires-Dist: exifread>=3.5
Requires-Dist: jellyfish>=1.2
Requires-Dist: mutagen>=1.48
Requires-Dist: openpyxl>=3.1
Requires-Dist: pillow>=12.2
Requires-Dist: pillow-heif>=1.4
Requires-Dist: pypdf>=6.14
Requires-Dist: pytesseract>=0.3
Requires-Dist: python-docx>=1.2
Requires-Dist: python-pptx>=1.0
Requires-Dist: rapidfuzz>=3.14
Requires-Dist: textual>=3.0
Provides-Extra: semantic
Requires-Dist: faster-whisper>=1.2; extra == "semantic"
Requires-Dist: nvidia-cublas-cu12; (platform_system == "Linux" or platform_system == "Windows") and extra == "semantic"
Requires-Dist: rawpy>=0.27; extra == "semantic"
Requires-Dist: sentence-transformers>=5.6; extra == "semantic"
Provides-Extra: windows
Requires-Dist: pywin32>=312; extra == "windows"
Provides-Extra: dev
Requires-Dist: basedpyright>=1.39; extra == "dev"
Requires-Dist: pip-audit>=2.10; extra == "dev"
Requires-Dist: pytest>=9.1; extra == "dev"
Requires-Dist: pytest-cov>=7.1; extra == "dev"
Requires-Dist: ruff>=0.15; extra == "dev"
Provides-Extra: uploader
Requires-Dist: build>=1.5; extra == "uploader"
Requires-Dist: twine>=6.2; extra == "uploader"
Dynamic: license-file

# Srxy

[![CI](https://github.com/illescasDaniel/srxy/actions/workflows/ci.yml/badge.svg)](https://github.com/illescasDaniel/srxy/actions/workflows/ci.yml)
[![version](https://img.shields.io/pypi/v/srxy)](https://pypi.org/project/srxy/)
[![PyPI](https://img.shields.io/badge/PyPI-srxy-3775A9?logo=pypi&logoColor=white)](https://pypi.org/project/srxy/)

**Find files by what you mean — terminal or Python.**

Fuzzy, phonetic, and semantic matching across filenames, documents, photos, audio, video, and OS tags. On a TTY, **srxy opens a full-screen TUI by default**; use `--no-tui` for scripts and pipes.

## Installation

Needs **Python 3.11+**. `pipx install 'srxy[semantic]'` recommended; `pip install srxy` for core-only. Windows: add `[windows]` for Explorer tags. macOS: system `python3` may be too old — [Installation](docs/installation.md#macos).

**Platform setup (ffmpeg, tesseract):** [docs/installation.md](docs/installation.md)

## Quick start

**TUI (default on a TTY):**

```bash
srxy                          # empty query/path
srxy "registry" ./src         # pre-filled; auto-starts
srxy "transform" ./docs --ocr
```

![srxy TUI](docs/images/tui.svg)

Live scan progress, sortable results, preview pane, option chips, clipboard copy. Full walkthrough: [docs/tui.md](docs/tui.md).

**Plain CLI:**

```bash
srxy "registry" ./src --no-tui
srxy "revenue" ./docs --json
srxy "dog at the beach" ~/Pictures --semantic-image --content-only
srxy "revenue" ./docs --semantic-all --content-only
```

Boolean queries (`|`, `&`), scope flags, format table: [docs/cli.md](docs/cli.md).

**Python:**

```python
from pathlib import Path
from srxy import magic_file_search, magic_search

magic_file_search(Path("./src"), "registry", threshold=0.3)
magic_search([{"name": "salad"}], "salat", fields=["name"])
```

API reference: [docs/python-api.md](docs/python-api.md).

## Documentation

| Guide | Contents |
|-------|----------|
| [Installation](docs/installation.md) | pipx/pip, macOS/Linux/Windows, ffmpeg, tesseract |
| [TUI](docs/tui.md) | Layout, keybindings, clipboard, release checklist |
| [CLI reference](docs/cli.md) | Flags, formats, boolean queries, exit codes |
| [Power-ups](docs/power-ups.md) | OCR, semantic, CLIP, transcription, models |
| [Python API](docs/python-api.md) | `magic_file_search`, `search`, `Q`, match types |
| [Development](docs/development.md) | Quality gate, `--full`, fixtures, pytest |

## Development

```bash
pip install -e ".[dev,semantic]"
./scripts/quality/checks.sh --fix
./scripts/quality/checks.sh              # day-to-day
./scripts/quality/checks.sh --full       # before release
./scripts/quality/checks.sh --full+cpu   # + forced-CPU transcribe matrix
```

CI runs unit tests only (`unit` marker, excluding `semantic` and `transcribe`). Details: [docs/development.md](docs/development.md).

Try fixtures: `srxy "axolotl" ./tests/fixtures/file_search`

## License

MIT — see [LICENSE](LICENSE).
