Skip to main content

ragready

Unified text + metadata extractors for Retrieval-Augmented Generation (RAG) pipelines
Version 0.2.1 · MIT-licensed

PyPI Downloads


✨ Why ragready?

A high-quality RAG knowledge base starts with clean, consistent documents—no matter where they live.
ragready streams Markdown-normalised content from:

Source type Iterator Notes
GitHub / GitLab repos git_repo_iter Auth tokens supported
Atlassian Confluence confluence_iter Cloud & Data Center
Public websites website_iter BFS crawl within domain
Local files & folders local_iter PDFs, DOCX, PPTX, XLSX, CSV, images (OCR), audio, ZIPs, EPUB…

Each iterator yields a single dataclass—DocumentRecord—so downstream code never worries about source-specific quirks.


🚀 Installation

pip install ragready

Requires Python ≥ 3.9 and a working git executable for repo extraction. The package bundles markitdown[all], so DOCX/PDF/PPTX/XLSX and OCR support work out-of-the-box.


⚡ Quick start

import ragready as rr
from pprint import pprint

# Crawl python.org two links deep
records = rr.website_iter(["https://www.python.org"], crawl_depth=2)

# Collect into a DataFrame (optional)
import pandas as pd
df = pd.DataFrame(r.to_dict() for r in records)
print(df[["filename", "content"]].head())

🍱 Example snippets

1. Local files

import ragready as rr
import pandas as pd

# Optional LLM client (leave None for pure local parsing)
client = None
llm_model = None               

# Run the iterator and capture records
docs = [
    rec.to_dict()              
    for rec in rr.local_iter(
        ["./data"],           
        llm_client=client,
        llm_model=llm_model
    )
]

# Convert to a DataFrame (optional)
df = pd.DataFrame(docs)
print(df.head())               # quick peek

2. Git repo with private access

# 1) Imports
import os
import pandas as pd
import ragready as rr

# Optional token for private repos
token = os.getenv("GITHUB_TOKEN")   # set in your shell, or leave None for public

# Pick the repos you want to scan
urls = [
    "https://github.com/pandas-dev/pandas.git",
    "https://gitlab.com/your-group/your-project.git",
]

# Run the iterator(s) and collect to dicts
git_records = [
    rec.to_dict()
    for url in urls
    for rec in rr.git_repo_iter(url, token=token)
]

# Build a DataFrame (optional)
git_df = pd.DataFrame(git_records)

# Inspect or save
print("\nGit repos preview:")
print(git_df[["source", "filename", "author", "url"]].head()) # quick peek

3. Confluence (plain-text)

import os
import pandas as pd
import ragready as rr

# Stream the pages
conf_rows = [
    rec.to_dict()
    for rec in rr.confluence_iter(
        base_url=os.getenv("CONF_URL"),       # e.g. "https://your-domain.atlassian.net/wiki"
        username=os.getenv("CONF_USER"),      # your Atlassian email / user
        api_token=os.getenv("CONFLUENCE_TOKEN"),
        space_keys=["ENG", "DS"],             # any number of spaces
        plain_text=True,                      # strip HTML tags
        limit=500                             # max pages
    )
]

# Build a DataFrame
conf_df = pd.DataFrame(conf_rows)

# 3Preview key columns
print("\nConfluence preview:")
print(conf_df[["filename", "author", "url"]].head()) # quick peek

4. Website

import pandas as pd
import ragready as rr

# Website crawl → DataFrame preview
web_rows = [
    rec.to_dict()
    for rec in rr.website_iter(
        roots=[
            "https://www.python.org",      # add more starting URLs as needed
            # "https://docs.rust-lang.org",
        ],
        crawl_depth=1                      # how deep to follow links (None = unlimited)
    )
]

web_df = pd.DataFrame(web_rows)

print("\nWebsite preview:")
print(web_df[["source", "title", "url"]].head())  # quick peek

🛠️ Public API

Symbol Description
DocumentRecord Normalised dataclass each iterator yields
git_repo_iter Stream files from GitHub / GitLab repos
confluence_iter Stream pages from Confluence spaces
website_iter Breadth-first crawl within a domain
local_iter Recursively convert local files via MarkItDown & OCR

All iterators are lazy streams—process millions of docs without filling memory.


🔑 Environment variables

Purpose Variable(s)
GitHub GITHUB_TOKEN
GitLab GITLAB_TOKEN
Confluence CONF_USER, CONFLUENCE_TOKEN, CONF_URL

📄 License

MIT © 2025 Kwadwo Daddy Nyame Owusu-Boakye


🤝 Contributing

  1. Fork & branch off main
  2. pip install -e .[dev]
  3. Run pytest + ruff check before PRs

All contributions welcome — new extractors, bug fixes, or docs!


🙏 Acknowledgements

Built on the shoulders of:

  • MarkItDown – universal document-to-Markdown converter
  • GitPython, BeautifulSoup 4, pdfplumber, python-pptx, and the wider open-source community.

Happy extracting — your RAG pipeline will thank you! 🦾


Release files for ragready 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ragready 0.2.1
File Size Uploaded
ragready-0.2.1.tar.gz 16.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ragready 0.2.1
File Interpreter ABI Platform
ragready-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 29.6 kB

Release files / ragready-0.2.1.tar.gz

Download URL ragready-0.2.1.tar.gz
Size 16.2 kB
Tags Source
SHA-256 checksum
How to use checksums
1d42f15c6ac42c2e813d766cd68e4c872d647bcc6852c33380f84e8dd680be5e
BLAKE2b-256 checksum
How to use checksums
c3a591cc47b2fbb7dc34be774143b689a2b8af5b76e668a0c180f77ff35ff4d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.7

Release files / ragready-0.2.1-py3-none-any.whl

Download URL ragready-0.2.1-py3-none-any.whl
Size 13.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
acd3ade7b2c5d33744e56137990130ee5f4e0bf926e50d546bcd465e57a4275d
BLAKE2b-256 checksum
How to use checksums
4ddf9c16867a216afd708651fc5aee1d238db9a719ca5b5f0e2c2620e196ae98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.7

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page