bristlenose 0.1.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.
Files changed (37) hide show
  1. bristlenose-0.1.0/.env.example +28 -0
  2. bristlenose-0.1.0/.gitignore +26 -0
  3. bristlenose-0.1.0/CONTRIBUTING.md +31 -0
  4. bristlenose-0.1.0/LICENSE +661 -0
  5. bristlenose-0.1.0/PKG-INFO +28 -0
  6. bristlenose-0.1.0/README.md +137 -0
  7. bristlenose-0.1.0/bristlenose/__init__.py +3 -0
  8. bristlenose-0.1.0/bristlenose/__main__.py +5 -0
  9. bristlenose-0.1.0/bristlenose/cli.py +210 -0
  10. bristlenose-0.1.0/bristlenose/config.py +87 -0
  11. bristlenose-0.1.0/bristlenose/llm/__init__.py +0 -0
  12. bristlenose-0.1.0/bristlenose/llm/client.py +166 -0
  13. bristlenose-0.1.0/bristlenose/llm/prompts.py +181 -0
  14. bristlenose-0.1.0/bristlenose/llm/structured.py +163 -0
  15. bristlenose-0.1.0/bristlenose/models.py +321 -0
  16. bristlenose-0.1.0/bristlenose/pipeline.py +495 -0
  17. bristlenose-0.1.0/bristlenose/stages/__init__.py +0 -0
  18. bristlenose-0.1.0/bristlenose/stages/extract_audio.py +87 -0
  19. bristlenose-0.1.0/bristlenose/stages/identify_speakers.py +216 -0
  20. bristlenose-0.1.0/bristlenose/stages/ingest.py +172 -0
  21. bristlenose-0.1.0/bristlenose/stages/merge_transcript.py +144 -0
  22. bristlenose-0.1.0/bristlenose/stages/parse_docx.py +192 -0
  23. bristlenose-0.1.0/bristlenose/stages/parse_subtitles.py +173 -0
  24. bristlenose-0.1.0/bristlenose/stages/pii_removal.py +318 -0
  25. bristlenose-0.1.0/bristlenose/stages/quote_clustering.py +118 -0
  26. bristlenose-0.1.0/bristlenose/stages/quote_extraction.py +178 -0
  27. bristlenose-0.1.0/bristlenose/stages/render_html.py +1508 -0
  28. bristlenose-0.1.0/bristlenose/stages/render_output.py +326 -0
  29. bristlenose-0.1.0/bristlenose/stages/thematic_grouping.py +143 -0
  30. bristlenose-0.1.0/bristlenose/stages/topic_segmentation.py +120 -0
  31. bristlenose-0.1.0/bristlenose/stages/transcribe.py +317 -0
  32. bristlenose-0.1.0/bristlenose/utils/__init__.py +0 -0
  33. bristlenose-0.1.0/bristlenose/utils/audio.py +106 -0
  34. bristlenose-0.1.0/bristlenose/utils/hardware.py +226 -0
  35. bristlenose-0.1.0/bristlenose/utils/text.py +115 -0
  36. bristlenose-0.1.0/bristlenose/utils/timecodes.py +70 -0
  37. bristlenose-0.1.0/pyproject.toml +60 -0
@@ -0,0 +1,28 @@
1
+ # Bristlenose Configuration
2
+ # Copy this file to .env and fill in your values
3
+
4
+ # LLM Provider: "anthropic" or "openai"
5
+ BRISTLENOSE_LLM_PROVIDER=anthropic
6
+
7
+ # API Keys (set the one matching your provider)
8
+ BRISTLENOSE_ANTHROPIC_API_KEY=
9
+ BRISTLENOSE_OPENAI_API_KEY=
10
+
11
+ # LLM Model (default: claude-sonnet-4-20250514)
12
+ # BRISTLENOSE_LLM_MODEL=claude-sonnet-4-20250514
13
+
14
+ # Whisper transcription backend: auto, mlx (Apple Silicon GPU), faster-whisper (CUDA/CPU)
15
+ # "auto" detects your hardware and picks the best option
16
+ # BRISTLENOSE_WHISPER_BACKEND=auto
17
+
18
+ # Whisper model size: tiny, base, small, medium, large-v3, large-v3-turbo
19
+ # BRISTLENOSE_WHISPER_MODEL=large-v3-turbo
20
+
21
+ # Whisper language (default: en)
22
+ # BRISTLENOSE_WHISPER_LANGUAGE=en
23
+
24
+ # Whisper device: cpu, cuda, auto (faster-whisper only, ignored when using mlx)
25
+ # BRISTLENOSE_WHISPER_DEVICE=auto
26
+
27
+ # Whisper compute type: int8, float16, float32 (faster-whisper only)
28
+ # BRISTLENOSE_WHISPER_COMPUTE_TYPE=int8
@@ -0,0 +1,26 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .eggs/
8
+ *.egg
9
+ .venv/
10
+ venv/
11
+ env/
12
+ .env
13
+ *.wav
14
+ *.mp3
15
+ *.mp4
16
+ *.mov
17
+ *.avi
18
+ *.mkv
19
+ output/
20
+ .mypy_cache/
21
+ .pytest_cache/
22
+ .ruff_cache/
23
+ .coverage
24
+ htmlcov/
25
+ .DS_Store
26
+ trial-runs/
@@ -0,0 +1,31 @@
1
+ # Contributing to Bristlenose
2
+
3
+ Thanks for your interest in contributing!
4
+
5
+ ## Contributor Licence Agreement
6
+
7
+ By submitting a pull request or patch to this project, you agree that:
8
+
9
+ 1. You have the right to assign the contribution.
10
+ 2. You grant the project maintainer (Cassio) a perpetual, worldwide,
11
+ irrevocable, royalty-free licence to use, modify, sublicence, and
12
+ relicence your contribution — including under licences other than
13
+ AGPL-3.0.
14
+ 3. Your contribution is provided as-is, without warranty.
15
+
16
+ This allows the maintainer to offer commercial or dual-licence versions
17
+ of Bristlenose in the future without needing to contact every contributor
18
+ individually.
19
+
20
+ ## How to contribute
21
+
22
+ 1. Fork the repo and create a branch.
23
+ 2. Make your changes.
24
+ 3. Run `ruff check` and `pytest` before submitting.
25
+ 4. Open a pull request with a clear description of what and why.
26
+
27
+ ## Code style
28
+
29
+ - Python 3.10+
30
+ - Ruff for linting (config in `pyproject.toml`)
31
+ - Type hints everywhere