|  | 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(file_path="requirements.txt"): | 
					
						
						|  | deps = [] | 
					
						
						|  | try: | 
					
						
						|  | with open(file_path) as f: | 
					
						
						|  | deps = [ | 
					
						
						|  | line.strip() for line in f if line.strip() and not line.startswith("#") | 
					
						
						|  | ] | 
					
						
						|  | except FileNotFoundError: | 
					
						
						|  | print(f"Warning: '{file_path}' not found. No dependencies will be installed.") | 
					
						
						|  | return deps | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | def read_api_requirements(): | 
					
						
						|  | return read_requirements("lightrag/api/requirements.txt") | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | def read_extra_requirements(): | 
					
						
						|  | return read_requirements("lightrag/tools/lightrag_visualizer/requirements.txt") | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | 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 "", | 
					
						
						|  | }, | 
					
						
						|  | extras_require={ | 
					
						
						|  | "api": requirements + read_api_requirements(), | 
					
						
						|  | "tools": read_extra_requirements(), | 
					
						
						|  | }, | 
					
						
						|  | entry_points={ | 
					
						
						|  | "console_scripts": [ | 
					
						
						|  | "lightrag-server=lightrag.api.lightrag_server:main [api]", | 
					
						
						|  | "lightrag-gunicorn=lightrag.api.run_with_gunicorn:main [api]", | 
					
						
						|  | "lightrag-viewer=lightrag.tools.lightrag_visualizer.graph_visualizer:main [tools]", | 
					
						
						|  | ], | 
					
						
						|  | }, | 
					
						
						|  | ) | 
					
						
						|  |  |