83 lines
3.1 KiB
Python
83 lines
3.1 KiB
Python
import configparser
|
|
from os.path import join, dirname
|
|
import textwrap
|
|
|
|
__all__ = ('get_cython_versions', 'get_cython_msg')
|
|
|
|
|
|
def get_cython_versions(setup_cfg=''):
|
|
_cython_config = configparser.ConfigParser()
|
|
if setup_cfg:
|
|
_cython_config.read(setup_cfg)
|
|
else:
|
|
_cython_config.read(
|
|
join(dirname(__file__), '..', '..', '..', 'setup.cfg'))
|
|
|
|
cython_min = _cython_config['kivy']['cython_min']
|
|
cython_max = _cython_config['kivy']['cython_max']
|
|
cython_unsupported = _cython_config['kivy']['cython_exclude'].split(',')
|
|
# ref https://github.com/cython/cython/issues/1968
|
|
|
|
cython_requires = (
|
|
'cython>={min_version},<={max_version},{exclusion}'.format(
|
|
min_version=cython_min,
|
|
max_version=cython_max,
|
|
exclusion=','.join('!=%s' % excl for excl in cython_unsupported),
|
|
)
|
|
)
|
|
|
|
return cython_requires, cython_min, cython_max, cython_unsupported
|
|
|
|
|
|
def get_cython_msg():
|
|
cython_requires, cython_min, cython_max, cython_unsupported = \
|
|
get_cython_versions()
|
|
cython_unsupported_append = '''
|
|
|
|
Please note that the following versions of Cython are not supported
|
|
at all: {}'''.format(', '.join(map(str, cython_unsupported)))
|
|
|
|
cython_min_msg = textwrap.dedent('''
|
|
This version of Cython is not compatible with Kivy. Please upgrade to
|
|
at least version {0}, preferably the newest supported version {1}.
|
|
|
|
If your platform provides a Cython package, make sure you have upgraded
|
|
to the newest version. If the newest version available is still too low,
|
|
please remove it and install the newest supported Cython via pip:
|
|
|
|
pip install -I "{3}"{2}
|
|
'''.format(cython_min, cython_max,
|
|
cython_unsupported_append if cython_unsupported else '',
|
|
cython_requires))
|
|
|
|
cython_max_msg = textwrap.dedent('''
|
|
This version of Cython is untested with Kivy. While this version may
|
|
work perfectly fine, it is possible that you may experience issues.
|
|
Please downgrade to a supported version, or update cython_max in
|
|
setup.cfg to your version of Cython. It is best to use the newest
|
|
supported version, {1}, but the minimum supported version is {0}.
|
|
|
|
If your platform provides a Cython package, check if you can downgrade
|
|
to a supported version. Otherwise, uninstall the platform package and
|
|
install Cython via pip:
|
|
|
|
pip install -I "{3}"{2}
|
|
'''.format(cython_min, cython_max,
|
|
cython_unsupported_append if cython_unsupported else '',
|
|
cython_requires))
|
|
|
|
cython_unsupported_msg = textwrap.dedent('''
|
|
This version of Cython suffers from known bugs and is unsupported.
|
|
Please install the newest supported version, {1}, if possible, but
|
|
the minimum supported version is {0}.
|
|
|
|
If your platform provides a Cython package, check if you can install
|
|
a supported version. Otherwise, uninstall the platform package and
|
|
install Cython via pip:
|
|
|
|
pip install -I "{3}"{2}
|
|
'''.format(cython_min, cython_max, cython_unsupported_append,
|
|
cython_requires))
|
|
|
|
return cython_min_msg, cython_max_msg, cython_unsupported_msg
|