Metadata-Version: 2.4
Name: biblio-tools
Version: 0.1.5
Summary: Portable bibliography workspace tool
Author-email: Arash Shahidi <A.Shahidi@campus.lmu.de>
License-Expression: MIT
Project-URL: Homepage, https://github.com/arashshahidi1997/biblio
Project-URL: Documentation, https://arashshahidi1997.github.io/biblio/
Project-URL: Repository, https://github.com/arashshahidi1997/biblio
Project-URL: Issues, https://github.com/arashshahidi1997/biblio/issues
Keywords: bibliography,bibtex,docling,openalex,rag
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Text Processing
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: argcomplete
Requires-Dist: pyyaml
Requires-Dist: pybtex
Provides-Extra: bibtex
Provides-Extra: docs
Requires-Dist: mkdocs>=1.6; extra == "docs"
Requires-Dist: mkdocs-material>=9.5; extra == "docs"
Provides-Extra: openalex
Requires-Dist: httpx; extra == "openalex"
Requires-Dist: tenacity; extra == "openalex"
Requires-Dist: tqdm; extra == "openalex"
Provides-Extra: zotero
Requires-Dist: pyzotero>=1.6; extra == "zotero"
Provides-Extra: ui
Requires-Dist: fastapi>=0.115; extra == "ui"
Requires-Dist: uvicorn>=0.30; extra == "ui"
Provides-Extra: rag
Requires-Dist: indexio; extra == "rag"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: mkdocs>=1.6; extra == "dev"
Requires-Dist: mkdocs-material>=9.5; extra == "dev"
Requires-Dist: pybtex; extra == "dev"
Requires-Dist: httpx; extra == "dev"
Requires-Dist: tenacity; extra == "dev"
Requires-Dist: tqdm; extra == "dev"
Requires-Dist: pyzotero>=1.6; extra == "dev"
Requires-Dist: fastapi>=0.115; extra == "dev"
Requires-Dist: uvicorn>=0.30; extra == "dev"
Requires-Dist: indexio; extra == "dev"
Dynamic: license-file

# biblio

Portable bibliography workspace tooling.

Distribution name: `biblio-tools`
Import package: `biblio`
CLI: `biblio`

`biblio` bootstraps a repo-local `bib/` workspace, manages citekeys and
BibTeX imports, runs Docling, resolves OpenAlex metadata, syncs a
bibliography-owned RAG config, expands local literature graphs, and builds a
standalone bibliography explorer.

In the development repo, there is also a small local demo workspace under
`bib/` with three sample papers so you can try the commands immediately.

It can also ingest structured inputs before you have `.bib` files, including:

- DOI lists
- CSL JSON
- RIS
- local PDFs

Install for development:

```bash
pip install -e ".[dev]"
```

Install by distribution name:

```bash
pip install biblio-tools
```

Run the CLI:

```bash
biblio --help
```

Enable shell completion for `bash`:

```bash
eval "$(register-python-argcomplete biblio)"
```

Example ingestion flow:

```bash
biblio ingest csljson exports/library.json
biblio ingest ris exports/library.ris
biblio ingest dois reading-list.txt --stdout
biblio ingest pdfs ~/Downloads/papers/
```

Example local demo flow from this repo:

```bash
make ui-serve
biblio citekeys status
biblio bibtex merge
biblio docling run --all
biblio openalex resolve
biblio site build
```

## Documentation

Install docs dependencies:

```bash
pip install -e ".[docs]"
```

Preview locally:

```bash
mkdocs serve
```

The docs site uses a Diataxis layout and is intended for GitHub Pages deployment.

Optional local UI:

```bash
pip install -e ".[ui]"
biblio ui serve
```

Convenience alias:

```bash
biblio-gui
```

The UI serves a local FastAPI app with a React/Cytoscape front end. It can:

- explore the local paper graph
- inspect corpus and paper details
- trigger selected `biblio` actions directly
- fall back to the next free port if `8010` is already in use

## Release workflow

Build and validate distributions:

```bash
python -m build
python -m twine check dist/*
```

Upload instructions live in `RELEASE.md`.
