Is Sanic works with pypy v3.5? I am not sure.
It doesn't
Any error messages/tracebacks?
The stack:
Installing collected packages: aiofiles, httptools, ujson, uvloop, websockets, sanic
Running setup.py install for httptools ... error
Complete output from command /Users/mrkaspa/code/py/pylangs/.pypyenv/bin/pypy3 -u -c "import setuptools, tokenize;__file__='/private/var/folders/c1/m21ng1bd1yl83fcrjcf6qpxw0000gq/T/pip-build-3nlp_0cj/httptools/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/c1/m21ng1bd1yl83fcrjcf6qpxw0000gq/T/pip-h4rrrebt-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/mrkaspa/code/py/pylangs/.pypyenv/include/site/python3.5/httptools:
running install
running build
running build_py
creating build
creating build/lib.macosx-10.12-x86_64-3.5
creating build/lib.macosx-10.12-x86_64-3.5/httptools
copying httptools/__init__.py -> build/lib.macosx-10.12-x86_64-3.5/httptools
creating build/lib.macosx-10.12-x86_64-3.5/httptools/parser
copying httptools/parser/__init__.py -> build/lib.macosx-10.12-x86_64-3.5/httptools/parser
copying httptools/parser/errors.py -> build/lib.macosx-10.12-x86_64-3.5/httptools/parser
running egg_info
writing httptools.egg-info/PKG-INFO
writing dependency_links to httptools.egg-info/dependency_links.txt
writing top-level names to httptools.egg-info/top_level.txt
warning: manifest_maker: standard file '-c' not found
reading manifest file 'httptools.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'httptools.egg-info/SOURCES.txt'
copying httptools/parser/parser.c -> build/lib.macosx-10.12-x86_64-3.5/httptools/parser
running build_ext
building 'httptools.parser.parser' extension
creating build/temp.macosx-10.12-x86_64-3.5
creating build/temp.macosx-10.12-x86_64-3.5/httptools
creating build/temp.macosx-10.12-x86_64-3.5/httptools/parser
creating build/temp.macosx-10.12-x86_64-3.5/vendor
creating build/temp.macosx-10.12-x86_64-3.5/vendor/http-parser
gcc -pthread -DNDEBUG -O2 -I/usr/local/opt/openssl/include -fPIC -I/Users/mrkaspa/code/py/pylangs/.pypyenv/include -I/usr/local/Cellar/pypy3/5.7.1/libexec/include -c httptools/parser/parser.c -o build/temp.macosx-10.12-x86_64-3.5/httptools/parser/parser.o -O2
gcc -pthread -DNDEBUG -O2 -I/usr/local/opt/openssl/include -fPIC -I/Users/mrkaspa/code/py/pylangs/.pypyenv/include -I/usr/local/Cellar/pypy3/5.7.1/libexec/include -c vendor/http-parser/http_parser.c -o build/temp.macosx-10.12-x86_64-3.5/vendor/http-parser/http_parser.o -O2
gcc -pthread -shared -L/usr/local/opt/openssl/lib -I/usr/local/opt/openssl/include build/temp.macosx-10.12-x86_64-3.5/httptools/parser/parser.o build/temp.macosx-10.12-x86_64-3.5/vendor/http-parser/http_parser.o -o build/lib.macosx-10.12-x86_64-3.5/httptools/parser/parser.pypy3-57-x86_64-darwin.so
clang: warning: argument unused during compilation: '-pthread'
Undefined symbols for architecture x86_64:
"_PyPyBaseObject_Type", referenced from:
___pyx_tp_new_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_tp_new_9httptools_6parser_6parser_URL in parser.o
"_PyPyBuffer_Release", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyBytes_AS_STRING", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyBytes_FromString", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_3get_method in parser.o
"_PyPyBytes_FromStringAndSize", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_header_field in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_header_value in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_body in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_url in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_status in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
...
"_PyPyBytes_Size", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyBytes_Type", referenced from:
___pyx_tp_new_9httptools_6parser_6parser_URL in parser.o
"_PyPyCFunction_NewEx", referenced from:
_PyInit_parser in parser.o
"_PyPyCapsule_New", referenced from:
_PyInit_parser in parser.o
"_PyPyCode_New", referenced from:
_PyInit_parser in parser.o
___Pyx_AddTraceback in parser.o
"_PyPyDict_GetItem", referenced from:
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
___pyx_pw_9httptools_6parser_6parser_18HttpResponseParser_1__init__ in parser.o
___pyx_tp_new_9httptools_6parser_6parser_URL in parser.o
"_PyPyDict_GetItemString", referenced from:
_PyInit_parser in parser.o
"_PyPyDict_New", referenced from:
_PyInit_parser in parser.o
"_PyPyDict_Next", referenced from:
___Pyx_ParseOptionalKeywords in parser.o
"_PyPyDict_SetItem", referenced from:
_PyInit_parser in parser.o
"_PyPyDict_SetItemString", referenced from:
_PyInit_parser in parser.o
"_PyPyDict_Size", referenced from:
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
___pyx_pw_9httptools_6parser_6parser_18HttpResponseParser_1__init__ in parser.o
___pyx_tp_new_9httptools_6parser_6parser_URL in parser.o
"_PyPyErr_Clear", referenced from:
___pyx_f_9httptools_6parser_6parser_10HttpParser__init in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
___pyx_pw_9httptools_6parser_6parser_18HttpResponseParser_1__init__ in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyErr_ExceptionMatches", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__init in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_header_field in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_header_value in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_headers_complete in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_body in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_begin in parser.o
...
"_PyPyErr_Fetch", referenced from:
___Pyx_GetException in parser.o
___pyx_tp_dealloc_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyErr_Format", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___Pyx_ImportType in parser.o
___Pyx_Raise in parser.o
___pyx_tp_new_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
...
"_PyPyErr_GetExcInfo", referenced from:
___pyx_f_9httptools_6parser_6parser_cb_on_header_field in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_header_value in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_headers_complete in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_body in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_begin in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_complete in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_chunk_header in parser.o
...
"_PyPyErr_NoMemory", referenced from:
___pyx_tp_new_9httptools_6parser_6parser_HttpParser in parser.o
"_PyPyErr_NormalizeException", referenced from:
___Pyx_GetException in parser.o
"_PyPyErr_Occurred", referenced from:
_PyInit_parser in parser.o
___Pyx_GetException in parser.o
___Pyx_ParseOptionalKeywords in parser.o
"_PyPyErr_Restore", referenced from:
___pyx_tp_dealloc_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyErr_SetExcInfo", referenced from:
___pyx_f_9httptools_6parser_6parser_cb_on_header_field in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_header_value in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_headers_complete in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_body in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_begin in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_complete in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_chunk_header in parser.o
...
"_PyPyErr_SetObject", referenced from:
___Pyx_Raise in parser.o
"_PyPyErr_SetString", referenced from:
_PyInit_parser in parser.o
___Pyx_Raise in parser.o
"_PyPyErr_WarnEx", referenced from:
_PyInit_parser in parser.o
___Pyx_ImportType in parser.o
"_PyPyExc_AttributeError", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__init in parser.o
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
___pyx_pw_9httptools_6parser_6parser_18HttpResponseParser_1__init__ in parser.o
"_PyPyExc_BaseException", referenced from:
___Pyx_Raise in parser.o
"_PyPyExc_ImportError", referenced from:
_PyInit_parser in parser.o
"_PyPyExc_NameError", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyExc_TypeError", referenced from:
___Pyx_ImportType in parser.o
___Pyx_Raise in parser.o
___pyx_tp_new_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
___Pyx_ParseOptionalKeywords in parser.o
___pyx_pw_9httptools_6parser_6parser_18HttpResponseParser_1__init__ in parser.o
___pyx_tp_new_9httptools_6parser_6parser_URL in parser.o
...
"_PyPyExc_ValueError", referenced from:
___Pyx_ImportType in parser.o
"_PyPyException_SetTraceback", referenced from:
___Pyx_GetException in parser.o
"_PyPyFrame_New", referenced from:
___Pyx_AddTraceback in parser.o
"_PyPyImport_AddModule", referenced from:
_PyInit_parser in parser.o
"_PyPyImport_GetModuleDict", referenced from:
_PyInit_parser in parser.o
"_PyPyImport_Import", referenced from:
___Pyx_ImportType in parser.o
"_PyPyImport_ImportModuleLevelObject", referenced from:
_PyInit_parser in parser.o
"_PyPyList_New", referenced from:
_PyInit_parser in parser.o
"_PyPyList_SET_ITEM", referenced from:
_PyInit_parser in parser.o
"_PyPyLong_FromLong", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_5get_http_version in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_7should_keep_alive in parser.o
___pyx_pw_9httptools_6parser_6parser_18HttpResponseParser_3get_status_code in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyLong_FromSize_t", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyMem_Free", referenced from:
___pyx_tp_dealloc_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyMem_Malloc", referenced from:
___Pyx_AddTraceback in parser.o
___pyx_tp_new_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyMem_Realloc", referenced from:
___Pyx_AddTraceback in parser.o
"_PyPyModule_Create2", referenced from:
_PyInit_parser in parser.o
"_PyPyModule_GetDict", referenced from:
_PyInit_parser in parser.o
"_PyPyNumber_InPlaceAdd", referenced from:
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_header_value in parser.o
"_PyPyOS_snprintf", referenced from:
_PyInit_parser in parser.o
___Pyx_ImportType in parser.o
"_PyPyObject_Call", referenced from:
___pyx_f_9httptools_6parser_6parser_10HttpParser__maybe_call_on_header in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_headers_complete in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_complete in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_body in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_begin in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_complete in parser.o
...
"_PyPyObject_GC_UnTrack", referenced from:
___pyx_tp_dealloc_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_tp_dealloc_9httptools_6parser_6parser_URL in parser.o
"_PyPyObject_GetAttr", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__init in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___Pyx_ImportType in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_5get_http_version in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
...
"_PyPyObject_GetBuffer", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyObject_GetItem", referenced from:
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyObject_IsInstance", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyObject_IsSubclass", referenced from:
___Pyx_Raise in parser.o
"_PyPyObject_IsTrue", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_7should_keep_alive in parser.o
"_PyPyObject_SetAttr", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyObject_SetAttrString", referenced from:
_PyInit_parser in parser.o
"_PyPyThreadState_Get", referenced from:
___Pyx_AddTraceback in parser.o
"_PyPyTraceBack_Here", referenced from:
___Pyx_AddTraceback in parser.o
"_PyPyTuple_New", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__maybe_call_on_header in parser.o
___Pyx_Raise in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_5get_http_version in parser.o
___pyx_pw_9httptools_6parser_6parser_3URL_3__repr__ in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyTuple_Pack", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_body in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_url in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_status in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyType_Check", referenced from:
___Pyx_ImportType in parser.o
___Pyx_Raise in parser.o
"_PyPyType_Ready", referenced from:
_PyInit_parser in parser.o
"_PyPyUnicode_Check", referenced from:
___Pyx_ParseOptionalKeywords in parser.o
"_PyPyUnicode_Compare", referenced from:
___Pyx_ParseOptionalKeywords in parser.o
"_PyPyUnicode_Decode", referenced from:
_PyInit_parser in parser.o
"_PyPyUnicode_DecodeLatin1", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyUnicode_FromFormat", referenced from:
___Pyx_AddTraceback in parser.o
"_PyPyUnicode_FromString", referenced from:
___Pyx_ImportType in parser.o
___Pyx_AddTraceback in parser.o
"_PyPyUnicode_FromStringAndSize", referenced from:
_PyInit_parser in parser.o
"_PyPyUnicode_FromUnicode", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyUnicode_InternFromString", referenced from:
_PyInit_parser in parser.o
"_PyPy_GetVersion", referenced from:
_PyInit_parser in parser.o
"__PyPy_Dealloc", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__init in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__maybe_call_on_header in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_header_field in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_header_value in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_headers_complete in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
...
"__PyPy_NoneStruct", referenced from:
___pyx_f_9httptools_6parser_6parser_10HttpParser__init in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__maybe_call_on_header in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_header_field in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_header_value in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_headers_complete in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_complete in parser.o
...
"__PyPy_TrueStruct", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_7should_keep_alive in parser.o
"__PyPy_ZeroStruct", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_7should_keep_alive in parser.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'gcc' failed with exit status 1
----------------------------------------
Command "/Users/mrkaspa/code/py/pylangs/.pypyenv/bin/pypy3 -u -c "import setuptools, tokenize;__file__='/private/var/folders/c1/m21ng1bd1yl83fcrjcf6qpxw0000gq/T/pip-build-3nlp_0cj/httptools/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/c1/m21ng1bd1yl83fcrjcf6qpxw0000gq/T/pip-h4rrrebt-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/mrkaspa/code/py/pylangs/.pypyenv/include/site/python3.5/httptools" failed with error code 1 in /private/var/folders/c1/m21ng1bd1yl83fcrjcf6qpxw0000gq/T/pip-build-3nlp_0cj/httptools/
It seems that pypy don't have a good support for CPython C API now.
Can you please include the command you ran to attempt this and also your OS?
Most likely you don't want to use C extensions with PyPy - overhead is too big for gains you will achieve from JIT.
Maybe try installing without the C based extensions?
$ SANIC_NO_UVLOOP=true SANIC_NO_UJSON=true python -m pip install sanic
no luck:
Collecting sanic
Using cached sanic-0.5.4-py3-none-any.whl
Requirement already satisfied: aiofiles>=0.3.0 in ./.pypyenv/site-packages (from sanic)
Collecting httptools>=0.0.9 (from sanic)
Using cached httptools-0.0.9.tar.gz
Collecting ujson>=1.35 (from sanic)
Using cached ujson-1.35.tar.gz
Collecting uvloop>=0.5.3 (from sanic)
Using cached uvloop-0.8.0.tar.gz
Collecting websockets>=3.2 (from sanic)
Using cached websockets-3.3.tar.gz
Installing collected packages: httptools, ujson, uvloop, websockets, sanic
Running setup.py install for httptools ... error
Complete output from command /Users/mrkaspa/code/py/pylangs/.pypyenv/bin/python -u -c "import setuptools, tokenize;__file__='/private/var/folders/c1/m21ng1bd1yl83fcrjcf6qpxw0000gq/T/pip-build-rw46_3s6/httptools/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/c1/m21ng1bd1yl83fcrjcf6qpxw0000gq/T/pip-g3c9_py8-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/mrkaspa/code/py/pylangs/.pypyenv/include/site/python3.5/httptools:
running install
running build
running build_py
creating build
creating build/lib.macosx-10.12-x86_64-3.5
creating build/lib.macosx-10.12-x86_64-3.5/httptools
copying httptools/__init__.py -> build/lib.macosx-10.12-x86_64-3.5/httptools
creating build/lib.macosx-10.12-x86_64-3.5/httptools/parser
copying httptools/parser/__init__.py -> build/lib.macosx-10.12-x86_64-3.5/httptools/parser
copying httptools/parser/errors.py -> build/lib.macosx-10.12-x86_64-3.5/httptools/parser
running egg_info
writing httptools.egg-info/PKG-INFO
writing dependency_links to httptools.egg-info/dependency_links.txt
writing top-level names to httptools.egg-info/top_level.txt
warning: manifest_maker: standard file '-c' not found
reading manifest file 'httptools.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'httptools.egg-info/SOURCES.txt'
copying httptools/parser/parser.c -> build/lib.macosx-10.12-x86_64-3.5/httptools/parser
running build_ext
building 'httptools.parser.parser' extension
creating build/temp.macosx-10.12-x86_64-3.5
creating build/temp.macosx-10.12-x86_64-3.5/httptools
creating build/temp.macosx-10.12-x86_64-3.5/httptools/parser
creating build/temp.macosx-10.12-x86_64-3.5/vendor
creating build/temp.macosx-10.12-x86_64-3.5/vendor/http-parser
gcc -pthread -DNDEBUG -O2 -I/usr/local/opt/openssl/include -fPIC -I/Users/mrkaspa/code/py/pylangs/.pypyenv/include -I/usr/local/Cellar/pypy3/5.7.1/libexec/include -c httptools/parser/parser.c -o build/temp.macosx-10.12-x86_64-3.5/httptools/parser/parser.o -O2
gcc -pthread -DNDEBUG -O2 -I/usr/local/opt/openssl/include -fPIC -I/Users/mrkaspa/code/py/pylangs/.pypyenv/include -I/usr/local/Cellar/pypy3/5.7.1/libexec/include -c vendor/http-parser/http_parser.c -o build/temp.macosx-10.12-x86_64-3.5/vendor/http-parser/http_parser.o -O2
gcc -pthread -shared -L/usr/local/opt/openssl/lib -I/usr/local/opt/openssl/include build/temp.macosx-10.12-x86_64-3.5/httptools/parser/parser.o build/temp.macosx-10.12-x86_64-3.5/vendor/http-parser/http_parser.o -o build/lib.macosx-10.12-x86_64-3.5/httptools/parser/parser.pypy3-57-x86_64-darwin.so
clang: warning: argument unused during compilation: '-pthread'
Undefined symbols for architecture x86_64:
"_PyPyBaseObject_Type", referenced from:
___pyx_tp_new_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_tp_new_9httptools_6parser_6parser_URL in parser.o
"_PyPyBuffer_Release", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyBytes_AS_STRING", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyBytes_FromString", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_3get_method in parser.o
"_PyPyBytes_FromStringAndSize", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_header_field in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_header_value in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_body in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_url in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_status in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
...
"_PyPyBytes_Size", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyBytes_Type", referenced from:
___pyx_tp_new_9httptools_6parser_6parser_URL in parser.o
"_PyPyCFunction_NewEx", referenced from:
_PyInit_parser in parser.o
"_PyPyCapsule_New", referenced from:
_PyInit_parser in parser.o
"_PyPyCode_New", referenced from:
_PyInit_parser in parser.o
___Pyx_AddTraceback in parser.o
"_PyPyDict_GetItem", referenced from:
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
___pyx_pw_9httptools_6parser_6parser_18HttpResponseParser_1__init__ in parser.o
___pyx_tp_new_9httptools_6parser_6parser_URL in parser.o
"_PyPyDict_GetItemString", referenced from:
_PyInit_parser in parser.o
"_PyPyDict_New", referenced from:
_PyInit_parser in parser.o
"_PyPyDict_Next", referenced from:
___Pyx_ParseOptionalKeywords in parser.o
"_PyPyDict_SetItem", referenced from:
_PyInit_parser in parser.o
"_PyPyDict_SetItemString", referenced from:
_PyInit_parser in parser.o
"_PyPyDict_Size", referenced from:
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
___pyx_pw_9httptools_6parser_6parser_18HttpResponseParser_1__init__ in parser.o
___pyx_tp_new_9httptools_6parser_6parser_URL in parser.o
"_PyPyErr_Clear", referenced from:
___pyx_f_9httptools_6parser_6parser_10HttpParser__init in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
___pyx_pw_9httptools_6parser_6parser_18HttpResponseParser_1__init__ in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyErr_ExceptionMatches", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__init in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_header_field in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_header_value in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_headers_complete in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_body in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_begin in parser.o
...
"_PyPyErr_Fetch", referenced from:
___Pyx_GetException in parser.o
___pyx_tp_dealloc_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyErr_Format", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___Pyx_ImportType in parser.o
___Pyx_Raise in parser.o
___pyx_tp_new_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
...
"_PyPyErr_GetExcInfo", referenced from:
___pyx_f_9httptools_6parser_6parser_cb_on_header_field in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_header_value in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_headers_complete in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_body in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_begin in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_complete in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_chunk_header in parser.o
...
"_PyPyErr_NoMemory", referenced from:
___pyx_tp_new_9httptools_6parser_6parser_HttpParser in parser.o
"_PyPyErr_NormalizeException", referenced from:
___Pyx_GetException in parser.o
"_PyPyErr_Occurred", referenced from:
_PyInit_parser in parser.o
___Pyx_GetException in parser.o
___Pyx_ParseOptionalKeywords in parser.o
"_PyPyErr_Restore", referenced from:
___pyx_tp_dealloc_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyErr_SetExcInfo", referenced from:
___pyx_f_9httptools_6parser_6parser_cb_on_header_field in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_header_value in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_headers_complete in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_body in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_begin in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_complete in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_chunk_header in parser.o
...
"_PyPyErr_SetObject", referenced from:
___Pyx_Raise in parser.o
"_PyPyErr_SetString", referenced from:
_PyInit_parser in parser.o
___Pyx_Raise in parser.o
"_PyPyErr_WarnEx", referenced from:
_PyInit_parser in parser.o
___Pyx_ImportType in parser.o
"_PyPyExc_AttributeError", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__init in parser.o
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
___pyx_pw_9httptools_6parser_6parser_18HttpResponseParser_1__init__ in parser.o
"_PyPyExc_BaseException", referenced from:
___Pyx_Raise in parser.o
"_PyPyExc_ImportError", referenced from:
_PyInit_parser in parser.o
"_PyPyExc_NameError", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyExc_TypeError", referenced from:
___Pyx_ImportType in parser.o
___Pyx_Raise in parser.o
___pyx_tp_new_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
___Pyx_ParseOptionalKeywords in parser.o
___pyx_pw_9httptools_6parser_6parser_18HttpResponseParser_1__init__ in parser.o
___pyx_tp_new_9httptools_6parser_6parser_URL in parser.o
...
"_PyPyExc_ValueError", referenced from:
___Pyx_ImportType in parser.o
"_PyPyException_SetTraceback", referenced from:
___Pyx_GetException in parser.o
"_PyPyFrame_New", referenced from:
___Pyx_AddTraceback in parser.o
"_PyPyImport_AddModule", referenced from:
_PyInit_parser in parser.o
"_PyPyImport_GetModuleDict", referenced from:
_PyInit_parser in parser.o
"_PyPyImport_Import", referenced from:
___Pyx_ImportType in parser.o
"_PyPyImport_ImportModuleLevelObject", referenced from:
_PyInit_parser in parser.o
"_PyPyList_New", referenced from:
_PyInit_parser in parser.o
"_PyPyList_SET_ITEM", referenced from:
_PyInit_parser in parser.o
"_PyPyLong_FromLong", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_5get_http_version in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_7should_keep_alive in parser.o
___pyx_pw_9httptools_6parser_6parser_18HttpResponseParser_3get_status_code in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyLong_FromSize_t", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyMem_Free", referenced from:
___pyx_tp_dealloc_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyMem_Malloc", referenced from:
___Pyx_AddTraceback in parser.o
___pyx_tp_new_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyMem_Realloc", referenced from:
___Pyx_AddTraceback in parser.o
"_PyPyModule_Create2", referenced from:
_PyInit_parser in parser.o
"_PyPyModule_GetDict", referenced from:
_PyInit_parser in parser.o
"_PyPyNumber_InPlaceAdd", referenced from:
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_header_value in parser.o
"_PyPyOS_snprintf", referenced from:
_PyInit_parser in parser.o
___Pyx_ImportType in parser.o
"_PyPyObject_Call", referenced from:
___pyx_f_9httptools_6parser_6parser_10HttpParser__maybe_call_on_header in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_headers_complete in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_complete in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_body in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_begin in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_message_complete in parser.o
...
"_PyPyObject_GC_UnTrack", referenced from:
___pyx_tp_dealloc_9httptools_6parser_6parser_HttpParser in parser.o
___pyx_tp_dealloc_9httptools_6parser_6parser_URL in parser.o
"_PyPyObject_GetAttr", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__init in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___Pyx_ImportType in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_5get_http_version in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_17HttpRequestParser_1__init__ in parser.o
...
"_PyPyObject_GetBuffer", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyObject_GetItem", referenced from:
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyObject_IsInstance", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyObject_IsSubclass", referenced from:
___Pyx_Raise in parser.o
"_PyPyObject_IsTrue", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_7should_keep_alive in parser.o
"_PyPyObject_SetAttr", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyObject_SetAttrString", referenced from:
_PyInit_parser in parser.o
"_PyPyThreadState_Get", referenced from:
___Pyx_AddTraceback in parser.o
"_PyPyTraceBack_Here", referenced from:
___Pyx_AddTraceback in parser.o
"_PyPyTuple_New", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__maybe_call_on_header in parser.o
___Pyx_Raise in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_5get_http_version in parser.o
___pyx_pw_9httptools_6parser_6parser_3URL_3__repr__ in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyTuple_Pack", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_body in parser.o
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_url in parser.o
___pyx_f_9httptools_6parser_6parser_cb_on_status in parser.o
___pyx_pw_9httptools_6parser_6parser_1parse_url in parser.o
"_PyPyType_Check", referenced from:
___Pyx_ImportType in parser.o
___Pyx_Raise in parser.o
"_PyPyType_Ready", referenced from:
_PyInit_parser in parser.o
"_PyPyUnicode_Check", referenced from:
___Pyx_ParseOptionalKeywords in parser.o
"_PyPyUnicode_Compare", referenced from:
___Pyx_ParseOptionalKeywords in parser.o
"_PyPyUnicode_Decode", referenced from:
_PyInit_parser in parser.o
"_PyPyUnicode_DecodeLatin1", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyUnicode_FromFormat", referenced from:
___Pyx_AddTraceback in parser.o
"_PyPyUnicode_FromString", referenced from:
___Pyx_ImportType in parser.o
___Pyx_AddTraceback in parser.o
"_PyPyUnicode_FromStringAndSize", referenced from:
_PyInit_parser in parser.o
"_PyPyUnicode_FromUnicode", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_9feed_data in parser.o
"_PyPyUnicode_InternFromString", referenced from:
_PyInit_parser in parser.o
"_PyPy_GetVersion", referenced from:
_PyInit_parser in parser.o
"__PyPy_Dealloc", referenced from:
_PyInit_parser in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__init in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__maybe_call_on_header in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_header_field in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_header_value in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_headers_complete in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
...
"__PyPy_NoneStruct", referenced from:
___pyx_f_9httptools_6parser_6parser_10HttpParser__init in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__maybe_call_on_header in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_header_field in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_header_value in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_headers_complete in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_header in parser.o
___pyx_f_9httptools_6parser_6parser_10HttpParser__on_chunk_complete in parser.o
...
"__PyPy_TrueStruct", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_7should_keep_alive in parser.o
"__PyPy_ZeroStruct", referenced from:
___pyx_pw_9httptools_6parser_6parser_10HttpParser_7should_keep_alive in parser.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'gcc' failed with exit status 1
----------------------------------------
Command "/Users/mrkaspa/code/py/pylangs/.pypyenv/bin/python -u -c "import setuptools, tokenize;__file__='/private/var/folders/c1/m21ng1bd1yl83fcrjcf6qpxw0000gq/T/pip-build-rw46_3s6/httptools/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/c1/m21ng1bd1yl83fcrjcf6qpxw0000gq/T/pip-g3c9_py8-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/mrkaspa/code/py/pylangs/.pypyenv/include/site/python3.5/httptools" failed with error code 1 in /private/var/folders/c1/m21ng1bd1yl83fcrjcf6qpxw0000gq/T/pip-build-rw46_3s6/httptools/
Oh okay, then yeah it might not work with pypy3.5 until they get better support for C extensions.
Or if someone wrap httptools with cffi instead of Cython.
I am able to install and run sanic using Python 3.5.3 (PyPy 6.0.0)
➜ sanic python
Python 3.5.3 (fdd60ed87e94, Apr 24 2018, 06:10:18)
[PyPy 6.0.0 with GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>> from sanic import Sanic
>>>>
@harshanarayana but, does it work (let's say, a simple server does actually spins up and answers to requests), with or without extensions (uvloop, ujson, idk) ?
@vltr Yes it does. I tested the basic API with JSON and Text responses and it worked perfectly. (With and without ujson) However, I haven't benchmarked it yet.
from sanic import Sanic
from sanic.response import json, text
app = Sanic(__name__)
@app.route("/")
def default(request):
return text("OK")
@app.route("/ujson")
def ujsoncheck(request):
try:
import ujson as _
return json({
"ujson": True
})
except:
return json({
"ujson": False
})
app.run(host="0.0.0.0", port="5647")
But when I installed uvloop and then tried to run the app, it errored out with the following. let me find out what's causing it later today and update it here.
Traceback (most recent call last):
File "/Users/harshnar/.pyenv/versions/sanic-pypy/site-packages/sanic/server.py", line 612, in serve
http_server = loop.run_until_complete(server_coroutine)
File "uvloop/loop.pyx", line 1446, in uvloop.loop.Loop.run_until_complete
TypeError: 'NoneType' object is not iterable
@harshanarayana that's good news for Sanic! But I don't think uvloop works on PyPy, see this issue for more information.
@vltr
@harshanarayana that's good news for Sanic! But I don't think
uvloopworks on PyPy, see this issue for more information.
I saw that earlier and I also found another conflicting case in their issue page. So, looks like it needs a bit more looking into.
Oh, yeah, I totally forgot about that one. Perhaps you need to build uvloop against your PyPy includes (through Cython) instead of having the binary wheel (that's compiled against CPython)?
@vltr I built the uvloop locally using pypy and the error still exists but it's a bit different from the previous one.
Traceback (most recent call last):
File "/Users/harshnar/.pyenv/versions/sanic-pypy/site-packages/sanic/server.py", line 612, in serve
http_server = loop.run_until_complete(server_coroutine)
File "uvloop/loop.pyx", line 1451, in uvloop.loop.Loop.run_until_complete
return future.result()
TypeError: 'NoneType' object is not iterable
[2018-11-21 11:50:27 +0530] [32970] [INFO] Server Stopped
Time to bring in the big guns. pdb.set_trace() FTW
@harshanarayana that's interesting. I thought uvloop wasn't even going to compile on PyPy, but I was wrong. Anyway, if you have the time, then yes, time for the big guns. I'm already happy to know that Sanic works on PyPy (without uvloop). I just don't know if this is an isolated problem regarding uvloop, if so, how to deal with it?
@harshanarayana I kicked this one in to your court since you were the last to do any solid work in it.
@sjsadowski Sure thing. 👍
@harshanarayana any news on this? how can we help? what are the approaches you are trying to take ?
@AmosG You could try the streaming branch #1791 which no longer uses httptools:
pip install git+https://github.com/Tronic/sanic.git@streaming
I believe Sanic is pure python now, if uvloop and ujson are also not installed.
Most helpful comment
Or if someone wrap
httptoolswithcffiinstead ofCython.