Explicit environ flag for importing eventlet.__version__ without ignoring import errors

Allows to read package version without installing dependencies.
```
import eventlet
print(eventlet.__version__)  # ok
eventlet.sleep()  # error
```
This commit is contained in:
Sergey Shepelev 2016-12-12 01:12:32 +03:00
parent f52c4d31b6
commit ca26b02d61
3 changed files with 26 additions and 24 deletions

View File

@ -13,7 +13,7 @@ version_next=
main() {
branch="${1-$(git symbolic-ref --short HEAD)}"
version="$(python -c 'import eventlet; print(eventlet.__version__)')"
version="$(EVENTLET_IMPORT_VERSION_ONLY=1 python -c 'import eventlet; print(eventlet.__version__)')"
printf "\nbranch: %s eventlet.__version__: '%s'\n" $branch $version >&2
if [[ "$branch" != "master" ]]; then
echo "Must be on master" >&2
@ -44,7 +44,7 @@ main() {
confirm "Continue still? [yN] " || exit 1
fi
if confirm "Build documentation (website)? [Yn] " >&2; then
if confirm "Build documentation (website)? [Yn] "; then
bin/build-website.bash || exit 1
git checkout "$branch"
fi

View File

@ -1,7 +1,12 @@
import os
version_info = (0, 20, 0)
__version__ = '.'.join(map(str, version_info))
try:
# This is to make Debian packaging easier, it ignores import
# errors of greenlet so that the packager can still at least
# access the version. Also this makes easy_install a little quieter
if os.environ.get('EVENTLET_IMPORT_VERSION_ONLY') != '1':
from eventlet import greenthread
from eventlet import greenpool
from eventlet import queue
@ -39,11 +44,3 @@ try:
TimeoutError = timeout.Timeout
exc_after = greenthread.exc_after
call_after_global = greenthread.call_after_global
except ImportError as e:
# This is to make Debian packaging easier, it ignores import
# errors of greenlet so that the packager can still at least
# access the version. Also this makes easy_install a little quieter
if 'greenlet' not in str(e):
# any other exception should be printed
import traceback
traceback.print_exc()

View File

@ -1,42 +1,47 @@
#!/usr/bin/env python
from setuptools import find_packages, setup
from eventlet import __version__
from os import path
import os
import setuptools
setup(
os.environ.setdefault('EVENTLET_IMPORT_VERSION_ONLY', '1')
import eventlet
setuptools.setup(
name='eventlet',
version=__version__,
version=eventlet.__version__,
description='Highly concurrent networking library',
author='Linden Lab',
author_email='eventletdev@lists.secondlife.com',
url='http://eventlet.net',
packages=find_packages(exclude=['benchmarks', 'tests', 'tests.*']),
packages=setuptools.find_packages(exclude=['benchmarks', 'tests', 'tests.*']),
install_requires=(
'enum-compat',
'greenlet >= 0.3',
),
zip_safe=False,
long_description=open(
path.join(
path.dirname(__file__),
os.path.join(
os.path.dirname(__file__),
'README.rst'
)
).read(),
test_suite='nose.collector',
classifiers=[
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python",
"Operating System :: MacOS :: MacOS X",
"Operating System :: POSIX",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python",
"Topic :: Internet",
"Topic :: Software Development :: Libraries :: Python Modules",
"Intended Audience :: Developers",
"Development Status :: 4 - Beta",
]
)