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. """
2016-07-29 17:40:11 +02:00
import os
2021-01-30 14:15:39 +01:00
import subprocess
2020-02-02 21:56:25 +01:00
import sys
2015-07-08 23:22:58 +02:00
from setuptools import setup , find_packages
2021-01-30 14:15:39 +01:00
UPSTREAM_URLLIB3_FLAG = ' --with-upstream-urllib3 '
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-01-30 14:15:39 +01:00
with open ( ' requirements.txt ' ) as reqs :
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 )
# Allow for a package install to not use the vendored urllib3
if UPSTREAM_URLLIB3_FLAG in sys . argv :
sys . argv . remove ( UPSTREAM_URLLIB3_FLAG )
reqs . append ( ' urllib3 >= 1.19.1 ' )
packs = [ x for x in packs if not x . startswith ( ' telegram.vendor.ptb_urllib3 ' ) ]
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 " "
readme = f ' README { " _RAW " if raw else " " } .rst '
2017-03-11 15:51:20 +01:00
2016-08-11 14:38:55 +02:00
fn = os . path . join ( ' telegram ' , ' version.py ' )
with open ( fn ) as fh :
2021-03-14 19:17:08 +01:00
for line in fh . readlines ( ) :
if line . startswith ( ' __version__ ' ) :
exec ( line )
2016-07-29 17:40:11 +02:00
2021-01-30 14:15:39 +01:00
with open ( readme , ' r ' , encoding = ' utf-8 ' ) as fd :
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-05-26 11:10:45 +02:00
# Keywords supported by PyPI can be found at https://github.com/pypa/warehouse/blob/aafc5185e57e67d43487ce4faa95913dd4573e14/warehouse/templates/packaging/detail.html#L20-L58
2021-01-30 14:15:39 +01: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 = fd . read ( ) ,
long_description_content_type = ' text/x-rst ' ,
packages = packages ,
install_requires = requirements ,
extras_require = {
' json ' : ' ujson ' ,
2021-02-13 22:07:37 +01:00
' socks ' : ' PySocks ' ,
# 3.4-3.4.3 contained some cyclical import bugs
' passport ' : ' cryptography!=3.4,!=3.4.1,!=3.4.2,!=3.4.3 ' ,
2021-01-30 14:15:39 +01: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-06-12 15:35:58 +02:00
python_requires = ' >=3.7 '
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 ( )