Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disable implicit switch-back to pure python mode. #3828

Merged
merged 6 commits into from Jun 8, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
9 changes: 4 additions & 5 deletions .travis.yml
Expand Up @@ -156,7 +156,7 @@ jobs:
install:
- *upgrade_python_toolset
- pip install -r requirements/cython.txt
- pip install -r requirements/ci.txt
- AIOHTTP_NO_EXTENSIONS=1 pip install -r requirements/ci.txt
- pip install -r requirements/towncrier.txt
script:
- towncrier --yes
Expand All @@ -174,18 +174,17 @@ jobs:
install:
- *upgrade_python_toolset
- pip install -r requirements/cython.txt
- pip install -r requirements/ci.txt
- AIOHTTP_NO_EXTENSIONS=1 pip install -r requirements/ci.txt
script:
- mypy aiohttp

- <<: *_lint_base
name: Verifying distribution package metadata
install:
- *upgrade_python_toolset
- pip install -r requirements/cython.txt
- pip install -r requirements/ci.txt -r requirements/doc.txt
- AIOHTTP_NO_EXTENSIONS=1 pip install -r requirements/ci.txt -r requirements/doc.txt
script:
- python setup.py check --metadata --restructuredtext --strict --verbose sdist bdist_wheel
- AIOHTTP_NO_EXTENSIONS=1 python setup.py --verbose sdist bdist_wheel
- twine check dist/*

- <<: *_lint_base
Expand Down
4 changes: 4 additions & 0 deletions CHANGES/3828.feature
@@ -0,0 +1,4 @@
Disable implicit switch-back to pure python mode. The build fails loudly if aiohttp
cannot be compiled with C Accellerators. Use AIOHTTP_NO_EXTENSIONS=1 to explicitly
disable C Extensions complication and switch to Pure-Python mode. Note that Pure-Python
mode is significantly slower than compiled one.
26 changes: 16 additions & 10 deletions setup.py
@@ -1,4 +1,5 @@
import codecs
import os
import pathlib
import re
import sys
Expand All @@ -12,6 +13,10 @@
if sys.version_info < (3, 5, 3):
raise RuntimeError("aiohttp 3.x requires Python 3.5.3+")


NO_EXTENSIONS = bool(os.environ.get('AIOHTTP_NO_EXTENSIONS')) # type: bool


here = pathlib.Path(__file__).parent


Expand Down Expand Up @@ -132,16 +137,17 @@ def read(f):
],
},
include_package_data=True,
ext_modules=extensions,
cmdclass=dict(build_ext=ve_build_ext),
)

try:
setup(**args)
except BuildFailed:
print("************************************************************")
print("Cannot compile C accelerator module, use pure python version")
print("************************************************************")
del args['ext_modules']
del args['cmdclass']
if not NO_EXTENSIONS:
print("**********************")
print("* Accellerated build *")
print("**********************")
setup(ext_modules=extensions,
cmdclass=dict(build_ext=ve_build_ext),
**args)
else:
print("*********************")
print("* Pure Python build *")
print("*********************")
setup(**args)