|
import os |
|
|
|
import setuptools |
|
from typing import List |
|
from setuptools import find_packages |
|
|
|
for_pypi = os.getenv('PYPI') is not None |
|
|
|
|
|
def parse_requirements(file_name: str) -> List[str]: |
|
with open(file_name) as f: |
|
lines = f.read().splitlines() |
|
|
|
|
|
lines = [line for line in lines if line.strip() and not line.strip().startswith("#")] |
|
|
|
requirements = [] |
|
for line in lines: |
|
if 'chromamigdb' in line: |
|
|
|
continue |
|
if for_pypi: |
|
if 'http://' in line or 'https://' in line: |
|
continue |
|
if 'llama-cpp-python' in line and ';' in line: |
|
line = line[:line.index(';')] |
|
|
|
|
|
requirements.append(line) |
|
|
|
return requirements |
|
|
|
|
|
install_requires = parse_requirements('requirements.txt') |
|
|
|
req_files = [ |
|
'reqs_optional/requirements_optional_langchain.txt', |
|
'reqs_optional/requirements_optional_llamacpp_gpt4all.txt', |
|
'reqs_optional/requirements_optional_langchain.gpllike.txt', |
|
'reqs_optional/requirements_optional_agents.txt', |
|
'reqs_optional/requirements_optional_langchain.urls.txt', |
|
'reqs_optional/requirements_optional_doctr.txt', |
|
'reqs_optional/requirements_optional_audio.txt', |
|
'reqs_optional/requirements_optional_image.txt', |
|
] |
|
|
|
for req_file in req_files: |
|
x = parse_requirements(req_file) |
|
install_requires.extend(x) |
|
|
|
|
|
install_cpu = parse_requirements('reqs_optional/requirements_optional_cpu_only.txt') |
|
|
|
|
|
install_cuda = parse_requirements('reqs_optional/requirements_optional_gpu_only.txt') |
|
|
|
|
|
install_extra_training = parse_requirements('reqs_optional/requirements_optional_training.txt') |
|
|
|
|
|
install_wiki_extra = parse_requirements('reqs_optional/requirements_optional_wikiprocessing.txt') |
|
|
|
|
|
current_directory = os.path.dirname(os.path.abspath(__file__)) |
|
with open(os.path.join(current_directory, 'README.md'), encoding='utf-8') as f: |
|
long_description = f.read() |
|
|
|
with open(os.path.join(current_directory, 'version.txt'), encoding='utf-8') as f: |
|
version = f.read().strip() |
|
|
|
|
|
packages = find_packages(include=['h2ogpt', 'h2ogpt.*'], exclude=['tests']) |
|
|
|
setuptools.setup( |
|
name='h2ogpt', |
|
packages=packages, |
|
package_data={ |
|
|
|
'h2ogpt': ['spkemb/*.npy'], |
|
|
|
|
|
'h2ogpt.src': ['spkemb/*.npy'], |
|
}, |
|
exclude_package_data={ |
|
'h2ogpt': [ |
|
'**/__pycache__/**', |
|
'models/README-template.md' |
|
], |
|
}, |
|
version=version, |
|
license='https://opensource.org/license/apache-2-0/', |
|
description='', |
|
long_description=long_description, |
|
long_description_content_type='text/markdown', |
|
author='H2O.ai', |
|
author_email='[email protected], [email protected]', |
|
url='https://github.com/h2oai/h2ogpt', |
|
download_url='', |
|
keywords=['LLM', 'AI'], |
|
install_requires=install_requires, |
|
extras_require={ |
|
'cpu': install_cpu, |
|
'cuda': install_cuda, |
|
'TRAINING': install_extra_training, |
|
'WIKI_EXTRA': install_wiki_extra, |
|
'local-inference': ['unstructured[local-inference]>=0.12.5,<0.13'], |
|
}, |
|
classifiers=[], |
|
python_requires='>=3.10', |
|
entry_points={ |
|
'console_scripts': [ |
|
'h2ogpt_finetune=h2ogpt.finetune:entrypoint_main', |
|
'h2ogpt_generate=h2ogpt.generate:entrypoint_main', |
|
], |
|
}, |
|
) |
|
|