|
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 LightRAG is currently unavailable." |
|
|
|
|
|
def retrieve_metadata(): |
|
vars2find = ["__author__", "__version__", "__url__"] |
|
vars2readme = {} |
|
try: |
|
with open("./lightrag/__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 './lightrag/__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()] |
|
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() |
|
|
|
setuptools.setup( |
|
name="lightrag-hku", |
|
url=metadata["__url__"], |
|
version=metadata["__version__"], |
|
author=metadata["__author__"], |
|
description="LightRAG: Simple and Fast Retrieval-Augmented Generation", |
|
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, |
|
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 "" |
|
}, |
|
) |
|
|