| import setuptools |
| from pathlib import Path |
|
|
|
|
| |
| def read_long_description(): |
| try: |
| return Path("README.md").read_text(encoding="utf-8") |
| except FileNotFoundError: |
| return "A description of RAGAnything is currently unavailable." |
|
|
|
|
| |
| def retrieve_metadata(): |
| vars2find = ["__author__", "__version__", "__url__"] |
| vars2readme = {} |
| try: |
| with open("./raganything/__init__.py") as f: |
| for line in f.readlines(): |
| for v in vars2find: |
| if line.startswith(v): |
| line = ( |
| line.replace(" ", "") |
| .replace('"', "") |
| .replace("'", "") |
| .strip() |
| ) |
| vars2readme[v] = line.split("=")[1] |
| except FileNotFoundError: |
| raise FileNotFoundError("Metadata file './raganything/__init__.py' not found.") |
|
|
| |
| missing_vars = [v for v in vars2find if v not in vars2readme] |
| if missing_vars: |
| raise ValueError( |
| f"Missing required metadata variables in __init__.py: {missing_vars}" |
| ) |
|
|
| return vars2readme |
|
|
|
|
| |
| def read_requirements(): |
| deps = [] |
| try: |
| with open("./requirements.txt") as f: |
| deps = [ |
| line.strip() for line in f if line.strip() and not line.startswith("#") |
| ] |
| except FileNotFoundError: |
| print( |
| "Warning: 'requirements.txt' not found. No dependencies will be installed." |
| ) |
| return deps |
|
|
|
|
| metadata = retrieve_metadata() |
| long_description = read_long_description() |
| requirements = read_requirements() |
|
|
| |
| extras_require = { |
| "image": ["Pillow>=10.0.0"], |
| "text": ["reportlab>=4.0.0"], |
| "office": [], |
| "all": ["Pillow>=10.0.0", "reportlab>=4.0.0"], |
| "markdown": [ |
| "markdown>=3.4.0", |
| "weasyprint>=60.0", |
| "pygments>=2.10.0", |
| ], |
| } |
|
|
| setuptools.setup( |
| name="raganything", |
| url=metadata["__url__"], |
| version=metadata["__version__"], |
| author=metadata["__author__"], |
| description="RAGAnything: All-in-One RAG System", |
| long_description=long_description, |
| long_description_content_type="text/markdown", |
| packages=setuptools.find_packages( |
| exclude=("tests*", "docs*") |
| ), |
| classifiers=[ |
| "Development Status :: 4 - Beta", |
| "Programming Language :: Python :: 3", |
| "License :: OSI Approved :: MIT License", |
| "Operating System :: OS Independent", |
| "Intended Audience :: Developers", |
| "Topic :: Software Development :: Libraries :: Python Modules", |
| ], |
| python_requires=">=3.9", |
| install_requires=requirements, |
| extras_require=extras_require, |
| include_package_data=True, |
| project_urls={ |
| "Documentation": metadata.get("__url__", ""), |
| "Source": metadata.get("__url__", ""), |
| "Tracker": f"{metadata.get('__url__', '')}/issues" |
| if metadata.get("__url__") |
| else "", |
| }, |
| ) |
|
|