Spaces:
Running
Running
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
# Note: To use the 'upload' functionality of this file, you must: | |
# $ pipenv install twine --dev | |
import io | |
import os | |
import sys | |
from distutils.util import convert_path | |
from shutil import rmtree | |
from setuptools import Command, find_packages, setup | |
main_ns = {} | |
ver_path = convert_path("manifest/version.py") | |
with open(ver_path) as ver_file: | |
exec(ver_file.read(), main_ns) | |
# Package meta-data. | |
NAME = "manifest-ml" | |
DESCRIPTION = "Manifest for Prompting Foundation Models." | |
URL = "https://github.com/HazyResearch/manifest" | |
EMAIL = "[email protected]" | |
AUTHOR = "Laurel Orr" | |
REQUIRES_PYTHON = ">=3.10.0" | |
VERSION = main_ns["__version__"] | |
# What packages are required for this module to be executed? | |
REQUIRED = [ | |
"numpy>=1.20.0", | |
"pydantic>=1.9.0,<2.0", | |
"redis>=4.3.1", | |
"requests>=2.27.1", | |
"aiohttp>=3.8.0", | |
"sqlitedict>=2.0.0", | |
"tenacity>=8.2.0", | |
"tiktoken>=0.3.0", | |
"xxhash>=3.0.0", | |
] | |
# What packages are optional? | |
EXTRAS = { | |
"api": [ | |
"accelerate>=0.10.0", | |
"deepspeed>=0.10.0", | |
"diffusers>=0.6.0", | |
"Flask>=2.1.2", | |
"sentence_transformers>=2.2.0", | |
"torch>=1.8.0", | |
"transformers>=4.29.0", | |
"tokenizers>=0.13.3", | |
], | |
"app": [ | |
"fastapi>=0.70.0", | |
"uvicorn>=0.18.0", | |
], | |
"diffusers": [ | |
"pillow>=9.0.0", | |
], | |
"gcp": [ | |
"pg8000", | |
"cloud-sql-python-connector[pg8000]>=1.0.0", | |
"sqlalchemy", | |
], | |
"dev": [ | |
"autopep8>=1.6.0", | |
"black>=22.3.0", | |
"isort>=5.13.2", | |
"flake8>=4.0.0", | |
"flake8-docstrings>=1.6.0", | |
"mypy>=0.950", | |
"pep8-naming>=0.12.1", | |
"docformatter>=1.4", | |
"pytest>=7.0.0", | |
"pytest-cov>=3.0.0", | |
"python-dotenv>=0.20.0", | |
"sphinx-rtd-theme>=0.5.1", | |
"nbsphinx>=0.8.0", | |
"recommonmark>=0.7.1", | |
"pre-commit>=2.14.0", | |
"types-redis>=4.2.6", | |
"types-requests>=2.27.29", | |
"types-PyYAML>=6.0.7", | |
"types-protobuf>=3.19.21", | |
"types-python-dateutil>=2.8.16", | |
"types-setuptools>=57.4.17", | |
"types-pillow>=9.0.0", | |
"types-xxhash>=3.0.0", | |
"sphinx-autobuild", | |
"twine", | |
], | |
} | |
EXTRAS["all"] = list(set(sum(EXTRAS.values(), []))) | |
# The rest you shouldn't have to touch too much :) | |
# ------------------------------------------------ | |
# Except, perhaps the License and Trove Classifiers! | |
# If you do change the License, remember to change the Trove Classifier for that! | |
here = os.path.abspath(os.path.dirname(__file__)) | |
# Import the README and use it as the long-description. | |
# Note: this will only work if 'README.md' is present in your MANIFEST.in file! | |
try: | |
with io.open(os.path.join(here, "README.md"), encoding="utf-8") as f: | |
long_description = "\n" + f.read() | |
except FileNotFoundError: | |
long_description = DESCRIPTION | |
# Load the package's __version__.py module as a dictionary. | |
about = {} | |
if not VERSION: | |
project_slug = NAME.lower().replace("-", "_").replace(" ", "_") | |
with open(os.path.join(here, project_slug, "__version__.py")) as f: | |
exec(f.read(), about) | |
else: | |
about["__version__"] = VERSION | |
class UploadCommand(Command): | |
"""Support setup.py upload.""" | |
description = "Build and publish the package." | |
user_options = [] | |
def status(s): | |
"""Prints things in bold.""" | |
print("\033[1m{0}\033[0m".format(s)) | |
def initialize_options(self): | |
pass | |
def finalize_options(self): | |
pass | |
def run(self): | |
try: | |
self.status("Removing previous builds…") | |
rmtree(os.path.join(here, "dist")) | |
rmtree(os.path.join(here, "build")) | |
except OSError: | |
pass | |
self.status("Building Source and Wheel (universal) distribution…") | |
os.system("{0} setup.py sdist bdist_wheel --universal".format(sys.executable)) | |
self.status("Uploading the package to PyPI via Twine…") | |
os.system("twine upload dist/*") | |
self.status("Pushing git tags…") | |
os.system("git tag v{0}".format(about["__version__"])) | |
os.system("git push --tags") | |
sys.exit() | |
# Where the magic happens: | |
setup( | |
name=NAME, | |
version=about["__version__"], | |
description=DESCRIPTION, | |
long_description=long_description, | |
long_description_content_type="text/markdown", | |
author=AUTHOR, | |
author_email=EMAIL, | |
python_requires=REQUIRES_PYTHON, | |
url=URL, | |
packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]), | |
# If your package is a single module, use this instead of 'packages': | |
# py_modules=['mypackage'], | |
# entry_points={ | |
# 'console_scripts': ['mycli=mymodule:cli'], | |
# }, | |
install_requires=REQUIRED, | |
extras_require=EXTRAS, | |
include_package_data=True, | |
license="Apache 2.0", | |
classifiers=[ | |
# Trove classifiers | |
# Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers | |
"Programming Language :: Python", | |
"Programming Language :: Python :: 3", | |
"Programming Language :: Python :: 3.10", | |
"Topic :: Scientific/Engineering :: Artificial Intelligence", | |
], | |
# $ setup.py publish support. | |
cmdclass={ | |
"upload": UploadCommand, | |
}, | |
) | |