74d716289b
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.
113 lines
3.4 KiB
Python
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)
|