2015-07-08 23:22:58 +02:00
#!/usr/bin/env python
2016-05-25 00:43:16 +02:00
""" The setup and build script for the python-telegram-bot library. """
2021-01-30 14:15:39 +01:00
import subprocess
2022-04-24 12:38:09 +02:00
import sys
2022-05-05 09:27:54 +02:00
from pathlib import Path
2020-02-02 21:56:25 +01:00
2022-05-05 09:27:54 +02:00
from setuptools import find_packages , setup
2015-07-08 23:22:58 +02:00
2021-01-30 14:15:39 +01:00
def get_requirements ( raw = False ) :
2015-11-10 15:27:18 +01:00
""" Build the requirements list for this project """
requirements_list = [ ]
2021-10-05 19:50:11 +02:00
with Path ( " requirements.txt " ) . open ( ) as reqs :
2021-01-30 14:15:39 +01:00
for install in reqs :
if install . startswith ( " # only telegram.ext: " ) :
if raw :
break
continue
2015-11-10 15:27:18 +01:00
requirements_list . append ( install . strip ( ) )
return requirements_list
2016-08-10 21:39:14 +02:00
2021-01-30 14:15:39 +01:00
def get_packages_requirements ( raw = False ) :
""" Build the package & requirements list for this project """
reqs = get_requirements ( raw = raw )
2020-02-02 21:56:25 +01:00
2021-01-30 14:15:39 +01:00
exclude = [ " tests* " ]
if raw :
exclude . append ( " telegram.ext* " )
packs = find_packages ( exclude = exclude )
return packs , reqs
def get_setup_kwargs ( raw = False ) :
""" Builds a dictionary of kwargs for the setup function """
packages , requirements = get_packages_requirements ( raw = raw )
raw_ext = " -raw " if raw else " "
2021-10-05 19:50:11 +02:00
readme = Path ( f ' README { " _RAW " if raw else " " } .rst ' )
2017-03-11 15:51:20 +01:00
2022-05-14 15:50:12 +02:00
version_file = Path ( " telegram/_version.py " ) . read_text ( )
first_part = version_file . split ( " # SETUP.PY MARKER " ) [ 0 ]
exec ( first_part )
2016-07-29 17:40:11 +02:00
2021-10-05 19:50:11 +02:00
kwargs = dict (
script_name = f " setup { raw_ext } .py " ,
name = f " python-telegram-bot { raw_ext } " ,
version = locals ( ) [ " __version__ " ] ,
author = " Leandro Toledo " ,
author_email = " devs@python-telegram-bot.org " ,
license = " LGPLv3 " ,
url = " https://python-telegram-bot.org/ " ,
2022-01-21 16:51:03 +01:00
# Keywords supported by PyPI can be found at https://github.com/pypa/warehouse/blob/aafc5185e57e67d43487ce4faa95913dd4573e14/warehouse/templates/packaging/detail.html#L20-L58
2021-10-05 19:50:11 +02:00
project_urls = {
" Documentation " : " https://python-telegram-bot.readthedocs.io " ,
" Bug Tracker " : " https://github.com/python-telegram-bot/python-telegram-bot/issues " ,
" Source Code " : " https://github.com/python-telegram-bot/python-telegram-bot " ,
" News " : " https://t.me/pythontelegrambotchannel " ,
" Changelog " : " https://python-telegram-bot.readthedocs.io/en/stable/changelog.html " ,
} ,
download_url = f " https://pypi.org/project/python-telegram-bot { raw_ext } / " ,
keywords = " python telegram bot api wrapper " ,
description = " We have made you a wrapper you can ' t refuse " ,
long_description = readme . read_text ( ) ,
long_description_content_type = " text/x-rst " ,
packages = packages ,
install_requires = requirements ,
extras_require = {
2022-04-24 12:38:09 +02:00
" socks " : " httpx[socks] " ,
2022-05-03 17:22:30 +02:00
# json and cryptography are very stable, so we use a reasonably new version as
# lower bound and have no upper bound
" json " : " ujson>=4.0.0 " ,
2021-10-05 19:50:11 +02:00
# 3.4-3.4.3 contained some cyclical import bugs
2022-05-03 17:22:30 +02:00
" passport " : " cryptography!=3.4,!=3.4.1,!=3.4.2,!=3.4.3,>=3.0 " ,
2021-10-05 19:50:11 +02:00
} ,
include_package_data = True ,
classifiers = [
" Development Status :: 5 - Production/Stable " ,
" Intended Audience :: Developers " ,
" License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3) " ,
" Operating System :: OS Independent " ,
" Topic :: Software Development :: Libraries :: Python Modules " ,
" Topic :: Communications :: Chat " ,
" Topic :: Internet " ,
" Programming Language :: Python " ,
" Programming Language :: Python :: 3 " ,
" Programming Language :: Python :: 3.7 " ,
" Programming Language :: Python :: 3.8 " ,
" Programming Language :: Python :: 3.9 " ,
2022-04-24 19:30:18 +02:00
" Programming Language :: Python :: 3.10 " ,
2021-10-05 19:50:11 +02:00
] ,
2021-10-10 15:10:21 +02:00
python_requires = " >=3.7 " ,
2021-10-05 19:50:11 +02:00
)
2021-01-30 14:15:39 +01:00
return kwargs
def main ( ) :
# If we're building, build ptb-raw as well
if set ( sys . argv [ 1 : ] ) in [ { " bdist_wheel " } , { " sdist " } , { " sdist " , " bdist_wheel " } ] :
args = [ " python " , " setup-raw.py " ]
args . extend ( sys . argv [ 1 : ] )
subprocess . run ( args , check = True , capture_output = True )
setup ( * * get_setup_kwargs ( raw = False ) )
if __name__ == " __main__ " :
main ( )