python-zulip-api/zulip_bots/setup.py
Eeshan Garg 74d716289b tools: Delete the release-packages script.
This script has been outdated for a long time now and has been
obsoleted by some recent changes in how packages should be built
and distributed. In general, the release process is now too
complicated to automate, so we are better off just making the
release manually.
2022-01-05 08:11:58 +05:30

113 lines
3.4 KiB
Python

#!/usr/bin/env python3
import os
import sys
from typing import Any, Dict, Optional
ZULIP_BOTS_VERSION = "0.8.1"
IS_PYPA_PACKAGE = False
package_data = {
"": ["doc.md", "*.conf", "assets/*"],
"zulip_bots": ["py.typed"],
}
# IS_PYPA_PACKAGE should be set to True before making a PyPA release.
if not IS_PYPA_PACKAGE:
package_data[""].append("fixtures/*.json")
package_data[""].append("logo.*")
with open("README.md") as fh:
long_description = fh.read()
# We should be installable with either setuptools or distutils.
package_info = dict(
name="zulip_bots",
version=ZULIP_BOTS_VERSION,
description="Zulip's Bot framework",
long_description=long_description,
long_description_content_type="text/markdown",
author="Zulip Open Source Project",
author_email="zulip-devel@googlegroups.com",
classifiers=[
"Development Status :: 4 - Beta",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Topic :: Communications :: Chat",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
],
python_requires=">=3.6",
url="https://www.zulip.org/",
project_urls={
"Source": "https://github.com/zulip/python-zulip-api/",
"Documentation": "https://zulip.com/api",
},
entry_points={
"console_scripts": [
"zulip-run-bot=zulip_bots.run:main",
"zulip-bot-shell=zulip_bots.bot_shell:main",
],
},
) # type: Dict[str, Any]
setuptools_info = dict(
install_requires=[
"pip",
"zulip",
"html2text",
"lxml",
"BeautifulSoup4",
"typing_extensions",
'importlib-metadata >= 3.6; python_version < "3.10"',
],
)
try:
from setuptools import find_packages, setup
package_info.update(setuptools_info)
package_info["packages"] = find_packages()
package_info["package_data"] = package_data
except ImportError:
from distutils.core import setup
from distutils.version import LooseVersion
from importlib import import_module
# Manual dependency check
def check_dependency_manually(module_name: str, version: Optional[str] = None) -> None:
try:
module = import_module(module_name) # type: Any
if version is not None:
assert LooseVersion(module.__version__) >= LooseVersion(version)
except (ImportError, AssertionError):
if version is not None:
print(
f"{module_name}>={version} is not installed.",
file=sys.stderr,
)
else:
print(f"{module_name} is not installed.", file=sys.stderr)
sys.exit(1)
check_dependency_manually("zulip")
check_dependency_manually("mock", "2.0.0")
check_dependency_manually("html2text")
check_dependency_manually("PyDictionary")
# Include all submodules under bots/
package_list = ["zulip_bots"]
dirs = os.listdir("zulip_bots/bots/")
for dir_name in dirs:
if os.path.isdir(os.path.join("zulip_bots/bots/", dir_name)):
package_list.append("zulip_bots.bots." + dir_name)
package_info["packages"] = package_list
setup(**package_info)